Просмотр полной версии : SMSG_DISMOUNT
Кто-нибудь имеет информацию о нем?
Смущает, что сейчас (3.3.5) в мангосе (http://ru-mangos.ru/showthread.php?t=3381) или тринити посылают его всем вокруг, каждый раз при дисмаунте, что провоцирует баги с моделью персонажа - ее "диаметр" (если выделить) для других игроков остаётся такой же как и с маунтом. Если просто менять mountdisplay на 0, без отправки опкода, то все в порядке.
Обработчик в иде (http://paste2.org/h51ZF4bj) (с 5.0.5, но думаю разница с 3.3.5 не большая).
Может его следует посылать только в определённых случаях?
Lordronn
07.05.2014, 20:13
А SMSG_MOVE_SET_COLLISION_HEIGHT отправляется? помоему в нем дело, а то лишь для анимации dismount-а всем вокруг
А SMSG_MOVE_SET_COLLISION_HEIGHT отправляется? помоему в нем дело, а то лишь для анимации dismount-а всем вокруг
+
оно отвечает за коллизии, в мангосе это не реализовано
+
оно отвечает за коллизии, в мангосе это не реализовано
В тринити такое реализовано и отправляется до SMSG_DISMOUNT:
WorldPacket data(SMSG_MOVE_SET_COLLISION_HGT, GetPackGUID().size() + 4 + 4);
data.appendPackGUID(GetGUID());
data << uint32(sWorld->GetGameTime()); // Packet counter
data << thisPlayer->GetCollisionHeight(false);
thisPlayer->GetSession()->SendPacket(&data);
Высота без маунта берётся из modelData->CollisionHeight, но насколько я заметил, другие числа эффекта тоже не дают.
Даже если реализовать ответ (http://paste2.org/29EXMend) сервера, на CMSG_MOVE_SET_COLLISION_HGT_ACK, который приходит следом, то это тоже ничего не меняет =(
Ещё, если после дисмаунта поменять размер игрока хоть на 0.1, то его "диаметр" восстанавливается.
Попробуйте дизмаунтнутся через lua-команду, будет ли баг?
Вызывается функция CGUnit:: Dismount, обработчик 3.3.5.12340
http://paste2.org/hp3AF2yJ
Почти же самый код (за исключением отправки пакета 0x375 (CMSG_CANCEL_MOUNT_AURA)) в хандлере пакета SMSG_DISMOUNT
Обработчик 3.3.5.12340
http://paste2.org/08gjk6ed
Попробуйте дизмаунтнутся через lua-команду, будет ли баг?
Вызывается функция CGUnit:: Dismount, обработчик 3.3.5.12340
http://paste2.org/hp3AF2yJ
Почти же самый код (за исключением отправки пакета 0x375 (CMSG_CANCEL_MOUNT_AURA)) в хандлере пакета SMSG_DISMOUNT
Обработчик 3.3.5.12340
http://paste2.org/08gjk6ed
Баг остаётся, после /dismount клиент у себя снимает маунта (для остальных игроков игрок ещё будет на маунте) и отправляет опкод на сервер, где уже сервер снимает ауру маунта с игрока и дальше все происходит стандартно, с отправкой всех пакетов (SMSG_MOVE_SET_COLLISION_HGT, SMSG_DISMOUNT, ...) , изменением mountdisplay и т.д.
RomanRom2
11.05.2014, 23:42
чото вы поперепутали божий дар с яичницей и намешали все в кучу как всегда...
дисмаунт транспортного средства (лошадь) - через поле UNIT_FIELD_MOUNTDISPLAYID.
SMSG_DISMOUNT - для вехиклов. нужно показывать дестрой объекта.
CMSG_CANCEL_MOUNT_AURA - вообще из другой оперы. используется, к примеру, для отмены зафейленного спелла, в котором есть несколько эффектов, один из которых маунт, а другой собственно зафейлился. ну и в ряде других случаев конечно же.
чото вы поперепутали божий дар с яичницей и намешали все в кучу как всегда...
дисмаунт транспортного средства (лошадь) - через поле UNIT_FIELD_MOUNTDISPLAYID.
SMSG_DISMOUNT - для вехиклов. нужно показывать дестрой объекта.
CMSG_CANCEL_MOUNT_AURA - вообще из другой оперы. используется, к примеру, для отмены зафейленного спелла, в котором есть несколько эффектов, один из которых маунт, а другой собственно зафейлился. ну и в ряде других случаев конечно же.
Спасибо RomanRom2 за разъяснения. Мы лишь пытаемся разобраться с последствиями того, что уже сделано до нас =)
hint: Ответ (http://paste2.org/29EXMend) на клиентский CMSG_MOVE_SET_COLLISION_HGT_ACK можно не реализовать, практической пользы от него не замечено, а анимация игроков (от кого пришел опкод), после его получения, становится "дёрганой".
RomanRom2
12.05.2014, 22:51
да не за что :yes3:
становится "дёрганой".
это лишь потому, что неправильно реализована синхронизация объектов. точнее, вообще никак не реализована =)))
vBulletin® v3.8.4, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot