Вход

Просмотр полной версии : Есть где-нить описание пакетов?


glukmaker
01.02.2013, 14:27
Часть информации по пакетам нашел в инете, часть из файла packetsc4.ini от l2phx
но по названию пакетов не всегда можно понять смысл пакета. Особенно если нужно найти в каком пакете передается нужная мне информация.
есть ли у кого перечень пакетов с краткой информацией на русском языке о назначении данного пакета? Или где можно глянуть?

Sherman
01.02.2013, 14:29
Они же по тупому названы, достаточно слегка знать английский.

glukmaker
01.02.2013, 15:31
Они же по тупому названы, достаточно слегка знать английский.

да, но вот например понадобилась мне информация кто поднял предмет, а не могу найти какой пакет за это отвечает.

Sherman
01.02.2013, 15:41
да, но вот например понадобилась мне информация кто поднял предмет, а не могу найти какой пакет за это отвечает.

64=SystemMessage:d(MsgID)d(typesCount)

Где MsgID или 1533 или 1534

А вообще пример неудачный )

glukmaker
01.02.2013, 15:46
64=SystemMessage:d(MsgID)d(typesCount)

Где MsgID или 1533 или 1534

А вообще пример неудачный )

Спасибо, но пока не совсем ясно...
если перс поднял предмет, то как узнать имя (или ID) перса и название или (ID предмета)?

Sherman
01.02.2013, 15:50
Вообще для этого лучше всего скачать любой исходник Java сервера ладвы и посмотреть в коде как формируется пакет SystemMessage для этих MsgID.

Вообще с поднятием предмета не так все просто. Там череда пакетов идет.
DeleteObject, SystemMessage, мб следом прилетает CharInfo того кто поднял.

SystemMessage для MsgID=1534 получается примерно такой:
1. MsgID (1534)
2. КоличествоПараметров (3)
3. ID чара который поднял
4. ObjID предмета который подняли
5. Количество предметов которые подняли

Для MsgID=1533:
1. MsgID (1533)
2. КоличествоПараметров (2)
3. ID чара который поднял
4. ObjID предмета который подняли


Имя чара по ID в пакетхаке можно получить лишь ведя список всех чаров которые рядом, и поиском по ID в этом списке.
Либо если ты свой иньект делаешь, то вызвав метод клиента отвечающий за получение имени по ID.

glukmaker
01.02.2013, 16:59
Вообще для этого лучше всего скачать любой исходник Java сервера ладвы и посмотреть в коде как формируется пакет SystemMessage для этих MsgID.

Вообще с поднятием предмета не так все просто. Там череда пакетов идет.
DeleteObject, SystemMessage, мб следом прилетает CharInfo того кто поднял.

SystemMessage для MsgID=1534 получается примерно такой:
1. MsgID (1534)
2. КоличествоПараметров (3)
3. ID чара который поднял
4. ObjID предмета который подняли
5. Количество предметов которые подняли

Для MsgID=1533:
1. MsgID (1533)
2. КоличествоПараметров (2)
3. ID чара который поднял
4. ObjID предмета который подняли


Имя чара по ID в пакетхаке можно получить лишь ведя список всех чаров которые рядом, и поиском по ID в этом списке.
Либо если ты свой иньект делаешь, то вызвав метод клиента отвечающий за получение имени по ID.

О. То что нужно... буду пробовать...

ЗЫ. Я не делаю инъект и не использую пакетхак.
Просто пишу компонент для Дельфи с помощью которого можно конектиться и обмениваться инфой с сервером...
Компонент выполняет авторизацию на сервере, формирование пакетов для сервера, распознавание пакетов с сервера.
А работа с компонентом ведется с помощью методов и событий.
Пока по мере возможности добавляю туда новые пакеты.
Но уже кое-что можно делать используя этот компонент...
А что касается поиска имени перса по ид, то вот как раз планирую прикрутить к компоненту еще некое хранилище данных по объектам находящимся в зоне видимости.

Sherman
01.02.2013, 17:34
Зачем компонент? Просто что бы руки занять? Его использовать будут чуть менее чем ты один.

