Цитата:
Сообщение от Nab
подробнее объяснить, что нужно сделать?
|
Скачиваете исходники. Собираете, запускаете.
Далее находите точку, где выводится ваше сообщение об ошибке, судя по тем исходникам, что есть у меня - это логин-сервер, файл '\loginserver\GameServerThread.java', строка 120 и далее, где вызвается метод 'verifyChecksum' для расшифрованного пакета.
По какой-то причине эта проверка не проходит. Именно с java-сборками дел почти не имел, но судя по коду, это поток, который обрабатывает подключения игрового сервера к логин-серверу. И, похоже, у них какое-то расхождение в понимании протокола. Или же надо им где-то какой-то общий ключ прописать. Не знаю. Но т.к. у вас есть и исходники login-сервера, и исходники игрового сервера, то разобраться будет несложно (даже трафик слушать/расшифровывать не придётся):
1. Сделать в указанном выше файле протоколирование всех пакетов, поступающих от игрового сервера. Сделать аналогичное протоколирование в коде игрового сервера ('gameserver\LoginServerThread.java').
2. Определить, у какого именно пакета логин-сервер видит некорректную чексумму и далее изучить весь обмен данными между логин-сервером и игровым сервером вплоть до этого пакета.
Вероятно, что-то с hexid-ом не так (для java-сервера его нужно как-то правильно сгенерировать и положить в определённое место конфига). Вероятно, где-то в базе данных логин/гейм-сервера есть таблицы конфигурации, в которые нужно прописать согласованные данные для логин и гейм-сервера.
* на PTS-сборке, например, в базе 'lin2db' есть таблица 'server', откуда логин-сервер забирает информацию о доступных серверах (внешний/внутренний адрес, ip:порт и прочеее), в базе java-сборки сходу вижу таблицу 'gameservers' с полями 'server_id', 'hexid', 'host'.