Просмотр полной версии : Задержка между отправкой
Здрасти всем. У меня такая проблема: на сервере где я играю стоит защита от флуда пакетами. При отправки нескольких пакетов из раздела "Посылка" отправляется только первый пакет. Таким образом в моем случае невозможно нормально сдать манор, приходиться забивать несколько пакетов на отправку ставить "автоматическое отправление по таймеру" и быстро удалять один за другим пакеты когда началась сдача манора. Всвязи с этим очень хотелось бы получить помошь в написании скрипта на отправку пакетов с задержкой.
Так как я к сожалению не знаю язык написания скриптов то могу только предположить как будет выглядить скрипт.
начало
отправка пакета
задержка
отправка пакета 1
задержка
.....
....
в начало.
Хотелось бы что бы скрипт отправлял пакеты с задержкой и при окончание начинал все заного.
Очень разчитываю на вашу помощь.
Используйте таймер
http://coderx.ru/showpost.php?p=30293&postcount=404
Правильную ссылку уже дали, от себя немного дополню:
procedure onTimerItemSelect(Sender: TObject);
begin
case TimerCycle of
1:begin
отправка пакета 1;
Inc(TimerCycle);
Exit;
end;
2:begin
отправка пакета 2;
Inc(TimerCycle);
Exit;
end;
3:begin
отправка пакета 3;
Inc(TimerCycle);
Exit;
end;
end;
end;
Это если интервал между пактами нужен одинаковый и пакетов несколько и разных.
Это если интервал между пактами нужен одинаковый и пакетов несколько и разных.
Абсолютно верно.
procedure Init;
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=true; //начальное положение включен(true)/выключен(false)
Timer01.interval:=500; //интервал(в милисекундах) как часто таймер срабатывает
end;
procedure onTimerItemSelect(Sender: TObject);
begin
case TimerCycle of
1:begin
buf:=hstr('1');
SendToServer;
Inc(TimerCycle);
Exit;
end;
2:begin
buf:=hstr('2');
SendToServer;
Inc(TimerCycle);
Exit;
end;
3:begin
buf:=hstr('3');
SendToServer;
Inc(TimerCycle);
Exit;
end;
end;
end;
Ругается на конец скрипта, пишет "Ошибка 'BEGIN' expected"
Ошибки:
1) Не объявлена переменная TimerCycle
2) Не задано начальное значение переменной TimerCycle
3) Отсутствует главный блок begin end
4) После последнего end нету точки
5) Процедура onTimerItemSelect не привязана к таймеру
6) Нету процедуры Timer01.Free; при выключении скрипта (не знаю обязательная ли она, надо уточнить у алекстим)
PS: пока писал где ошиблись вы уже отредактировали свой пост :)
Ошибки:
1) Не объявлена переменная TimerCycle
2) Не задано начальное значение переменной TimerCycle
3) Отсутствует главный блок begin end
4) После последнего end нету точки
5) Процедура onTimerItemSelect не привязана к таймеру
6) Нету процедуры Timer01.Free; при выключении скрипта (не знаю обязательная ли она, надо уточнить у алекстим)
PS: пока писал где ошиблись вы уже отредактировали свой пост :)
Извините конечно но я ничего не понял :) Я в этом полный новичек и пока носом не ткнеш не пойму...
Разве что ткнуть носом в учебник :)
http://coderx.ru/showpost.php?p=46&postcount=1
Это нужно тогда во всем с нуля разбиратся а это времени не 10 минут нужно, а я только попросил написать скрипт умеющих это делать людей :) мне кажется он не должен много времени у них занять :)
На форуме запрещено просить готовые скрипты, а в первом посте вы просили только помощи. Скрипт что вам нужен можно за 3 минуты написать, но я такая сволочь что не дам готового скрипта :)
Начало уже положено, еше несколько подсказок и может сам допетрю как и чего (хотя сомневаюсь) :)
var kernel32:integer;
procedure Init; //Вызывается при включении скрипта
begin
kernel32 := loadLibrary('kernel32.dll');
CallFunction(kernel32,'Sleep',1,[5000]); //Задержка на 5000 мсек
end;
begin
end.
Интересно как будет вести себя эта функция. Не будет ли тормозит обработку новых пакетов как Delay()?
var kernel32:integer;
procedure Init; //Вызывается при включении скрипта
begin
kernel32 := loadLibrary('kernel32.dll');
CallFunction(kernel32,'Sleep',1,[5000]); //Задержка на 5000 мсек
end;
begin
end.
Интересно как будет вести себя эта функция. Не будет ли тормозит обработку новых пакетов как Delay()?
проверил, также как Delay приостанавливает обработку.
Да, delay и sleep в дельфи ПОЛНОСТЬЮ останавливает ("замораживает") работу приложения на данный временной промежуток
Интересно в скриптах хлапа потоки можно юзать?)
Да, delay и sleep в дельфи ПОЛНОСТЬЮ останавливает ("замораживает") работу приложения на данный временной промежуток
Интересно в скриптах хлапа потоки можно юзать?)
Потоки можно юзать и ПХ, их можно без проблем реализовать в плагинах. :)
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot