Набор утилит для работы с пакетами.
MakePacketsIni v0.2 - для подготовки packetsX.ini из *.java файлов.
[+] обновил до версии 0.3
описание пакета берем из процедур readImpl() и writeImpl(), имена пакетов берем из packets.ini. Сами java файлы исходников пакетов должны лежать в папках script\clientpackets и script\serverpackets.
PS: допиливать packets.ini руками обязательно!
Давайте разберем как допиливать packets.ini, на примере пакета CM_CASTSPELL
Исходник
Код:
protected void readImpl() {
spellid = readH();
level = readC();
targetType = readC();
switch (targetType) {
case 0:
targetObjectId = readD();
break;
case 1:
x = readF();
y = readF();
z = readF();
break;
default:
break;
}
time = readH();
}
Кусочек
это будет
Кусочек
это будет
Кусочек
Код:
targetType = readC();
switch (targetType) {
это будет
Код:
c(targetType:switch.0.2)
где первый параметр после switch это элемент_с_которого_начинать, т.е. 0 - начать с первого
второй параметр после switch это сколько_элементов_входит, т.е. 2 - подсчитываем сколько case входит в этот switch (default не учитывать)
Кусочек
Код:
l case 0:
targetObjectId = readD();
break;
это будет
Код:
_(id:case.0.1)d(targetOID)
где _(подчерк) просто так должно быть, id просто так должно быть,
первый параметр после case это с чем идет сравнение, в нашем случае с цифрой 0 (ноль)
второй параметр после case это количество_элементов_в_блоке, в нашем случае 1 (один)
Кусочек
Код:
l case 1:
x = readF();
y = readF();
z = readF();
break;
это будет
Код:
_(id:case.1.3)n(x)n(y)n(z)
где _(подчерк) просто так должно быть, id просто так должно быть,
первый параметр после case это с чем идет сравнение, в нашем случае с цифрой 1 (один)
второй параметр после case это количество_элементов_в_блоке, в нашем случае 3 (три)
и в конце
Кусочек
это будет
В итоге получаем строку
Код:
0090=CM_CASTSPELL:c(static)h(id2)h(spellID)c(level)c(targetType:switch.0.2)_(id:case.0.1)d(targetOID)_(id:case.1.3)n(x)n(y)n(z)h(time)
Конструкция FOR по аналогии (можно глянуть описание в packetsGracia.ini). Конструкцию IF надо преобразовать в конструкцию switch, так как IF в пакетхаке не поддерживается.
PS: надеюсь понятно объяснил.