тебе нужео что бы 3 действия выполнились не сразу, а через определенный, равный промежуток времени и лишь 1 раз? Если да, то убери в кейсах изменение интервала, достаточно того что ты увеличиваешь step. Если надо, могу пояснить, но это если я тебя правильно понял )
ну это просто вырезка! так нужно на каждую поцедуру кейз писать?
Добавлено через 4 часа 52 минуты
спасибо вам! разобрался
я вот кое-что хочу сделать. в общем на клиент идет пакет когда рядом враг, ну как рядом, в зоне видимости, это 100м помоему, ну не важно.
в общем словил всего лишь один пакет, так как сложно найти противника так, чтоб он тебя не убил и еще найти пакет его в общем разбирал пакет всю ночь, увидел там ник врага, название его легиона и хочу сделать, чтоб мне это посылалось в чат, то есть его инфа, но я для этого наверно еще слишком тупой
посоветуйте как лучше сделать. я не совсем дружу с командами Read. там так много байтов, что не знаю какой именно рид писать.
это такой разрыв мозга посоветуйте что нибудь...
я так подумал и решил, что во первых надо разбирать пакет каким то образом по разным частям, много переменных делать как минимум на имя перса, его лег, еще хочу его лвл найти и т.д., сложно в таком огромном кол-ве байтов что-то найти
Последний раз редактировалось Deffol, 26.06.2011 в 07:21.
Причина: Добавлено сообщение
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.
спасибо, это очень поможет...буду разбираться, на счет структуры, думаю она должна быть одинакова, я сравнивал 3 пакета, если ник меньше, то до названия легиона идут 00 до определенного байта.
а вот еще хотел спросить на счет x,y,z я где-то видел, что их не интежером обзывали, а real, почему?