Протокол Lineage II

Автор: TechnoWiz@rd Последнее редактирование: 23 ноября 2007

Содержание

1. Общие сведения 2. Пакеты Client -> Login Server 3. Пакеты Login Server -> Client 4. Пакеты Game Server -> Client 5. Пакеты Client -> Game Server

1. Общие сведения

   Каждый пакет состоит из размера пакета(2 байта), типа пакета(1 байт) и блока параметров(переменная длина). В дополнение к этому, в пакетах сервера 
авторизации, в конце добавляется контрольная сумма и дополняется нулями так, чтобы размер пакета был кратен 8-ми байтам. Контрольная сумма может
быть рассчитана следующей функцией:

unsigned long checksum( unsigned char *packet, int count )
{
   long chksum = 0L;
   for( int i = 0; i < count; i += 4 ) chksum ^= *((unsigned long *)&raw[i]);
   return chksum;
};


Протокол lineage использует 6 разных типов данных:

char   – может принимать значение от -128 до 127. Имеет длину 1 байт
short  – может принимать значение от -32768 до 32767. Имеет длину 2 байта
int    – может принимать значение от -2147483648 до 2147483647. Имеет длину 4 байта
int64  – может принимать значение от -9223372036854775808 до 9223372036854775807. Имеет длину 8 байт.
float  – может принимать значение от 2.22507e-308 до 1.79769e+308. Имеет длину 8 байт
string – текстовая строка в юникоде(UTF8). Каждая буква представлена двумя байтами, первый байтом код буквы, а второй –
	 номер кодовой таблицы. Индикатором конца строки служит символ с кодом 0.

 
Примечание: Для тех кто незнаком с принципом хранения данных в памяти ПК уточню, байты идут в обратном порядке. Т.е. если нам нужно записать
в пакет число 10 представленное типом int, то мы должны:

1) перевести его в шестнадцатеричную систему счисления – получим 00 00 00 0a
2) обратить порядок байт в слове – получаем 0a 00 00 00

   Пакеты сервера авторизации шифруются по алгоритму Blowfish. Стандартный ключ по умолчанию в 4-х хрониках:
5F 3B 35 2E 5D 39 34 2D 33 31 3D 3D 2D 25 78 54 21 5E 5B 24. К концу ключа прибавляется символ с кодом 0. В Interlude тип шифрования был изменен - пакет
Init содержит динамический Blowfish ключ случайно генерируемый для каждого клиента. Этот пакет сначала шифруется по алгоритму XOR(ключ генерируется
случайным образом и помещается в  конце пакета), а потом шифруется по алгоритму Blowfish, статическим ключом. По умолчанию статический ключ -
6B 60 CB 5B 82 CE 90 B1 CC 2B 6C 55 6C 6C 6C 6C. Все последующие пакеты будут шифроваться динамическим Blowfish ключом. Пакет LoginRequest дополнительно
шифруется по алгоритму RSA. Ключ состоит из следующих частей: B = 1024, E = 65537, N = передается в пакете Init. Вместе эти 3 части составляют целый RSA
ключ. Байты N в пакете зашифрованы функцией:

void scrambleMod( char *n )
{
      typedef unsigned char byte;
      int i;

      for( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };
 
      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38
      for( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 4 xor last 0x40 bytes with first 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };
};

Для расшифровки можно воспользоваться следующей функцией:

void unscrambleMod( char *n )
{
      typedef unsigned char byte;
      int i;

      // step 4 xor last 0x40 bytes with first 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[0x40 + i] = (byte)(n[0x40 + i] ^ n[i]);
      };

      // step 3 xor bytes 0x0d-0x10 with bytes 0x34-0x38
      for( i=0; i<4; i++ ) {
            n[0x0d + i] = (byte)(n[0x0d + i] ^ n[0x34 + i]);
      };

      // step 2 xor first 0x40 bytes with last 0x40 bytes
      for( i=0; i<0x40; i++ ) {
            n[i] = (byte)(n[i] ^ n[0x40 + i]);
      };

      for( i=0; i<4; i++ ) {
            byte temp = n[0x00 + i];
            n[0x00 + i] = n[0x4d + i];
            n[0x4d + i] = temp;
      };
};


   Также есть сервера использующие старый протокол авторизации(ревизия 785a) который не шифрует пакет Init, а остальные шифрует Blowfish
ключом длинной 21 байт. При этом пакет LoginRequest шифруется только по алгоритму Blowfish, без дополнительного шифрования RSA.
   Для шифрования пакетов гейм сервера используется алгоритм XOR. Ключ XOR генерируется случайно и передается клиенту в пакете CryptInit. Функции
шифрования и дешифрации приведены ниже:
 
/* Декодирует данные */
void decrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{

        int temp = 0;

        for( unsigned int i = 0; i < len; ++i ) {
               int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = temp2;
        };

        

        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};

/* Кодирует данные */
void encrypt( unsigned char *data, unsigned int len, unsigned char *Key )
{
        int temp = 0;

        for( unsigned int i = 0; i < len; i++) {
               int temp2 = data[i] & 0xff;
               data[i] = (temp2 ^ (Key[i & 15] & 0xff) ^ temp);
               temp = data[i];
        };

        int old = Key[8] & 0xff;
        old |= (Key[9] << 0x08) & 0xff00;
        old |= (Key[10] << 0x10) & 0xff0000;
        old |= (Key[11] << 0x18) & 0xff000000;

        old += len;

        Key[8] = old &0xff;
        Key[9] = (old >> 0x08) & 0xff;
        Key[10] = (old >> 0x10) & 0xff;
        Key[11] = (old >> 0x18) & 0xff;
};


   С каждым кодированным/декодированным пакетом ключ изменяется на длину пакета, поэтому нужно использовать два отдельных экземпляра ключа – один для
шифрования исходящих пакетов, второй для расшифровки входящих.
   Все пакеты шифруются начиная с 3-го байта, т.е. размер пакета никогда не шифруется.

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

Во первых сразу замечу что существует две ревизии протокола использующиеся на данный момент(может и больше но мне о них не известно) - 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 будет уникальным.

2. Пакеты от клиетна серверу (Login Server)

00 - RequestAuthLogin 02 - RequestServerLogin 05 - RequestServerList 07 - RequestGGAuth

RequestAuthLogin

Назначение: запрашивает авторизацию на логин сервере Формат для ревизии 0x785a: 00 XX XX XX XX 00 // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!! XX XX XX XX 00 // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!! 08 // маркер конца секции логин/пароль 00 00 00 00 // не используется 00 00 00 00 // не используется Формат для ревизии 0xc621: 00 00 00 00 00 ... // Начало массива из 128 байт содержащих логин и пароль, и шифрующихся по алгоритму RSA ... (байты 94-107) // строка содержащая логин. Имеет длинну 14 байт и храниться в формате ASCII а не UNICODE !!! ... (байты 108-124) // строка содержащая пароль. Имеет длинну 16 байт и храниться в формате ASCII а не UNICODE !!! ... 00 00 00 00 // не используется. Конец массива Примичание: Некоторые сервера сверяют логин и пароль как массивы данных а не как строки, т.е. сверяются байты содержащиеся за символом с кодом 0(признаком конца строки) поэтому убедитесь что неиспользуемые байты переменных где храняться логин и пароль содержат нули.

RequestServerLogin

Назначение: запрашивает подключение к гейм серверу Формат: 02 XX XX XX XX // SessionKey1 первая часть XX XX XX XX // SessionKey1 вторая часть XX // номер сервера

RequestServerList

Назначение: запрашивает список game серверов Формат: 05 XX XX XX XX // SessionKey1 часть 1 XX XX XX XX // SessionKey1 часть 2 04 00 00 00 // хз

RequestGGAuth

Назначение: запрашивает Game Guard авторизицию Формат: 07 XX XX XX XX // ID сессии XX XX XX XX // неизвестно XX XX XX XX // неизвестно XX XX XX XX // неизвестно XX XX XX XX // неизвестно

3. Пакеты от сервера клиенту (Login Server)

00 - Init 01 - LoginFail 02 - AccountKicked 03 - LoginOk 04 - ServerList 06 - PlayFail 07 - PlayOk 0B - GGAuth

Init

Назначение: передает клиенту номер сессии и номер соединения, в случае ревизии c621 передается также модуль RSA ключа, и динамический токен (Используеться в Interlude, но по идее возможно и в более старых версиях хроник) Формат для ревизии протокола 0x785a: 00 XX XX XX XX // ID сессии XX XX XX XX // Версия протокола 0x785a Формат для ревизии протокола 0xc621: 00 XX XX XX XX // ID сессии XX XX XX XX // Версия протокола 0xc621 XX XX XX XX ... // 128 байт публичного ключа, которым в последствии клиент шифрует пакет
RequestAuthLogin 29 DD 95 4E // \ 77 C3 9C FC // | хз что 97 AD B6 20 // | 07 BD E0 F7 // / XX XX XX XX ... // 16 байт blowfish ключа которым шифруются все последующие пакеты 00 XX XX XX XX // контрольная сумма пакета Пакет для Interlude содержит дополнительные 4 байта: XX XX XX XX // XOR ключ которым зашифрован пакет

LoginFail

Назначение: сообщает о неудачной попытке подключения к логин серверу Формат: 01 XX XX XX XX // причина неудачи: // 0x01 - системная ошибка // 0x02 - неправельный пароль // 0x03 - логин или пароль неверен // 0x04 - доступ запрещен // 0x05 - информация на аккаунте неверна(хз, наверно имеется ввиду ошибка в БД) // 0x07 - аккаунт уже используется // 0x09 - аккаунт забанен // 0x10 - на сервере идут сервисные работы // 0x12 - срок действия истек // 0x13 - на аккаунте не осталось больше времени (видимо NCSoft собирается или собиралось заморочить и почасовую оплату :)

AccountKicked

Назначение: сообщает клиенту, что аккаунт заблокирован Формат: 02 XX XX XX XX // причина неудачи: // 0x01 - data stealer // 0x08 - generic violation // 0x10 - прошло 7 дней (для trial акков ?) // 0x20 - Аккаунт забанен

LoginOk

Назначение: высылается в подтсверждение на пакет
RequestAuthLogin, в случае успешной проверки логина и пароля. Формат: 03 XX XX XX XX // SessionKey1 первая часть XX XX XX XX // SessionKey1 вторая часть 00 00 00 00 00 00 00 00 EA 03 00 00 00 00 00 00 00 00 00 00 02 00 00 00 XX XX XX XX ... // массив из 16 байт, назначение неизвестно

ServerList

Назначение: передает клиенту список серверов и их состояние Формат: 04 XX // количество серверов в списке 00 // неиспользуется или зарезервировано // Следующий блок повторяется для каждлого сервера в списке XX // ID сервера XX XX XX XX // IP аддрес гейм сервера XX XX XX XX // порт сервера XX // возрастной лимит XX // PVP сервер: 00 - нет, 01 - да XX XX // количество игроков онлайн XX XX // максимальное количество игроков XX // тестовый сервер: 00 - нет, 01 - да // Конец повторяющегося блока

PlayFail

Назначение: ответ на запрос авторизации на game-сервере Формат: 06 XX XX XX XX // причина отказа // 0x00000003 - Пароль не подходит к аккаунту // 0x00000004 - Access failed. Please try agen later // 0x0000000f - Слишком много пользователей

PlayOk

Назначение: ответ на запрос авторизации на game-сервере Формат: 07 XX XX XX XX // SessionKey2 первая часть XX XX XX XX // SessionKey2 вторая часть

GGAuth

Назначение: ответ на запрос GameGuard авторизации Формат: 0B XX XX XX XX // ответ: // 0x0B - Пропустить авторизацию

4. Пакеты от сервера клиенту (Game Server)

00 - CryptInit 01 - MoveToLocation 04 - UserInfo 0E - StatusUpdate 13 - CharList 14 - AuthLoginFail 19 - CharCreateOk 1A - CharCreateFail 23 - CharDeleteOk 24 - CharDeleteFail 25 - ActionFailed 2F - ChangeWaitType 38 - TeleportToLocation 3E - ChangeMoveType 7E - LogoutOK 80 - QuestList D3 - NetPingRequest AF - ServerSocketClose E1 - ChairSit FE:1B - ExSendManorList

CryptInit

Назначение: передает клиенту ключ шифрования(XOR) Формат: 00 01 // неизветсно XX XX XX XX ... // Массив длинной 16 байт - ключ XOR 01 00 00 00 // неизветсно 01 00 00 00 // неизветсно

MoveToLocation

Назначение: сообщает клиенту что чар переместился Формат: 01 XX XX XX XX // ID объекта XX XX XX XX // Точка назначения X XX XX XX XX // Точка назначения Y XX XX XX XX // Точка назначения Z XX XX XX XX // Текущее положение X XX XX XX XX // Текущее положение Y XX XX XX XX // Текущее положение Z

UserInfo

