Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент > Опкоды

Важная информация

Опкоды Опкоды

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2011, 11:37   #1
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию SMSG_PONG (4.0.6а)

Никак не найду номер этого пакета. Подскажите люди добрые
HuntsMan вне форума   Ответить с цитированием
Старый 23.03.2011, 10:12   #2
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

Мне кажется, что опкод должен быть: 0x0A01B и обрабатываться в HandleAuthOpcodes. Однако с этим опкодом пинг в клиенте все равно не показывается. В консоли клиента же поялвяется сообщение "Received pong with old sequence". Так что опкод я думаю верный. Проблема похоже в том, что сервер все время получает CMSG_PING с нулевым ping значением, вместо инкрементирующегося. Клиент пытается послать пинги на все 3 потенциальных соединения (home, world и auth?), но т.к. соедниение открыто только одно видимо клиента плющит.

Последний раз редактировалось Chameleon; 23.03.2011 в 11:13.
Chameleon вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (25.03.2011)
Старый 25.03.2011, 18:19   #3
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Цитата:
Сообщение от Chameleon Посмотреть сообщение
Мне кажется, что опкод должен быть: 0x0A01B и обрабатываться в HandleAuthOpcodes. Однако с этим опкодом пинг в клиенте все равно не показывается. В консоли клиента же поялвяется сообщение "Received pong with old sequence". Так что опкод я думаю верный. Проблема похоже в том, что сервер все время получает CMSG_PING с нулевым ping значением, вместо инкрементирующегося. Клиент пытается послать пинги на все 3 потенциальных соединения (home, world и auth?), но т.к. соедниение открыто только одно видимо клиента плющит.
Скорее всего. В 4.0.3 пинг клиент нормально посылал, я проверял

add:
Код:
Packet SMSG, CMSG_PING (1614), len 8, Flags: None
╔════════╦═════════════════════════════════════════════════╦════════════════╗
║ OFFSET ║  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F ║0123456789ABCDEF║
╠════════╬═════════════════════════════════════════════════╬════════════════╣
║00000000║ 00 00 00 00 01 00 00 00 -- -- -- -- -- -- -- -- ║................║
╚════════╩═════════════════════════════════════════════════╩════════════════╝
Как я понял, он на каждое соединение шлет свой пакет с пингом, а там уже ждет ответа. Значит поидее он должен слушать этот пакет с любого содеинения

Последний раз редактировалось HuntsMan; 25.03.2011 в 22:24.
HuntsMan вне форума   Ответить с цитированием
Старый 26.03.2011, 07:10   #4
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию


Йхууууу

Код:
--- a/src/server/game/Server/WorldSocket.cpp
+++ b/src/server/game/Server/WorldSocket.cpp
@@ -1091,8 +1091,10 @@ int WorldSocket::HandlePing (WorldPacket
 
     if (m_Session)
         m_Session->SetLatency(latency);
 
-    WorldPacket packet (SMSG_PONG, 4, true);
-    packet << sequence;
+    WorldPacket packet (SMSG_PONG, 4);
+    packet << sequence++;
     return SendPacket (packet);
 }

Последний раз редактировалось HuntsMan; 26.03.2011 в 07:52.
HuntsMan вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
Chameleon (26.03.2011)
Старый 26.03.2011, 09:26   #5
Chameleon
Новичок
 
Регистрация: 04.03.2011
Сообщений: 29
Сказал(а) спасибо: 12
Поблагодарили 9 раз(а) в 7 сообщениях
Chameleon На верном пути
По умолчанию

Что-то я не понял, как этот патч работает.
У меня пинг заработал, когда я поменял местами чтение latency и sequence из клиентского пакета.

Последний раз редактировалось Chameleon; 26.03.2011 в 10:27.
Chameleon вне форума   Ответить с цитированием
Старый 26.03.2011, 19:07   #6
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Код:
+    packet << sequence++;
     return SendPacket (packet);
Ага, пост-инкрементировать локальную переменную перед выходом из функции.
LordJZ вне форума   Ответить с цитированием
Старый 26.03.2011, 19:27   #7
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Магия какая-то Клиентский пакет я поправил ещё на версии 4.0.3, но вот почему пинг стал отображатся после этого все равно не рабочего куска кода я вообще не понимаю..
HuntsMan вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 22:51. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot