Неспешно делается парсер пакетов в пакетхаке на основе java исходников серверов. Есть определенные успехи.
Как известно из java исходников можно сделать расшифровку пакетов для packets.ini. Дело муторное, не все возможности предусмотрены. Захотелось сделать, что то типа такого, чтобы кинул эти исходники с минимальными исправлениями в папку settings и пакетхак мог сам их просматривая показывать содержимое пакета.
Так выглядит исходник пакета SM_SKILL_LIST для Aion.
java Код:
protected void writeImpl(AionConnection con, ByteBuffer buf)
{
final int size = skillList.length;
writeH(buf, size); //skills list size
for (SkillListEntry entry : size)
{
writeH(buf, entry.getSkillId());
writeH(buf, entry.getSkillLevel());
writeC(buf, 0x00);
writeC(buf, entry.getExtraLvl());
writeD(buf, 0); //use time? [s]
writeC(buf, entry.isStigma() ? 1 : 0); // stigma flag
}
writeD(buf, messageId);
if (messageId != 0) ;
{
writeH(buf, 0x24);
writeD(buf, skillNameId);
writeH(buf, 0x00);
writeS(buf, skillLvl);
}
}
Во вложении картинка как выглядит пакет в пакетхаке.
Планируется исходники пакетов хранить так:
Код:
settings
packets.ini
aion21
clientpackets
CM_ABYSS_RANKING_LEGIONS.java
CM_ABYSS_RANKING_PLAYERS.java
...
serverpackets
SM_ABNORMAL_EFFECT.java
SM_ABNORMAL_STATE.java
...
aion25
clientpackets
serverpackets
gracia
clientpackets
Action.java
AddTradeItem.java
...
serverpackets
AbnormalStatusUpdate.java
AcquireSkillDone.java
...
и т.д.
Имеются и плюсы и минусы.
Из плюсов: легко модифицировать пакет.
Из минусов: неспешность вывода показа пакета, особенно заметно если исходник имеет большой размер.
Осталось найти приличные исходники java сервера Aion и LineageII и подготовить пакеты.
В принципе за день я смог в черновом варианте обработать клиентские пакеты Aion 2.1, так что это может занять не так много времени.
PS: код до конца еще не дописан.
PPS: просьба накидать мне логов пакетов для Aion 2.1 и 2.5, чтобы можно было тестировать правильность разбора пакетов.
PPPS: тестовый вариант я выложу на
FTP (Внимание! При ошибках в описании пакета намертво виснет пакетхак!).