|
Регистрация | Файлы | Правила | Альбомы | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером |
|
Опции темы | Поиск в этой теме | Опции просмотра |
07.05.2014, 18:18 | #1 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
SMSG_DISMOUNT
Кто-нибудь имеет информацию о нем?
Смущает, что сейчас (3.3.5) в мангосе или тринити посылают его всем вокруг, каждый раз при дисмаунте, что провоцирует баги с моделью персонажа - ее "диаметр" (если выделить) для других игроков остаётся такой же как и с маунтом. Если просто менять mountdisplay на 0, без отправки опкода, то все в порядке. Обработчик в иде (с 5.0.5, но думаю разница с 3.3.5 не большая). Может его следует посылать только в определённых случаях? |
07.05.2014, 21:48 | #4 |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
В тринити такое реализовано и отправляется до 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); Даже если реализовать ответ сервера, на CMSG_MOVE_SET_COLLISION_HGT_ACK, который приходит следом, то это тоже ничего не меняет Ещё, если после дисмаунта поменять размер игрока хоть на 0.1, то его "диаметр" восстанавливается. |
08.05.2014, 00:20 | #5 |
Модератор
|
Попробуйте дизмаунтнутся через 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 |
Пользователь сказал cпасибо: | SeT (08.05.2014) |
08.05.2014, 00:53 | #6 | |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Цитата:
Последний раз редактировалось SeT; 08.05.2014 в 00:58. |
|
11.05.2014, 23:42 | #7 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
чото вы поперепутали божий дар с яичницей и намешали все в кучу как всегда...
дисмаунт транспортного средства (лошадь) - через поле UNIT_FIELD_MOUNTDISPLAYID. SMSG_DISMOUNT - для вехиклов. нужно показывать дестрой объекта. CMSG_CANCEL_MOUNT_AURA - вообще из другой оперы. используется, к примеру, для отмены зафейленного спелла, в котором есть несколько эффектов, один из которых маунт, а другой собственно зафейлился. ну и в ряде других случаев конечно же. |
12.05.2014, 14:53 | #8 | |
Ученый
Регистрация: 13.03.2010
Сообщений: 110
Сказал(а) спасибо: 55
Поблагодарили 23 раз(а) в 14 сообщениях
|
Цитата:
hint: Ответ на клиентский CMSG_MOVE_SET_COLLISION_HGT_ACK можно не реализовать, практической пользы от него не замечено, а анимация игроков (от кого пришел опкод), после его получения, становится "дёрганой". Последний раз редактировалось SeT; 12.05.2014 в 15:00. |
|
12.05.2014, 22:51 | #9 |
WowCore Dev
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[11100] Avoid send SMSG_DISMOUNT for non aura source mount state. | newsbot | CMaNGOS Commits | 0 | 02.02.2011 16:40 |
[10960] Send SMSG_DISMOUNT to client. | newsbot | CMaNGOS Commits | 0 | 04.01.2011 21:02 |