Deffol, ну для начала нужно понять структуру пакета, который отвечает за то что тебе нужно. Т.е. разобрать в каком месте пакета можно найти допустим ник или лвл... Если l2phx уже показывает тебе структуру, тогда пришли ее сюда. Но, ты вроде говорил что там все плохо и структуру пакетов ты не видишь. Тогда разбирай пакет самостоятельно и пытайся выделить все части. А потом когда его разберешь, тебе нужно по количеству байт читать с пакета. Да, нужно разные переменные для себя выделять, типа ника, лвла и т.д. В общем, те, которые тебе нужно. А потом читаешь с помощью Read эти переменные. Допустим, есть у тебя пакет с такой структурой:
Name(S)ObjectID(D)Race(C)Lvl(C)x(d)y(d)z(d)
и тебе нужно из этого только имя, ObjectID и координаты. Тогда ты делаешь так:
Объявляешь нужные переменные:
var Name : string;
ObjectID : integer;
x, y, z : integer;
и потом уже где нужно ловишь пакет и считываешь через Read'ы:
pos := 2; //пропускаешь тип пакета (я только не знаю как в аионе, в ла2 это 1 байт обычно)
Name := ReadS(pos);
ObjectID := ReadD(pos);
pos := pos + 2;// пропускаем 2 байта Race(C)Lvl(C)
x := ReadD(pos);
y := ReadD(pos);
z := ReadD(pos);
Для справки:
C - 1 байт
D - 4 байта
S - строка (не фиксированное кол-во байт)
Надеюсь ты уловил мою мысль =)
P.S. Когда будешь получать структуру пакета, можешь даже не полностью ее получать, а выделить только то, что тебе нужно, главное что бы это нужное всегда было на том месте, с которого ты можешь определить программно. Допустим в моем примере ты мог получить структуру:
Name(S)ObjectID(D)??(2 байта)x(d)y(d)z(d)
И в этом случае мой пример все равно работает, потому что на эти неизвестные 2 байта я смещаюсь и это количество никогда не измениться.
Последний раз редактировалось Kilatif, 26.06.2011 в 17:40.
|