Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Архив (https://forum.zone-game.info/forumdisplay.php?f=185)
-   -   Подскажите плз.... (https://forum.zone-game.info/showthread.php?t=14174)

ZhukV 19.05.2011 23:50

Подскажите плз....
 
Объясните пожалуйста, как именно происходит общение между клиентом и серверов.

К примеру.

После того, как клиент что-то сделал, он 100% отсылает запрос на сервер, чтобы сервер подтвердил.

Вопрос,
1. как знать, что именно отправляет клиент для сервер
2. Как происходит идентификация чара? (что отдает клиент при этом)


Если клиент сервер работают на заголовках, то подскажите, какие именно отправляются...

Возможно кто-то имеет ссилку на такие посты, где это расписано. Буду очень благодарен!!!

[STIGMATED] 19.05.2011 23:52

Re: Подскажите плз....
 
Цитата:

Порядок авторизации на логин сервере

Во первых сразу замечу что существует две ревизии протокола использующиеся на данный момент(может и больше но мне о них не известно) - c621 и 785a.
Отличие их в том что в c621 используется дополнительное шифрование и авторизация GameGuard. Пакеты Init и RequestAuthLogin также отличаются.
Определить версию можно по размеру пакета Init, для ревизии 785a он составляет 11 байт, для c621 – 170.

1. Сразу после установки соединения сервер отправляет клиенту пакет Init
2. В ответ на него клиент отправляет пакет RequestGGAuth(в ревизии протокола 785a этот пакет не высылается)
3. Сервер отвечает на него пакетом GGAuth (в ревизии протокола 785a этот пакет не высылается)
4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль.
5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail содержащий причину неудачи, инатче высылается пакет LoginOk, содержащий
session key #1.
6. Далее клиент запрашивает список серверов пакетом RequestServerList
7. В ответ на этот пакет сервер высылает клиенту ServerList, в нем содержиться список серверов и их IP адреса с номерами портов.
8. После выбора game-сервера, и нажатия на ОК, клиент отсылает пакет RequestServerLogin
9. Сервер авторизации выполняет проверки на максимальное количество игроков, доступность сервера и т.п., если все проверки пройдены, то высылает пакет
PlayOk,содержащий session key #2, этот ключь генерируется из текущего времени системы в мс, номера сокета и еще всякой лабуды. После этого клиент
отключается от логин сервера и подключается к гейм серверу.

Порядок авторизации на гейм сервере

1. После установки соединения, клиент высылает пакет ProtocolVersion, содержащий версию протокола.
2. Сервер высылает пакет CryptInit, содержащий XOR ключ которым будут шифроваться все следующие пакеты.
3. Клиент высылает пакет AuthLogin выбраному серверу, содержащий session key #1, session key #2 и логин. При несовпадении с теми ключами и логином,
что храняться на сервере авторизации клиент отключается.
4. Сервер высылает пакет CharList, содержащий список всех чаров на аккаунте.
5. Тут идет процесс создания/удаления и выбора чара, после того как чар выбран и нажата кнопка Start, клиент отправляет пакет CharacterSelected
6. Клиент отправляет 2 пакета - RequestQuestList и RequestExManorList
7. Сервер высылает пакет ExSendManorList
8. Сервер высылает пакет QuestList
9. Клиент отправляет пакет EnterWorld
10. Сервер отправляет пакет UserInfo, который также служит сигналом окончания загрузки.
11. Все мы в игре. Сервер с периодичностью 60 секунд высылает пакет NetPingRequest, на который клиент должен ответить пакетом NetPing

В описании пакетов будут встречаться ObjectID и ItemID, ItemID это идентификатор типа предмета, например у авадон робы он 2406. А ObjectID это
уникальный идентификатор самого предмета в игре. Например у двух чаров есть авадон роба, ItemID робы у каждого из них будет одинаковый - 2406, тогда
как ObjectID будет уникальным.
Источник утерян к сожалению.


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

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot