Полная Версия: как определить координаты объектов в Fallout2?
mick
Сообщение было выделено из темы Fallout в браузере.

Товарищи, подскажите как определить координаты объектов в Fallout2? Я разобрался как из карты извлекать гексогональные координаты, но видимо есть ещё какой-то сдвиг объекта. Может быть он прописан в карте, может быть в FRM, а может быть зависит от размеров объекта.
Сейчас получается такая ерунда(деревья стоят правильно, я по ним выставлял параметры, а остальные объекты уплыли):
скриншот
Или может быть кто-то знает людей которые копались в движке в этом направлении...
Wasteland Ghost
Э-э-э-э... а что это, если не секрет? Поясни, что ты пытаешься сделать.

Координаты объекта на карте задаются относительно его базовой точки. Положение базовой точки задаётся в frm-файле. Описание формата frm сэ мэ в архивах TeamX.
mick
Это попытка сделать Fallout-подобную игру на flash. Вместо того чтобы платить художнику и покупать арт на ранней стадии хочу использовать графику фоллаута. Когда движок будет готов можно будет просто заменить арт.
Огромное спасибо за подсказку про базовую точку. В русскоязычном описании FRM'a этого небыло, но в английской версии нашлось.
Wasteland Ghost
Wozrogdenec, не надо задним числом править сообщение, на которое уже есть ответ. Это некрасиво и выставляет отвечающего идиотом.
mick
Ещё раз спасибо, всё получилось. Странно что отображаются не все объекты — слева внизу проход в деревню должен быть закрыт, и не только мужиком которого я специально не добавляю пока. Но наверное эти объекты добавляются скриптово, а до скриптов я пока не дошел)
Wasteland Ghost
Да, именно проход в деревню закрывается скриптово. Столбом. Потом (когда испытание пройдено) этот столб скриптово перемещается немного в сторону, чтобы открыть проход.
mick
насчёт координат. пересчет из гескогональных координат в декартовы выполняется по формуле:
y = coord / 200 + (coord % 200) * 0.5 + ((coord % 2)?( -0.5):(0));
x = — (coord % 200);
где coord — DWORD по адресу 0x0004.

Координаты для тайлов фона:
x =  — i * 48 + j * 32 — 64;
y = i * 12 + j * 24 — 11;
где i и j — номера тайлов по горизонтали и вертикали соответственно.

Всё вышеописанное проверенно на первой карте(artemple.map) и может быть не точно для других...

Может кому-нибудь пригодится)
Ваш ответ: