19.04.2011, 17:08 | #1 |
MaNGOS Dev
Регистрация: 16.01.2011
Сообщений: 262
Сказал(а) спасибо: 57
Поблагодарили 73 раз(а) в 59 сообщениях
|
Залипание форм
1. Что есть залипание форм:
- присутствие визульного эффект формы, присутствие панельки со спеллами, актуальными для данной формы, невозможность кастовать ни их, ни спеллы, которые не кастуются в формах (хилки друида, етц) 2. Как происходит: - при быстром входе/выходе из формы вручную - при быстром входе/выходе из формы макросами /cancelform /cast spell или /cast !spell 3. Залипают все формы, друлевские, шп, стелс. Друлевские формы можно сбросить правым кликом по бафу, с остальными же поможет только релог. Как должно быть: http://img638.imageshack.us/img638/3...1911173730.jpg Как получается: http://img197.imageshack.us/img197/8...1911173442.jpg Результат .debug getvalue 122 hex : 1000000 - все ок, 0x1000000 = FORM_CAT << 3*8 (122 == UNIT_FIELD_FLAGS_2, оффсет - 3, т.е. форма) Печально, но если прописать .debug setvalue 122 hex 1000000 без модифицированной функции SetByteValue - ничего не изменится, т.е. объект не будет обновляться, если выставляемая величина равно текущей. Но даже если модифицировать код на апдейт в любом случае - форма не "отвиснет", то есть получается, что клиент не обратит внимание на апдейт поля UNIT_FIELD_FLAGS_2, если оно фактически не изменилось (а оно выставляется при каждом вызове SetShapeshiftForm()). Форма "отвисает" при любом изменении UNIT_FIELD_FLAGS_2, будь то команды, например .debug setvalue 122 hex 0 .debug setvalue 122 hex 1000000 или, например, включение/выключение режима пвп (флаги UNIT_FIELD_BYTES_2 offset 1) 4. Тем самым, у меня сложилось мнение, что дело в обработке пакетов клиентом, а именно: - либо клиент сначала получает апдейт на выставление формы, а затем на ее сброс - либо что-нибудь связанное со скоростью получения этих апдейтов И да, ошибка типа "You are in a shapeshift form" генерируется клиентом, т.е. на сервер не идет опкод каста спелла. Может, у кого-то есть идеи, как это исправить? Последний раз редактировалось Amaru; 19.04.2011 в 17:10. |
Пользователь сказал cпасибо: | Ranger (20.05.2011) |