Назначение: сообщает клиенту статы персоонажа Формат: 04 XX XX XX XX // координата x местоположения чара XX XX XX XX // координата y местоположения чара XX XX XX XX // координата z местоположения чара XX XX XX XX // угол поворота головы XX XX XX XX // ObjectID чара XX XX XX XX 00 00 // строка с именем чара XX XX XX XX // идентификатор рассы XX XX XX XX // пол чара 0 - Male 1 - female XX XX XX XX // идентификатор класса XX XX XX XX // уровень XX XX XX XX // Exp XX XX XX XX // STR XX XX XX XX // DEX XX XX XX XX // CON XX XX XX XX // INT XX XX XX XX // WIT XX XX XX XX // MEN XX XX XX XX // Максимальное HP XX XX XX XX // Текущее HP XX XX XX XX // Максимальное MP XX XX XX XX // Текущее MP XX XX XX XX // SP XX XX XX XX // Текущий вес загрузки XX XX XX XX // Максимальный вес загрузки 28 00 00 00 // неизвестно XX XX XX XX // ObjectID Underware XX XX XX XX // ObjectID Rear XX XX XX XX // ObjectID Left rear XX XX XX XX // ObjectID Neckless XX XX XX XX // ObjectID Right ring XX XX XX XX // ObjectID Left ring XX XX XX XX // ObjectID Helmate XX XX XX XX // ObjectID Right hand XX XX XX XX // ObjectID Left hand XX XX XX XX // ObjectID Gloves XX XX XX XX // ObjectID Main armor XX XX XX XX // ObjectID Leggings XX XX XX XX // ObjectID Boots XX XX XX XX // ObjectID Back XX XX XX XX // ObjectID Left right hand XX XX XX XX // ObjectID Hair XX XX XX XX // ObjectID Face XX XX XX XX // ItemID Underware XX XX XX XX // ItemID Rear XX XX XX XX // ItemID Left rear XX XX XX XX // ItemID Neckless XX XX XX XX // ItemID Right ring XX XX XX XX // ItemID Left ring XX XX XX XX // ItemID Helmate XX XX XX XX // ItemID Right hand XX XX XX XX // ItemID Left hand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Main armor XX XX XX XX // ItemID Leggings XX XX XX XX // ItemID Boots XX XX XX XX // ItemID Back XX XX XX XX // ItemID Left right hand XX XX XX XX // ItemID Hair XX XX XX XX // ItemID Face ... // массив из 136 нулей, назначение неизвестно XX XX XX XX // PAtk XX XX XX XX // PAtk speed XX XX XX XX // PDef XX XX XX XX // Evasion XX XX XX XX // Accuracy XX XX XX XX // Critical XX XX XX XX // MAtk XX XX XX XX // CastSpeed XX XX XX XX // Atk speed (?) XX XX XX XX // MDef XX XX XX XX // Состояние ПВП (0=нефлагнутый 1=флагнутый) XX XX XX XX // Карма XX XX XX XX // скорость бега XX XX XX XX // скорость шага XX XX XX XX // скорость плаванья с включеным режимом бега XX XX XX XX // скорость плаванья с включеным режимом ходьбы XX XX XX XX // _flRunSpd XX XX XX XX // _flWalkSpd XX XX XX XX // Скорость полета с включеным режимом бега XX XX XX XX // Скорость полета с включеным режимом ходьбы XX XX XX XX XX XX XX XX // Move x (тип float) XX XX XX XX XX XX XX XX // Atk speed x (тип float) XX XX XX XX XX XX XX XX // Радиус чара - по этой величине сервер проверяет столкнивение с другими объектами (тип float) XX XX XX XX XX XX XX XX // Высота чара - по этой величине сервер проверяет столкнивение с другими объектами (тип float) XX XX XX XX // Стиль прически XX XX XX XX // Цвет волос XX XX XX XX // Тип лица XX XX XX XX // уровень доступа (0 - обычный чар, 1 и выше - ГМ) XX XX XX XX 00 00 // строка с титулом чара XX XX XX XX // идентификатор клана XX XX XX XX // идентификатор значка клана XX XX XX XX // идентификатор альянса XX XX XX XX // идентификатор значка альянса XX XX XX XX // флаги осады XX XX XX XX // 0=нет 1=на страйдере 2=на виверне XX XX XX XX // тип магазина(Private Store Type) XX XX XX XX // может ли чар крафтить вещи ? (0=нет, 1=да) XX XX XX XX // Количество PK XX XX XX XX // Количество PVP XX XX // Количество зассамоненых кубиков // Данный блок повторяется в зафисимости от количества кубиков XX XX // ID кубика // конец повторяющегося блока XX // 1-find party members? XX XX XX XX // Набор флагов состояния персоонажа(Abnormal effect) 00 // XX XX XX XX // Клановые привилегии XX XX // Количество оставшихся рекомендаций XX XX // Количество очков рекомендаций у персоонажа 00 00 00 00 // XX XX XX XX // Размер инвентаря(максимальное кол-во предметов) XX XX XX XX // ID класса персоонажа XX XX XX XX // Эффект вокруг игрока (Effect arround player) XX XX XX XX // Максимальное CP XX XX XX XX // CP XX // Уровень заточки XX // Круг указывающий на команду, вокруг игрока (0=нету, 1=синий, 1=красный) XX XX XX XX // ID большой иконки клана(используется на клановых щитах) XX // Нублес ? XX // Геройство ? XX // Рыбачим ? XX XX XX XX // Fish x XX XX XX XX // Fish y XX XX XX XX // Fish z XX XX XX XX // Цвет имени в формате RGB(0x00RRGGBB, где R-уровень красного, G-зеленого, а B-синего цвета) XX // Бег включен ? XX XX XX XX // Clan class 00 00 00 00 // XX XX XX XX // Цвет титула в формате RGB(0x00RRGGBB, где R-уровень красного, G-зеленого, а B-синего цвета) XX XX XX XX // Уровень проклятого оружия

StatusUpdate

Назначение: сообщает клиенту об изменении статов объекта Формат: 0E XX XX XX XX // ID объекта у которого изменились статы XX XX XX XX // количество статов в списке // Следующий блок повторяется столько раз, сколько статов в списке XX XX XX XX // идентификатор стата, может принимать следующие значения: // 0x00000001 - Уровень // 0x00000002 - Exp // 0x00000003 - STR // 0x00000004 - DEX // 0x00000005 - CON // 0x00000006 - INT // 0x00000007 - WIT // 0x00000008 - MEN // 0x00000009 - Текущее HP // 0x0000000a - Максимальное HP // 0x0000000b - Текущее MP // 0x0000000c - Максимальное MP // 0x0000000d - SP // 0x0000000e - Текущий уровень переносимого веса // 0x0000000f - Максимальный уровень переносимого веса // 0x00000010 - ? // 0x00000011 - PAtk // 0x00000012 - Patk Speed // 0x00000013 - PDef // 0x00000014 - Evasion // 0x00000015 - Accuracy // 0x00000016 - Critical // 0x00000017 - MAtk // 0x00000018 - Cast speed // 0x00000019 - MDef // 0x0000001a - Флаг PVP // 0x0000001b - Карма // 0x00000021 - Текущее CP // 0x00000022 - Максимальное CP XX XX XX XX // Новое значение стата // конец повторяющегося блока Прмичание: Чтобы клиент обновил статы, нужно отправить как минимум 2 параметра(проверялось на клиенте Interlude)

