
Небольшое пояснение по пакетам клиента Lineage II Interlude для тех, кто только начинает разбираться в протоколе.
В этом списке приведены клиентские пакеты, которые отправляются от клиента к серверу при действиях игрока — клики по NPC, атака, использование предметов, чат, торговля и т.д. Каждый пакет начинается с opcode (первый байт), который говорит серверу, какое именно действие выполняется.
Дальше идут параметры пакета — обычно это 4-байтовые значения (int), координаты, ID объектов или Unicode-строки. Все данные передаются в little-endian формате.
Пример логики:
• <span>Action (04)</span> — отправляется при клике по объекту. Клиент передает ID цели и координаты.
• <span>AttackRequest (0A)</span> — запрос на атаку цели.
• <span>UseItem (14)</span> — использование предмета по его ObjectID.
• <span>Say2 (38)</span> — чат-сообщение с указанием канала.
• <span>RequestMagicSkillUse (2F)</span> — использование умения с флагами Ctrl/Shift.
Важно понимать разницу:
Unicode-строки в пакетах обычно заканчиваются <span>00 00</span>.
Большой пакет <span>UserInfo</span> — это уже серверный ответ с полной информацией о персонаже: координаты, характеристики, экипировка, клановые данные, статус и прочее. Его используют для синхронизации состояния персонажа.
Зачем это нужно:
✔ разработка серверов/эмуляторов
✔ анализ сетевого протокола
✔ написание инструментов и дебаг
✔ понимание клиент-серверного взаимодействия
Если вы изучаете протокол — начинайте с простых пакетов (Action, UseItem, Say2), перехватывайте трафик и сравнивайте реальные данные с описанием. Это сильно ускоряет понимание структуры.
Пакеты Interlude
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 - клик с зажатым шифтом
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 нажат
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 - бег включен
--------------------------------------------------------------------------------
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 - клик с зажатым шифтом
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 нажат
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 - бег включен
--------------------------------------------------------------------------------
Last edited: