PDA

Просмотр полной версии : Обьясните новичку


RedSkyShamrik
18.07.2009, 07:52
Доброго времени суток.
Постигая азы L2PacketHack столкнулся с одной проблеммой -
у меня есть 3 пакета, которые посылает клиент, мне нужно зацыклить их, чтобы они отправлялись поочереди, с определённым интервалом. Тоисть выглядит это так - 1-ый пакет отсылается, идёт задержка в 10 секунд потом отсылается пакет номер 2, снова задержка и отсылается пакет номер 3 и цыкл начинался сначала, с первого пакета.
Заранее благодарю за помощь.

8tomat8
18.07.2009, 12:33
Напиши скрипт с использованием таймера

RedSkyShamrik
18.07.2009, 12:35
Напиши скрипт с использованием таймера

Дай плз ссылку на инфу, не владею навыками написания скриптов под l2ph, готовые смотрел, нечего не понял. На Валкер с закрытыми глазами пишу) но тут другие команды и условия написания

8tomat8
18.07.2009, 12:43
юзай поиск по форуму тут есть

RedSkyShamrik
18.07.2009, 19:49
Нашол горы флуда, но полезного практически нечего, если не трудно, помогите с скриптом. Не верю что алгоритм, отсылающий 3 пакета поочереди с определённым интервалом, так сложен в написании. Покамисть самому знания l2ph не позволяют

Fer123
18.07.2009, 20:16
Плохо искал...
http://coderx.ru/showpost.php?p=32764&postcount=4

RedSkyShamrik
18.07.2009, 20:51
Там лежит готовый скрипт, половину написаного не понимаю, я же писал, не знаю команды и тд, я его даже не переделаю под то что мне нада.

Добавлено через 9 минут
Попытался всё же склепать, вопрос, как мне теперь его зацыклить? чтобы по окончание всё начиналось сначала
const //обьявление констант и переменных.
Name='RedSky';
var timer:TTimer;
phase:integer;
//процедура инита вызывающаяся при "включении" скрипта
procedure Init;
begin
timer:=TTimer.Create(nil); //создаем таймер
timer.interval:=2100; //назначаем таймеру интервал
timer.OnTimer:=@fireTimer; //говорим что мы должны выполнять fireTimer при срабатывании таймера
timer.enabled:=false //включаем таймер.

phase:=1; //скидываем счетчик в 1.
end;
//высвобождение обьектов, вызывается при выключении скрипта.
procedure Free;
begin
timer.Free; //разрушене таймера.
end;
//процедура выполняющаяяся по таймеру.
procedure fireTimer(Sender: TObject);
begin
case phase of //в зависимости от значения phase выполняеться то или иное вхождение.
1:begin //код от begin и до end выполняется при phase = 1
buf:=hstr('{Первый пакет, который необходимо отослать}'); //назначить буферу значение, наш пакет.
SendToServerEx(Name); // отправить этот буффер на сервер
inc(phase); //увеличить phase на единицу (=2)
end;
procedure Init; //а это тут какого хрена забыло ?
begin //и это
timer:=TTimer.Create(nil); //....
timer.interval:=2100; //....
timer.OnTimer:=@fireTimer; //...
timer.enabled:=false //копипастер млять... одни маты...
2:begin //аналогия с предыдущим вхождением. выполняеться при phase = 1
buf:=hstr('{Второй пакет который необходимо отосалать}');
SendToServerEx(Name);
inc(phase);
end;
begin //бля.. слов нет...
timer:=TTimer.Create(nil); //бля.. слов нет... накой черт это здесь ?
timer.interval:=2100; //бля..
timer.OnTimer:=@fireTimer; //бля..
timer.enabled:=false //бля..
3:begin
buf:=hstr('{Третий пакет который необходимо отослать}');
SendToServerEx(Name);
inc(phase); //если вписать вместо этой строчки "phase := 1;" угадай что произойдет
end;
begin //нах
timer:=TTimer.Create(nil); //тудаже
timer.interval:=2100; //я бы сказал кто автор...
timer.OnTimer:=@fireTimer; //но цензуред.
timer.enabled:=false //мля
end;
end; //не хватало енда.. для процедурного бегина.
end.

Добавлено через 8 минут
Скрипт вышел полностью не рабочий, на каждом шагу ошибки синтаксиса.....
Ктото по существу поможет? или дальше будут слать - "юзай поиск" и тд...
без толковых разяснений, человеку который в этом не разбирается, нечего не понять

alexteam
18.07.2009, 21:16
Скрипт вышел полностью не рабочий, на каждом шагу ошибки синтаксиса.....
это ведь твои ошибки синтаксиса.. не так ли ?
а... к стати.. скрипт - каша. полнейшая каша.
для начала разберись что в исходном каждая строчка обозначает - а уж потом меси свое.

Добавлено через 2 минуты
и еще. исходный QaK'овский и так зациклен. лишние шаги просто убрать надо.

RedSkyShamrik
18.07.2009, 21:18
Почитай, что я писал в предыдущих постах, я в притык не понимаю что и как, говоря откровенно, я не знаю не условий написания, не команд, поэтому и обращзаюсь сюда.

klemberg
18.07.2009, 21:19
Написал специально без комментариев, чтобы жизнь малиной не казалась.
Скрипт полностью отвечает твоим условиям.

var
Z_TIMER: TTimer;
NEXT_PCK: integer;


procedure Init;
begin
Z_TIMER:=TTimer.Create(nil);
Z_TIMER.OnTimer:=@On_TIMER();
Z_TIMER.enabled:=true;
Z_TIMER.interval:=10000;

NEXT_PCK:=1;
end;


procedure Free;
begin
Z_TIMER.enabled:=false;
Z_TIMER.Free;
end;


procedure SEND_NOTICE(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(3);
WriteS('');
WriteS(msg);
SendToClientEx('Allineer');
end;


procedure On_TIMER(Sender: TObject);
begin
case NEXT_PCK of
1: begin
SEND_NOTICE('Пакет 1');
NEXT_PCK:=2;
end;
2: begin
SEND_NOTICE('Пакет 2');
NEXT_PCK:=3;
end;
3: begin
SEND_NOTICE('Пакет 3');
NEXT_PCK:=1;
end;
end;
end;


begin
end.

alexteam, камменты в коде из 7 поста ржачные)

alexteam
18.07.2009, 21:36
klemberg, видели бы вы что в лсп драйвере на момент его написания за коменты были...
там всем досталось...

Добавлено через 2 минуты
кстати
init> NEXT_PCK := 0;

и
inc(NEXT_PCK)
case NEXT_PCK of
1:......
2:......
3:.....
else
NEXT_PCK := 0;
end;
смотриццо...

klemberg
18.07.2009, 21:51
inc(NEXT_PCK)

это будет еще одна функция, которую ему прийдется учить :D
я бы вообще пакеты в массив загнал и естессно дальше с inc

alexteam
18.07.2009, 21:53
в принципе, кое кому не помешает разобраться и с массивами заодно...