AuthLoginFail

Назначение: сообщает клиенту game-сервер отверг запрос на подключение Формат: 14 // и/или 12 ??? XX XX XX XX // Причина: // 0x00 - Текста нет // 0x01 - Системная ошибка // 0x02 - Пароль не соответствует аккаунту (причем тут тут game server ??? ему пароль даже не высылается Oo) // 0x03 - Пароль не соответствует аккаунту (опять 25, корейцы млин) // 0x04 - Попытка доступа неудачна, попробуйте позже. // 0x05 - Неверный аккаунт, свяжитесь с службой поддержки // 0x06 - Попытка доступа неудачна, попробуйте позже.(что-то у них многовато кодов на одну ошибку) // 0x07 - Аккаунт уже используется(это вроде тоже логин сервер проверять должен) // 0x08 - Попытка доступа неудачна, попробуйте позже. // 0x09 - Попытка доступа неудачна, попробуйте позже. // 0x10 - Попытка доступа неудачна, попробуйте позже.

CharList

Назначение: содержит список всех чаров на аккаунте Формат: 13 XX XX XX XX // Количество чаров на аккаунте // <<<<< Следующий блок повторяется столько раз, сколько чаров на акке. XX XX XX XX 00 00 // строка содержащее ник чара XX XX XX XX // ID чара XX XX XX XX 00 00 // строка с логином XX XX XX XX // ID чара XX XX XX XX // SessionID XX XX XX XX // ID клана 00 00 00 00 // неизвестно XX XX XX XX // пол (0x00 - мужчина, 0х01 - женщина XX XX XX XX // расса XX XX XX XX // класс XX XX XX XX // активный.(?) XX XX XX XX // X - не используется XX XX XX XX // Y - не используется XX XX XX XX // Z - не используется XX XX XX XX XX XX XX XX // текущее HP (число храниться в формате double) XX XX XX XX XX XX XX XX // текущее МP (число храниться в формате double) XX XX XX XX // SP XX XX XX XX XX XX XX XX // EXP (тип __int64) XX XX XX XX // уровень XX XX XX XX // карма XX XX XX XX ... // массив из 36 нулей, назначение неизвестно XX XX XX XX // ItemObjectID Under XX XX XX XX // ItemObjectID REar XX XX XX XX // ItemObjectID LEar XX XX XX XX // ItemObjectID Neck XX XX XX XX // ItemObjectID RFinger XX XX XX XX // ItemObjectID LFinger XX XX XX XX // ItemObjectID Head XX XX XX XX // ItemObjectID RHand XX XX XX XX // ItemObjectID LHand XX XX XX XX // ItemObjectID Gloves XX XX XX XX // ItemObjectID Chest XX XX XX XX // ItemObjectID Legs XX XX XX XX // ItemObjectID Feet XX XX XX XX // ItemObjectID Back XX XX XX XX // ItemObjectID LRHand XX XX XX XX // ItemObjectID Hair XX XX XX XX // ItemID Under XX XX XX XX // ItemID REar XX XX XX XX // ItemID LEar XX XX XX XX // ItemID Neck XX XX XX XX // ItemID RFinger XX XX XX XX // ItemID LFinger XX XX XX XX // ItemID Head XX XX XX XX // ItemID RHand XX XX XX XX // ItemID LHand XX XX XX XX // ItemID Gloves XX XX XX XX // ItemID Chest XX XX XX XX // ItemID Legs XX XX XX XX // ItemID Feet XX XX XX XX // ItemID Back XX XX XX XX // ItemID LRHand XX XX XX XX // ItemID Hair XX XX XX XX // прическа XX XX XX XX // цвет волос XX XX XX XX // тип лица XX XX XX XX XX XX XX XX // максимальное HP (число храниться в формате double) XX XX XX XX XX XX XX XX // максимальное МP (число храниться в формате double) XX XX XX XX // время до удаления чара в секундах. Если 0, то чар не поставлен на удаление XX XX XX XX // ID класса(базового ?) XX XX XX XX // используется клиентом для определения чара которым последний раз заходили, у него тут 1, у остальных - 0 XX // уровень заточки пушки XX XX XX XX // augmentation id

CharCreateOk

Назначение: сообщает клиенту что создание чара успешно завершено Формат: 19 01

CharCreateFail

Назначение: сообщает клиенту что попытка создания чара завершилась неудачей Формат: 1A XX XX XX XX // Причина: // Creation Failed // Слишком много чаров на акке // Имя чара уже существует // Имя слишком длинное или содержит запрещенные символы

CharDeleteOk

Назначение: сообщает клиенту что удаление чара прошло успешно Формат: 23

CharDeleteFail

Назначение: сообщает клиенту что удаление чара завершилось неудачей Формат: 24

ActionFailed

Назначение: уведомляет клиента что его последний запрос не может быть удовлетворен Формат: 25

ChangeWaitType

Назначение: сообщает клиенту что чар изменил wait тип(незнаю как это лучше на русский перевести :-/ Короче по параметрам понятоно что это такое) Формат: 2F XX XX XX XX // ID чара XX XX XX XX // wait тип: // 00 - сидеть // 01 - стоять // 02 - fake death // 03 - отменить fake death XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z

TeleportToLocation

Назначение: сообщает клиенту что чар телепортировался Формат: 38 XX XX XX XX // ID чара XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z

ChangeMoveType

Назначение: сообщает клиенту что чар изменил тип перемещения Формат: 3E XX XX XX XX // ID чара XX XX XX XX // 00 - хотьба, 01 - бег 00 00 00 00 // C2

LogoutOK

Назначение: сообщает клиенту что разрешение покинуть игру дано. Служит ответом на пакет клиента
Logout Формат: 7E

QuestList