Так то у меня например есть на дельфи проектик который логинился, подключался к ГС и снифил пакеты, отвечая на NetPing сервера. Но компонент делать для этого помоему перебор. Вполне себе офф-лайн бот без функционала.

glukmaker
01.02.2013, 18:07
Ну просто захотелось компонент написать...
да и самому потом будет проще. любого бота можно будет за короткое время наваять...

ну да ладно...

а вот насчет пакета 64 пробовал... ничего не получилось...
Решил посмотреть что там в пакете...
выкинул и поднял ДК боты персонажем с именем Avel
Получил вот это:
21 00 64 FD 05 00 00 02 00 00 00 00 00 00 00 41 | ! . d э . . . . . . . . . . . A
00 76 00 65 00 6C 00 00 00 03 00 00 00 93 16 00 | . v . e . l . . . . . . . “ . .
00 | .

Получается в пакете уже есть имя перса.


Значит:
21 00 - длина
64 - тип пакета
FD 05 00 00 - 1533 вобщем то что ожидалось
02 00 00 00 - 2 (чего 2? параметра? но их же больше!!!)
00 00 00 00 - хз что это
41 00 76 00 65 00 6C 00 00 00 - Avel (имя перса с нуль-терминатором)
03 00 00 00 - тоже хз что это
93 16 00 00 - 5779 (совпадает с ID Dark Crystal Boots Robe)

что за непонятные данные?

Sherman
01.02.2013, 18:30
Значит:
21 00 - длина
64 - тип пакета
FD 05 00 00 - 1533 вобщем то что ожидалось
02 00 00 00 - 2 (чего 2? параметра? но их же больше!!!)
00 00 00 00 - хз что это
41 00 76 00 65 00 6C 00 00 00 - Avel (имя перса с нуль-терминатором)
03 00 00 00 - тоже хз что это
93 16 00 00 - 5779 (совпадает с ID Dark Crystal Boots Robe)

что за непонятные данные?

21 00 - длина
64 - тип пакета
FD 05 00 00 - ID сообщения = ATTENTION_S1_PICKED_UP_S2(1533)
02 00 00 00 - В сообщении 2 параметра
00 00 00 00 - Тип параметра TYPE_TEXT = 0;
41 00 76 00 65 00 6C 00 00 00 - Собственно текст (В нашем случае имя персонажа)
03 00 00 00 - Тип параметра TYPE_ITEM_NAME = 3
93 16 00 00 - ID шмотки

Т.е. каждому параметру в сообщении предшествует DWORD - тип параметра.

Пуф (http://svn2.assembla.com/svn/l2j-umbrella/trunk/L2_UmbrellaGS_CT2_2/src/main/java/net/sf/l2j/gameserver/network/serverpackets/SystemMessage.java)
Только по ссылке ID у пакета уже 62, хроники другие.

ф-ция формирования пакета protected final void writeImpl()

glukmaker
01.02.2013, 18:39
Вот еще: выкинул и поднял арку точенную на +4
29 00 64 FE 05 00 00 03 00 00 00 00 00 00 00 41 | ) . d ю . . . . . . . . . . . A
00 76 00 65 00 6C 00 00 00 01 00 00 00 04 00 00 | . v . e . l . . . . . . . . . .
00 03 00 00 00 D0 19 00 00 | . . . . . Р . . .


29 00 - размер пакета
64 - тип пакета
FE 05 00 00 - те же самые 1533
03 00 00 00 - а тут уже 3 (получается что данные о заточке если заточки нет не передаются)
00 00 00 00 - та же непонятная хрень
41 00 76 00 65 00 6C 00 00 00 - имя персонажа
01 00 00 00 - непонятно что
04 00 00 00 - возможно уровень заточки
03 00 00 00 - опять хз что
D0 19 00 00 - 6608 (id Arcana Mace Acumen)

Добавлено через 1 минуту

Т.е. каждому параметру в сообщении предшествует DWORD - тип параметра.



Ага, вот оно что... Теперь ясно...

Sherman
01.02.2013, 18:46
00 00 00 00 TYPE_TEXT = 0;
....
01 00 00 00 TYPE_NUMBER = 1;
04 00 00 00 Да, для стаковых это количество, для нестаковых - уровень заточки
03 00 00 00 TYPE_ITEM_NAME = 3;