1. Общие сведения
1) Каждый пакет состоит из размера пакета(2 байта), типа пакета(1 байт) и блока параметров(переменная длина). В пакетах логин
серверу в конце пакета добавляется контрольная сумма и дополняется нулями так, чтобы размер пакета был кратен 8-ми байтам.
2) Строки в пакетах представлены байтами ANSI разделенными нулями, признаком конца строки является два нуля подряд.
Пример: 'A', 0x00, 'B', 0x00, 'C', 0x00, 0x00, 0x00
3) Байты в словах и двойных словах высылаются в обратном порядке. Т.е. если надо отправить число 1, то его следует записать
как 01 00 00 00, а не 00 00 00 01.
4) Контрольная сумма пакета расчитывается так:
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;
};
Все пакеты шифруються по алгоритму Blowfish. По умолчанию используется следующий Blowfish ключ:
5F 3B 35 2E 5D 39 34 2D 33 31 3D 3D 2D 25 78 54 21 5E 5B 24. Пакет RequestAuthLogin дополнительно
шифруется по алгоритму RSA, публичный ключ высылаеться в пакете Init.
В Interlude пакет Init шифруется по алгоритму XOR, затем статическим blowfish ключом - 6B 60 CB 5B 82 CE 90 B1 CC 2B 6C 55 6C 6C 6C 6C
5) Процесс соединения с гейм сервером:
1. Сразу после установки соединения сервер отправляет клиенту пакет Init
2. В ответ на него клиент отправляет пакет RequestGGAuth
3. Сервер отвечает на него пакетом GGAuth
4. Если сервер ответил, что авторизация прошла успешно, то клиент высылает пакет RequestAuthLogin, содержащий логин и пароль
5. Проверка логина и пароля, в случае неудачи, сервер высылает пакет LoginFail, инатче LoginOk, содержащий session key #1.
Для явы он постоянный.
6. Далее клиент запрашивает список серверов пакетом RequestServerList
7. В ответ на этот пакет сервер высылает клиенту ServerList, в нем содержиться список серверов и их IP адреса с номерами портов.
8. После выбора game-сервера, и нажатия на ОК, клиент отсылает пакет RequestServerLogin
9. LoginServer выполняет проверки на бан, максимальное количество игроков, доступность сервера и т.п., если все проверки пройдены,
то высылает пакет PlayOk, содержащий session key #2, этот ключь генерируется из текущего времени системы в мс, номера сокета и еще всякой лабуды.
10. После этого клиент высылает пакет AuthLogin выбраному серверу, содержащий session key #1, session key #2 и логин, необходимые
для генерации ключа по которому будет шифроваться весь трафик.
11. Сервер высылает пакет PlayOk, содержащий список чаров
2. Пакеты от клиетна серверу (Login Server)
00 - RequestAuthLogin
02 - RequestServerLogin
05 - RequestServerList
07 - RequestGGAuth
RequestAuthLogin
Назначение: запрашивает авторизацию на логин сервере
Формат:
00
XX XX XX XX 00 00 // строка содержащая логин
XX XX XX XX 00 00 // строка содержащая пароль
08 // маркер конца секции логин/пароль
00 00 00 00 00 00 00 00 // не используется
XX XX XX XX // контрольная сумма
00 00 00 00 // выравнивание размера пакета
RequestServerLogin
Назначение: запрашивает подключение к гейм серверу
Формат:
02
RequestServerList
Назначение: запрашивает список game серверов
Формат:
05
??
RequestGGAuth
Назначение: запрашивает Game Guard авторизицию
Формат:
07
??
3. Пакеты от сервера клиенту (Login Server)
00 - Init
01 - LoginFail
03 - LoginOk
04 - ServerList
04 - PlayOk
0B - GGAuth
Init
Назначение: передает клиенту список серверов и их состояние
Формат:
00
XX XX XX XX // ID сессии
XX XX XX XX // Версия протокола 0x785a или 0xc621
// Публичный ключ
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
XX XX XX XX
// Неизвестно
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
Формат для Interlude:
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 // контрольная сумма пакета
XX XX XX XX // XOR ключ которым зашифрован пакет
LoginFail
Назначение: сообщает о неудачной попытке подключения к логин серверу
Формат:
01
XX XX XX XX // причина неудачи:
// 0x01 - системная ошибка
// 0x02 - неправельный пароль
// 0x03 - логин или пароль неверен
// 0x04 - доступ запрещен
// 0x05 - информация на аккаунте неверна(хз, наверно имеется ввиду ошибка в БД)
// 0x07 - аккаунт уже используется
// 0x09 - аккаунт забанен
// 0x10 - на сервере идут сервисные работы
// 0x12 - срок действия истек
// 0x13 - на аккаунте не осталось больше времени (видимо NCSoft собирается или собиралось заморочить и почасовую оплату
LoginOk
Назначение: высылается в подтсверждение на пакет RequestAuthLogin, в случае успешной проверки логина и пароля.
Формат:
03
XX XX XX XX // ? На яве 0x55555555
XX XX XX XX // session id. Это первая часть session id, для явы он постоянный
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 // контрольная сумма
00 00 00 00 // выравнивание размера пакета
00 00 00 00
00 00 00
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 - да
XX XX XX XX // контрольная сумма
00 00 00 00 // выравнивание размера пакета
00 00 00 00
00
PlayOk
Назначение: ответ на запрос авторизации на game-сервере
Формат:
07
XX XX XX XX // session id #2, вторая половина ключа сессии, генерируется случайно
?? ?? ?? ?? // непонятно, ява просто ставит тут 0x55667788
XX XX XX XX // контрольная сумма
00 00 00 00 // выравнивание размера пакета
00 00 00 00
00
GGAuth
Назначение: ответ на запрос GameGuard авторизации
Формат:
0B
XX XX XX XX // ответ:
// 0x0B - Пропустить авторизацию
4. Пакеты от сервера клиенту (Game Server)
01 - CharMoveToLocation
14 - AuthLoginFail
19 - CharCreateOk
1A - CharCreateFail
23 - CharDeleteOk
24 - CharDeleteFail
2F - ChangeWaitType
38 - TeleportToLocation
3E - ChangeMoveType
E1 - ChairSit
CharMoveToLocation
Назначение: сообщает клиенту что чар переместился
Формат:
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
AuthLoginFail
Назначение: сообщает клиенту game-сервер отверг запрос на подключение
Формат:
14 // и/или 12 ???
XX XX XX XX // Причина:
// 0x00 - Текста нет
// 0x01 - Системная ошибка
// 0x02 - Пароль не соответствует аккаунту (причем тут тут game server ??? ему пароль даже не высылается Oo)
// 0x03 - Пароль не соответствует аккаунту (опять 25, корейцы млин)
// 0x04 - Попытка доступа неудачна, попробуйте позже.
// 0x05 - Неверный аккаунт, свяжитесь с службой поддержки
// 0x06 - Попытка доступа неудачна, попробуйте позже.(что-то у них многовато кодов на одну ошибку)
// 0x07 - Аккаунт уже используется(это вроде тоже логин сервер проверять должен)
// 0x08 - Попытка доступа неудачна, попробуйте позже.
// 0x09 - Попытка доступа неудачна, попробуйте позже.
// 0x10 - Попытка доступа неудачна, попробуйте позже.
CharCreateOk
Назначение: сообщает клиенту что создание чара успешно завершено
Формат:
19
01
CharCreateFail
Назначение: сообщает клиенту что попытка создания чара авершилась неудачей
Формат:
1A
XX XX XX XX // Причина:
// Creation Failed
// Слишком много чаров на акке
// Имя чара уже существует
// 16 eng chars. (слишком длинное имя ???)
CharDeleteOk
Назначение: сообщает клиенту что удаление чара прошло успешно
Формат:
23
CharDeleteFail
Назначение: сообщает клиенту что удаление чара завершилось неудачей
Формат:
24
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
ChairSit
Назначение: сообщает клиенту что чар сел
Формат:
E1
XX XX XX XX // ID объекта
XX XX XX XX // Static object ID
5. Пакеты от клиетна серверу (Game Server)
00 - ProtocolVersion
01 - MoveBackwardToLocation
02 - Say
03 - EnterWorld
04 - Action
08 - AuthLogin
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'
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
AС - RequestRecipeBookOpen
B9 - RequestEvaluate
BA - RequestHennaList
BB - RequestHennaItemInfo
BС - RequestHennaEquip
C1 - RequestMakeMacro
C2 - RequestDeleteMacro
CF - RequestAutoSoulShot
В0:10 - RequestExPledgeCrestLarge
В0: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
Назначение: пакет, который отсылается клиентом при нажатии на кномпку "Start" в меню выбора чара
Формат:
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 - клик с зажатым шифтом
AuthLogin
Назначение: запрос авторизации на game сервере
Формат:
08
XX XX XX XX 00 00 // строка содержащая login
XX XX XX XX // session key #1(дается логин сервером)
XX XX XX XX // session key #2(дается логин сервером)
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
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С
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 - выключить
RequestExPledgeCrestLarge
Назначение: запросить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) клана
Формат:
D0
10
XX XX XX XX // ID иконки
RequestExSetPledgeCrestLarge
Назначение: отправить данные изображения большой иконки клана(те что размещаються на вещах клана типа щитов) на сервер
Формат:
D0
11
XX XX XX XX // размер данных
// <<<<< Следующий блок повторяется столько раз, сколько байт в данных изображения
XX // данные изображения
RequestChangePartyLeader
Назначение: передает лидерство в пати
Формат:
EE
XX XX XX XX 00 00 // строка с именем чара, которому передается лидерство