Назначение: сообщает клиенту список квестов и квестовых предметов Формат: 80 XX XX // Количество квестов // Этот блок повторяется столько раз, сколько взятых квестов у чара XX XX XX XX // ID квеста 00 00 00 00 // число показывающее стадию выполнения, на которой находится квест // конец повторяющегося блока XX XX // Количество квестовых предметов // Этот блок повторяется столько раз, сколько квестовых предметов у чара XX XX XX XX // ItemID предмета XX XX XX XX // ObjectID предмета XX XX XX XX // Количество предметов этого типа 05 00 00 00 // неизвестно // конец повторяющегося блока

ServerSocketClose

Назначение: сообщает клиенту что сервер закрывает подключение Формат: AF 00 00 00 00 //

NetPingRequest

Назначение: пингует клиента. Примерно раз в минуту, если клиент не ответил на этот пакет, пакетом
NetPing, клиент отключаеться. Формат: D3 XX XX XX XX // идентификатор пинга. Вроде как генерируется случайно

ChairSit

Назначение: сообщает клиенту что чар сел Формат: E1 XX XX XX XX // ID объекта XX XX XX XX // Static object ID

ExSendManorList

Назначение: сообщает клиенту зоны манора Формат: FE 1B 00 XX XX XX XX // Количество зон манора // Следующий блок повторяется столько раз, сколько зон манора XX XX XX XX // ID зоны манора XX XX XX XX 00 00 // Строка содержащая название зоны манора // конец повторяющегося блока

5. Пакеты от клиетна серверу (Game Server)

00 - ProtocolVersion 01 - MoveBackwardToLocation 02 - Say 03 - EnterWorld 04 - Action 08 - AuthRequest 09 - Logout 0A - AttackRequest 0B - CharacterCreate 0C - CharacterDelete 0D - CharacterSelected 0F - RequestItemList 11 - RequestUnEquipItem 12 - RequestDropItem 14 - UseItem 15 - TradeRequest 16 - AddTradeItem 17 - TradeDone 1B - RequestSocialAction 1C - ChangeMoveType // устарел. Теперь юзается 'RequestActionUse' 1D - ChangeWaitType // устарел. Теперь юзается 'RequestActionUse' 1E - RequestSellItem 1F - RequestBuyItem 21 - RequestBypassToServer 24 - RequestJoinPledge 25 - RequestAnswerJoinPledge 26 - RequestWithdrawalPledge 27 - RequestOustPledgeMember 29 - RequestJoinParty 2A - RequestAnswerJoinParty 2B - RequestWithDrawalParty 2C - RequestOustPartyMember 2F - RequestMagicSkillUse 30 - Appearing 33 - RequestShortCutReg 35 - RequestShortCutDel 37 - RequestTargetCanceld 38 - Say2 3С - RequestPledgeMemberList 3F - RequestSkillList 40 - AnswerTradeRequest 45 - RequestActionUse 46 - RequestRestart 48 - ValidatePosition 4A - StartRotating 4B - FinishRotating 4D - RequestStartPledgeWar 4F - RequestStopPledgeWar 55 - RequestGiveNickName 58 - RequestEnchantItem 59 - RequestDestroyItem 5E - RequestFriendInvite 5F - RequestAnswerFriendInvite 60 - RequestFriendList 61 - RequestFriendDel 62 - CharacterRestore 63 - RequestQuestList 64 - RequestQuestAbort 66 - RequestPledgeInfo 68 - RequestPledgeCrest 6A - RequestRide 6B - RequestAquireSkillInfo 6C - RequestAquireSkill 6D - RequestRestartPoint 6E - RequestGMCommand 6F - RequestPartyMatchConfig 70 - RequestPartyMatchList 71 - RequestPartyMatchDetail 72 - RequestCrystallizeItem 77 - SetPrivateStoreMsgSell 81 - RequestGmList 82 - RequestJoinAlly 83 - RequestAnswerJoinAlly 84 - AllyLeave 85 - AllyDismiss 88 - RequestAllyCrest 89 - RequestChangePetName 8A - RequestPetUseItem 8B - RequestGiveItemToPet 8C - RequestGetItemFromPet 8E - RequestAllyInfo 8F - RequestPetGetItem 94 - SetPrivateStoreMsgBuy 98 - RequestStartAllianceWar 9А - RequestStopAllianceWar A0 - RequestBlock A2 - RequestSiegeAttackerList A4 - RequestJoinSiege A8 - NetPing AС - RequestRecipeBookOpen B9 - RequestEvaluate BA - RequestHennaList BB - RequestHennaItemInfo BС - RequestHennaEquip C1 - RequestMakeMacro C2 - RequestDeleteMacro CF - RequestAutoSoulShot D0:06 - RequestExEnchantSkillInfo D0:07 - RequestExEnchantSkill D0:08 - RequestExManorList D0:10 - RequestExPledgeCrestLarge D0:11 - RequestExSetPledgeCrestLarge EE - RequestChangePartyLeader

ProtocolVersion

Назначение: передает версию протокола используемого клиентом серверу Формат: 00 XX XX XX XX // Версия протокола

MoveBackwardToLocation

Назначение: запрос на перемещение чара Формат: 01 XX XX XX XX // Координата X точки назначения XX XX XX XX // Координата Y точки назначения XX XX XX XX // Координата Z точки назначения XX XX XX XX // Координата X текущего положения чара XX XX XX XX // Координата Y текущего положения чара XX XX XX XX // Координата Z текущего положения чара XX XX XX XX // 00 - для движения используеться клавиатура, 01 - для движения используется мышь

Say

Назначение: отправляет сообщение другим игрокам Формат: 02 XX XX XX XX 00 00 // Cтрока сообщения XX XX XX XX // Тип сообщение // 0x00 - ALL // 0x01 - SHOUT ( ! ) // 0x02 - TELL ( " ) // 0x03 - PARTY ( # ) // 0x04 - CLAN ( @ ) // 0x05 - GM // 0x06 - PETITION_PLAYER // 0x07 - PETITION_GM // 0x08 - TRADE ( + ) // 0x09 - ALLIANCE ( $ ) // 0x0A - ANNOUNCEMENT // 0x0F - PARTYROOM_ALL ( желтый ) // 0x10 - PARTYROOM_COMMANDER ( синий ) // 0x11 - Голос героя XX XX XX XX 00 00 // Для приватных сообщений. Содержит ник чара которому предназначено сообщение.

EnterWorld

Назначение: пакет, который отсылается клиентом когда клиент закончил загрузку мира Формат: 03

Action

Назначение: пакет, который отсылается клиентом при клике мышью по НПЦ или другому чару Формат: 04 XX XX XX XX // ID объекта XX XX XX XX // Координата X положения чара XX XX XX XX // Координата Y положения чара XX XX XX XX // Координата Z положения чара XX // 00 - просто клик, 01 - клик с зажатым шифтом

