Показать сообщение отдельно
Старый 17.05.2010, 10:35   #22
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

все так, но проблема вот в чем:

транспорт имеет координаты x1,y1,z1. транспорт НЕ ПЕРЕМЕЩАЕТСЯ в мире - это всего лишь закольцованный видеоролик с бегунком прокрутки (таймстампом), который прокручивается автоматически клиентом - но это отдельный разговор.

когда юнит заходит на корабль, этому юниту выставляется флаг (ON_TRASPORT) и в create и update пакетах начинают рассылаться дополнительные координаты ОТНОСИТЕЛЬНО корабля, x2, y2, z2.

благодаря выставленному флагу мы видим уплывающего юнита вместе с кораблем, если флаг не выставить - корабль уплывет, юнит будет стоят на месте и когда "земля уплывет из под ног", юнит плюхнется на землю или в воду.

так вот проблема: в момент захода на корабль координаты юнита становятся равны координатам корабля и не меняются в течении всего времени пребывания на корабле. любое движение юнита вроде как влечет за собой изменение его координат и если их сменить (напомню, они остались равны координатам корабля, который стоит на пристани), то юнит мгновенно телепортирует с уплывшего корабля на пристань, где визуально (подчеркиваю - визуально. фактически он там так и стоит, никуда не делся) корабля уже нет.

собственно решение проблемы: нельзя изменять основные координаты юнита, пока он на корабле и у юнита выставлен флаг, нужно изменять только относительные координаты.

т.е. что имеем: фактически - да, получается что юнит продолжает быть на месте корабля, стоящего на пристани. на сервере. и когда к этой пристани подбегает другой юнит, ему креатится корабль (с правильным таймстампом) и наш уплывший юнит тоже. только кретить его нужно правильно - с высталенным флагом и переданным гуидом корабля. тогда клиент отрисует отсутсвующий/подплывающий/уплывающий корабль и нашего юнита на нем. без всяких проблем.

основная проблема - правильный таймстамп в create пакете корабля. вторая проблема - правильный create для находящихся на этом корабле юнитов. ну, вторая проблема - не проблема вообще, а с первой так до сих пор никто и не разобрался еще. ну и еще существует третья проблема - как отслеживать момент захода плеера на транспортный ГО и момент когда юнит уходит с корабля (может это и не проблема тоже, но лично мне пока неизвестно).

нет никакой карты в карте. нужно все правильно реализовывать.
RomanRom2 вне форума   Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
Deamon (17.05.2010), Feel the Power (21.05.2010), KiriX (15.06.2010)