AuthRequest

Назначение: запрос авторизации на game сервере Формат: 08 XX XX XX XX // SessionKey2 часть 2(дается логин сервером) XX XX XX XX // SessionKey2 часть 1(дается логин сервером) XX XX XX XX // SessionKey1 часть 2(дается логин сервером) XX XX XX XX // SessionKey1 часть 1(дается логин сервером)

Logout

Назначение: запрашивает у сервера разрешение на выход из игры Формат: 09

AttackRequest

Назначение: запрос на атаку Формат: 0A XX XX XX XX // ID того, кого собираемся атаковать XX XX XX XX // X координата позиции чара XX XX XX XX // Y координата позиции чара XX XX XX XX // Z координата позиции чара XX XX XX XX // 0 - Ctrl не нажат, 1 - Ctrl нажат

CharacterCreate

Назначение: запрос на создание чара Формат: 0B XX XX XX XX 00 00 // Строка с именем чара XX XX XX XX // Расса XX XX XX XX // Пол XX XX XX XX // Класс XX XX XX XX // INT XX XX XX XX // STR XX XX XX XX // CON XX XX XX XX // MEN XX XX XX XX // DEX XX XX XX XX // WIT XX XX XX XX // Стиль волос XX XX XX XX // Цвет волос XX XX XX XX // Тип лица

CharacterDelete

Назначение: ставит чара на удаление Формат: 0C XX XX XX XX // Номер слота с чаром

CharacterSelected

Назначение: выбирает чара. Отсылается при клике на чара в меню выбора чара. Формат: 0D XX XX XX XX // Номер слота с чаром

RequestItemList

Назначение: запросить список вещей находящихся в инвентаре.(клиент открывает инвентарь, когда сервер высылает этот список) Формат: 0F

RequestUnEquipItem

Назначение: Снимает эквип с чара Формат: 11 XX XX XX XX // Номер слота

RequestDropItem

Назначение: запрос за дроп итема. Отправляется клиентом, при попытке выбросить из инвентаря какую-либо вещь Формат: 12 XX XX XX XX // ID итема который хотим выбросить XX XX XX XX // количество итемов которое мы хотим выбросить XX XX XX XX // X кордината места в которое выбрасываем итем XX XX XX XX // Y кордината места в которое выбрасываем итем XX XX XX XX // Z кордината места в которое выбрасываем итем

UseItem

Назначение: запрос на использование итема Формат: 14 XX XX XX XX // ID объекта

TradeRequest

Назначение: запрос торговлю. Формат: 15 XX XX XX XX // ID объекта с которым хотим торговать

AddTradeItem

Назначение: добавляет итем в трейд лист. Формат: 16 XX XX XX XX // ID трейда XX XX XX XX // ID объекта XX XX XX XX // количество

TradeDone

Назначение: запрос на завершение торговли. Формат: 17 XX XX XX XX // 0 - отменить сделку, 1 - подтвердить сделку

RequestSocialAction

Назначение: вызывает анимацию социальных действий вроде смеха и т.п. Формат: 1B XX XX XX XX // Номер экшина // 0x02 - Greeting // 0x03 - Victory // 0x04 - Advance // 0x05 - No // 0x06 - Yes // 0x07 - Bow // 0x08 - Unaware // 0x09 - Social Waiting // 0x0A - Laugh // 0x0B - Applaud // 0x0C - Dance // 0x0D - Sorrow // 0x0F - Анимация как при lvl-up // 0x10 - Анимация героев

ChangeMoveType

Назначение: включает/выключает бег Формат: 1C XX XX XX XX // 0 - бег выключен, 1 - бег включен

ChangeWaitType

Назначение: сесть/встать Формат: 1D XX XX XX XX // 0 - сесть, 1 - встать

RequestTargetCanceld

Назначение: Отменяет таргет Формат: 1D

RequestSellItem

Назначение: Запрос на продажу вещей Формат: 1E XX XX XX XX // ID списка покупок (list id) XX XX XX XX // количество вещей которые нужно продать // <<< Блок повторяется столько раз, сколько разных вещей нужно купить XX XX XX XX // ObjectID предмета который нужно продать XX XX XX XX // ItemID предмета который нужно продать XX XX XX XX // количество предметов которые нужно продать // конец повторяющегося блока

RequestBuyItem

Назначение: Запрос на покупку вещей Формат: 1F XX XX XX XX // ID сиска покупок XX XX XX XX // количество вещей которые нужно купить // <<< Блок повторяется столько раз, сколько разных вещей нужно купить XX XX XX XX // ID предмета который нужно купить XX XX XX XX // количество предметов которые нужно купить ...

RequestBypassToServer

Назначение: передает "bypass"(содержаться в HTML) команду серверу. Формат: 21 XX XX XX XX 00 00 // строка с коммандой

RequestJoinPledge

Назначение: отправляет чару предложение вступить в клан. Формат: 24 XX XX XX XX // ID чара, которому высылается предложение

RequestAnswerJoinPledge

Назначение: ответ на предложение о вступлении в клан Формат: 25 XX XX XX XX // ответ: 00 - нет, 01 - да

RequestWithdrawalPledge

Назначение: выйти из клана Формат: 26

RequestOustPledgeMember

Назначение: удалить чара из клана Формат: 27 XX XX XX XX 00 00 // строка с именем чара

RequestJoinParty

Назначение: предложить вступить в пати Формат: 29 XX XX XX XX 00 00 // ник чара, которому отсылается предложение XX XX XX XX // тип распределения предметов: // 0x00 - дроп получает подобравший его чар, споил - достается спойлеру // 0x01 - дроп распределяется случайным образом, споил - достается спойлеру // 0x02 - дроп и споил, распределяется случайным образом // 0x03 - дроп дается чарам по очереди, споил - достается спойлеру // 0x04 - дроп и споил, дается чарам по очереди

RequestAnswerJoinParty

Назначение: ответ на предложение вступить в пати Формат: 2A XX XX XX XX // ответ: 00 - нет, 01 - да

RequestWithDrawalParty

Назначение: выйти из пати Формат: 2B

RequestOustPartyMember

Назначение: удалить чара из пати Формат: 2C XX XX XX XX 00 00 // строка с именем чара которого следует удалить

RequestMagicSkillUse

Назначение: использовать магический скилл Формат: 2F XX XX XX XX // ID скилла XX XX XX XX // состояние CTRL : 00 - отпущен, 01 - нажат XX XX XX XX // состояние SHIFT: 00 - отпущен, 01 - нажат

Appearing

Назначение: Запрашивает возрождение чара после смерти. Вызывается после пакетов
RequestRestartPoint и ValidatePosition Формат: 30

RequestShortCutReg

Назначение: Регестрирует ярлык на панеле быстрого доступа. Формат: 33 XX XX XX XX // Тип ярлыка // 0x01 - итем // 0x02 - скилл // 0x03 - действие // 0x04 - макрос XX XX XX XX // идентификатор объекта выносимого на панель XX XX XX XX // номер слота XX XX XX XX // номер закладки XX XX XX XX // неизвестно

RequestShortCutDel

Назначение: Удаляет ярлык с панели быстрого доступа. Формат: 35 XX XX XX XX // номер слота XX XX XX XX // номер закладки

Say2

Назначение: отправляет сообщение другим игрокам Формат: 38 XX XX XX XX 00 00 // Cтрока сообщения XX XX XX XX // Тип сообщение // 0x00 - ALL // 0x01 - SHOUT ( ! ) // 0x02 - TELL ( " ) // 0x03 - PARTY ( # ) // 0x04 - CLAN ( @ ) // 0x05 - GM // 0x06 - PETITION_PLAYER // 0x07 - PETITION_GM // 0x08 - TRADE ( + ) // 0x09 - ALLIANCE ( $ ) // 0x0A - ANNOUNCEMENT // 0x0F - PARTYROOM_ALL ( желтый ) // 0x10 - PARTYROOM_COMMANDER ( синий ) // 0x11 - Голос героя XX XX XX XX 00 00 // Для приватных сообщений. Содержит ник чара которому предназначено сообщение.

RequestPledgeMemberList

Назначение: запросить список членов клана Формат: 3C

RequestSkillList

Назначение: запрашивает список изученных скилов Формат: 3F

AnswerTradeRequest

Назначение: ответ на трейд Формат: 40 XX XX XX XX // Ответ на трейд: 00 - отклонить, 01 - подтвердить

RequestActionUse

Назначение: выполняет действие Формат: 45 XX XX XX XX // Action ID (список не полный, экшинов там дофига) // 0x00 - Сесть/встать // 0x01 - Идти/бежать // 0x19 - Ансаммонить пета // 0x33 - General manufacture // 0x38 - Зазезть/слезть с страйдера (вирна ???) XX XX XX XX // 00 - CTRL не нажат, 01 - CTRL нажат XX // 01 - SHIFT не нажат, 01 - SHIFT нажат

RequestRestart

Назначение: возвращает в меню выбора чара Формат: 46

ValidatePosition

Назначение: вызывает перезагрузку данных, НПЦ, других игроков и прочее. Фактически вызывает телепортацию в текущие координаты игрока. Формат: 48 XX XX XX XX // X XX XX XX XX // Y XX XX XX XX // Z XX XX XX XX // Направление взгляда XX XX XX XX // ???

StartRotating

Назначение: Включает вращение чара вокруг своей оси Формат: 4A XX XX XX XX // Угол (принимает значения от 0 до 65535) XX XX XX XX // сторона ( 01 00 00 00 - вращение вправо, FF FF FF FF - вращение влево )

FinishRotating

Назначение: прекращает вращение чара вокруг своей оси Формат: 4B XX XX XX XX // Неизвестно XX XX XX XX // Неизвестно

RequestStartPledgeWar

Назначение: начать кланвар Формат: 4D XX XX XX XX 00 00 // строка с названием клана, которому объявляется кланвар

RequestStartPledgeWar

Назначение: закончить клан вар Формат: 4F XX XX XX XX 00 00 // строка с названием клана

RequestGiveNickName

Назначение: устанавить титул. Формат: 55 XX XX XX XX 00 00 // строка содержащая ник чара которому требуется установить титул XX XX XX XX 00 00 // строка содержащая титул

RequestEnchantItem

Назначение: запрашивает энчат интема. Формат: 58 XX XX XX XX // ID итема который хотим заэнчатить

RequestDestroyItem

Назначение: запрос на уничтожение итема Формат: 59 XX XX XX XX // ID итема XX XX XX XX // количество итемов?

RequestFriendInvite

Назначение: занести чара в френд лист Формат: 5E XX XX XX XX 00 00 // строка с именем чара, которого следует добавить

RequestAnswerFriendInvite

Назначение: ответ на предложение добавления в список друзей Формат: 5F XX XX XX XX // 00 - нет, 01 - да

RequestFriendList

Назначение: запрос френдлиста Формат: 60

RequestFriendDel

Назначение: запрос на удаление чара из френд листа Формат: 61 XX XX XX XX 00 00 // строка с именем чара, которого следует удалить

CharacterRestore

Назначение: отменяет удаление чара Формат: 62 XX XX XX XX // номер слота с чаром

RequestQuestList

Назначение: запросить список квестов Формат: 63

RequestQuestAbort

Назначение: прервать выполнение квеста Формат: 64 XX XX XX XX // ID квеста

CharacterRestore

Назначение: запрос информации о клане Формат: 66 XX XX XX XX // ID клана

RequestPledgeCrest

Назначение: устанавливает иконку клана Формат: 68 XX XX XX XX // ID иконки

RequestRide

Назначение: залезть/слезть на страйдера/вирна Формат: 6A XX XX XX XX // 0 - слезть, 1 - залезть XX XX XX XX // 1 - страйдер, 2 - вивирен

RequestAquireSkillInfo

Назначение: запрос информации о скилле Формат: 6B XX XX XX XX // ID скилла XX XX XX XX // уровень скилла

RequestAquireSkill

Назначение: запрос на изучение скилла Формат: 6C XX XX XX XX // ID скилла XX XX XX XX // уровень скилла

RequestRestartPoint

Назначение: запрашивает рестарт после смерти чара Формат: 6D XX XX XX XX // точка в которую будет возвращен игрок // 0x00 - Город // 0x01 - Клан холл // 0x02 - Замок // 0x03 - Флаг (при осаде замка) // 0x04 - Ресс на месте на котором умер игрок, используется на фестивале

RequestGMCommand

Назначение: отсылает запрос на GM комманду Формат: 6E XX XX XX XX 00 00 // строка с именем чара - цели XX XX XX XX // идентификатор комманды // 0x01 - статус игрока // 0x02 - клан игрока // 0x03 - скилы игрока // 0x04 - квесты игрока // 0x05 - инвентарь игрока // 0x06 - вархаус игрока XX XX XX XX // неизвестно

RequestPartyMatchConfig

Назначение: открыть окно поиска пати Формат: 6F XX XX XX XX // автомтическая регистрация: 00 - нет, 01 - да XX XX XX XX // показывать уровень: 00 - нет, 01 - да XX XX XX XX // показывать класс: 00 - нет, 01 - да

RequestPartyMatchList

Назначение: запросить список чаров ищущих пати Формат: 70 XX XX XX XX // статус может быть 1 и 3. Что значит наверняка, я не знаю.

RequestPartyMatchDetail

Назначение: запросить подробную информуцию о чаре ищущем пати Формат: 71 XX XX XX XX // ID чара

RequestCrystallizeItem

Назначение: запрос на кристализацию итема Формат: 72 XX XX XX XX // ID итема который нужно кристализовать XX XX XX XX // количество итемов, которые нужно кристализовать

SetPrivateStoreMsgSell

Назначение: устанавливает сообщение на продажу для PrivateStore Формат: 77 XX XX XX XX 00 00 // строка с сообщением

RequestGmList

Назначение: запрос списка GMов Формат: 81

RequestJoinAlly

Назначение: предложить вступить в альянс Формат: 82 XX XX XX XX // ID лидера клана, который преглашается в алли

RequestAnswerJoinAlly

Назначение: ответ на предложение вступления в альянс Формат: 83 XX XX XX XX // ответ: 00 - нет, 01 - да

AllyLeave

Назначение: покинуть альянс Формат: 84 XX XX XX XX 00 00 // строка с названием клана

AllyDismiss

Назначение: запрос на роспуск альянса Формат: 85 XX XX XX XX 00 00 // строка с именем клана

RequestAllyCrest

Назначение: запрос на установку иконки альянса Формат: 88 XX XX XX XX // ID иконки

RequestChangePetName

Назначение: меняет имя пета Формат: 89 XX XX XX XX 00 00 // строка с новым именем пита

RequestPetUseItem

Назначение: команда питу использовать итем Формат: 8A XX XX XX XX // ID объекта которых нужно использовать

RequestGiveItemToPet

Назначение: переместить итем из своего инвентаря в инвентарь пита Формат: 8B XX XX XX XX // ID итема XX XX XX XX // количество

RequestGetItemFromPet

Назначение: переместить итем из инвентаря пита к себе в инвентарь Формат: 8С XX XX XX XX // ID итема XX XX XX XX // количество XX XX XX XX // фиг его знает. В большинстве случаев - 0

RequestAllyInfo

Назначение: запрос информации об альянсе. Формат: 8E

RequestPetGetItem

Назначение: команда питу поднять итем. Формат: 8F XX XX XX XX // ID который надлежит поднять

SetPrivateStoreMsgBuy

Назначение: устанавливает сообщение на покупку для PrivateStore Формат: 94 XX XX XX XX 00 00 // строка с сообщением

RequestStartAllianceWar

Назначение: объявить алли вар Формат: 98 XX XX XX XX 00 00 // строка с именем альянса

RequestStopAllianceWar

Назначение: запрос о прекращении алли вар'а Формат: 9A XX XX XX XX 00 00 // строка с именем альянса

RequestBlock

Назначение: запрос операции над черным списком Формат: A0 XX XX XX XX // тип запроса: // 0x00 - добавить чара в игнор // 0x01 - удалить чара из игнора // 0x02 - вывесли список чаров занесенных в игнор // 0x03 - игнор всех // 0x04 - отменить игнор всех XX XX XX XX 00 00 // строка с именем чара которого надо занести в игнор

RequestSiegeAttackerList

Назначение: запрашивает список записаных на осаду замка атакующих кланов Формат: A2 XX XX XX XX // ID замка

RequestJoinSiege

Назначение: добавить/удалить клан в список осады замка Формат: A4 XX XX XX XX // ID замка XX XX XX XX // 00 - присоедениться к защитникам, 01 - присоедениться к атакующим XX XX XX XX // 00 - удалить клан из списка, 01 - добавить клан в список

RequestRecipeBookOpen

Назначение: открыть книгу рецептов Формат: AС

NetPing

Назначение: Отвечает на пакет сервера
RequestNetPing Формат: A8 XX XX XX XX // Это число берется из пакета RequestNetPing, отправляемого сервером XX XX XX XX // Пинг

RequestRecipeBookOpen

Назначение: открыть книгу рецептов Формат: AС

RequestEvaluate

Назначение: запрос на рекомендацию игрока Формат: B9 XX XX XX XX // ID цели

RequestHennaList

Назначение: запросить список доступных татуировок Формат: BA XX XX XX XX // неизвестно

RequestHennaItemInfo

Назначение: получить информацию о татуировке Формат: BB XX XX XX XX // ID татуировки

RequestHennaEquip

Назначение: запрос на нанесение татуировки Формат: BС XX XX XX XX // ID татуировки которую нужно нанести

RequestMakeMacro

Назначение: запрос на создание макроса Формат: С1 XX XX XX XX // ID макроса XX XX XX XX 00 00 // строка содержащая имя макроса XX XX XX XX 00 00 // строка с описанием макроса XX XX XX XX 00 00 // строка с текстом на иконке XX // ID иконки XX // количество строк // <<<<< Следующий блок повторяется столько раз, сколько строк в макросе. XX // строка XX // тип XX // ID скилла XX // ID ярлыка на панели XX XX XX XX 00 00 // имя комманды // конец повторяющегося блока

RequestDeleteMacro

Назначение: запрос на удаление макроса Формат: C2 XX XX XX XX // ID макроса

RequestAutoSoulShot

Назначение: включает/выключает использование AutoSS Формат: CF XX XX XX XX // идентификатор итема XX XX XX XX // 1 - включить : 0 - выключить

RequestExEnchantSkillInfo

Назначение: запросить информацию о заточке скила Формат: D0 06 00 XX XX XX XX // ID скила XX XX XX XX // уровень скила

RequestExEnchantSkill

Назначение: запросить заточку скила Формат: D0 07 00 XX XX XX XX // ID скила XX XX XX XX // уровень скила

RequestExManorList

Назначение: запросить заточку скила Формат: D0 08 00

RequestExPledgeCrestLarge

Назначение: запросить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) клана Формат: D0 10 XX XX XX XX // ID иконки

RequestExSetPledgeCrestLarge

Назначение: отправить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) на сервер Формат: D0 11 XX XX XX XX // размер данных // <<<<< Следующий блок повторяется столько раз, сколько байт в данных изображения XX // данные изображения // конец повторяющегося блока

RequestChangePartyLeader

Назначение: передает лидерство в пати Формат: EE XX XX XX XX 00 00 // строка с именем чара, которому передается лидерство

Copyright (C) 2006-2007 by TechnoWiz@rd

Сайт управляется системой uCoz