Просмотр полной версии : Скриптинг для нуба
Ребятки, помогите с основными функциями, надо скрипт для отправки разных пакетов через разные промежутки времени, замкнутый в цыкл.
Как я понял,
buf:=hstr('пакет');
SendToServerEx(Name);
в скрипте отправляет "пакет" на сервер.
Помогите теперь разобраться, как выставить задержку в 10 секунд между, например
buf:=hstr('пакет№1');
SendToServerEx(Name);
и
buf:=hstr('пакет№2');
SendToServerEx(Name);
и замкнуть ето в цыкл.
Пытался, как в паскале, зделать цыкл через Label's :D ничего не вышло)
И с таймером не могу разобраться, phx не читает такую команду как delay()?
Заранее спасибо!
Алексей,Я же тебе и ссылку дал и скрипт поправил, что ты еще хочешь? Если хочешь разобраться, что как работает - ищи книжку по паскалю/основам дельфы.
alexteam
15.07.2009, 16:47
таймер + счетчик + case
delay ( он же sleep) не рекомендуется к использованию.
Если бы я делал ето в обычном паскале, ето бы имело следующий вид:
Label l1;
Begin
l1:
buf:=hstr('1');
SendToserverEx(name);
Delay(10000);
buf:=hstr('2');
SendToserverEx(name);
Delay(500);
buf:=hstr('2');
SendToserverEx(name);
Delay(500);buf:=hstr('2');
SendToserverEx(name);
Delay(500);
buf:=hstr('3');
SendToserverEx(name);
Delay(10000);
buf:=hstr('2');
SendToserverEx(name);
Delay(500);buf:=hstr('2');
SendToserverEx(name);
Delay(500);buf:=hstr('2');
SendToserverEx(name);
Delay(500);
Goto l1;
end.
Если не трудно, напишыте как ето должно выглядеть под phx
Книжку я обязательно прочитаю, но мне кажеться что для создания такого простого скрипта ето делать не обязательно, а смотря на
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer;
timer1.enabled:=true;
timer1.interval:=10000;
Просто ни.у. не понимаю :(
В твоем скрипте нельзя ставить разное время задержки между разными пакетами
Неужели вам легче посылать на разные темки форума, чем написать 2-3 команды?
Неужели вам легче посылать на разные темки форума, чем написать 2-3 команды?неужели тебе легче донимать всех вопросом, чем просто почитать теорию и самому во всем разобраться. Мой стрипт поправить - будут разные задержки между отправкой.
ну а как менять задержку?)
Приведи пример на своем же скрипте :good:
Алексей, объясняю, в л2пх то что находится в основной части скрипта проходит 1 раз при проходе одного пакета от клиента либо сервера, поэтому нежелательно там использовать Delay, т.к. следующий пакет л2пх уже не пропустит пока не обработает твой код и не выдержет все твои Delay, и уж темболее, если ты зациклишь этот код, то вообще последующие пакеты от сервера и клиента никуда не дойдут, посему следует использовать таймер
Все било б очень просто, если б работали функции Sleep() и Delay(), но нет =(((
п.с. мну опередили, прочетал то что више, ети функции не помогли б =(
пока что рабочая програма имеет такой вид :
const
Name='name';
var
timer1: TTimer;
procedure Init;
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=true;
timer1.interval:=10000;
end;
procedure OnTimer1(Sender: TObject);
begin
buf:=hstr('2F 89 05 00 00 00 00 00 00 00 ');
SendToServerEx(Name);
end;
procedure Free;
begin
timer1.Free;
end;
begin
end.
воть, но как ее переделать так чтоб шло:
1) пакет №1
2)ждем 10 сек
3)пакет № 2 три раза через 0,3 сек
4)обратно к пункту 1
попиталса вставить еще 1 таймер аналогично 1му, не работает, хз почему =((
Delay блокирует прохождение всех пакетов от сервера и клиента о.О?
const
Name='ххххх';
var
timer1: TTimer;
x: integer;
procedure OnTimer1(Sender: TObject);
begin
case x of
0: begin
timer1.interval := интервал_через_который_будет_отослан_первый_пакет;
end;
1: begin
buf:=hstr('пакет №1');
SendToServerEx(Name);
timer1.interval := интервал_через_который_будет_отослан_второй_пакет;
end;
2: begin
buf:=hstr('пакет №2');
SendToServerEx(Name);
timer1.interval := интервал_через_который_будет_отослан_третий_пакет;
end;
3: begin
buf:=hstr('пакет №3');
SendToServerEx(Name);
end;
else
begin
timer1.enabled := false;
x := 0;
end;
end;
inc(x);
end;
//************************************************** ****************************
// Вызывается при включении скрипта
//************************************************** ****************************
procedure Init;
begin
x := 0;
timer1:=TTimer.Create(nil);//выделяем памать и т.п.
timer1.OnTimer:=@OnTimer1;//привязываем процедуру к событию
timer1.enabled:=true;//начальное положение true-включен/false-выключен
timer1.interval:=1;//интервал
end;
procedure Free;
begin
timer1.free;
end;
begin
end.
//alexteam: поправил.. малех..
Алексей, timer1.interval:={сюда пишешь величину паузы в милисекундах};
Погуглить не судьба?
AlbeNeC, остальное сам правь,если кто попросит меня еще что-то в этом скрипте исправить, не являющееся конструктивной доработкой по моему субъективному мнению - дам бан, 7 дней.
Добавлено через 2 минуты
const
Name='nick';
var timer:TTimer;
phase:integer;
procedure Init;
begin
timer:=TTimer.Create(nil);
timer.interval:=100;
timer.OnTimer:=@fireTimer;
timer.enabled:=false;//изначально таймер выключен
phase:=1;//начальная фаза
end;
procedure Free;
begin
timer.Free;
end;
procedure fireTimer(Sender: TObject);
begin
case phase of
1:begin
buf:=hstr('{здесь пакет на таргет гмшопа}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
2:begin
buf:=hstr('{здесь пакет на второй таргет гмшопа}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
3:begin
buf:=hstr('{здесь пакет на выбор магазина}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
4:begin
buf:=hstr('{здесь пакет на покупку нужного кол-ва итемов}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
5:begin
buf:=hstr('{здесь пакет на таргет гк}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
6:begin
buf:=hstr('{здесь пакет на второй таргет гк}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
7:begin
buf:=hstr('{здесь пакет на выбор магазина}');
SendToServerEx(Name);
inc(phase);
timer1.interval:=1000;//1 секунда
end;
8:begin
buf:=hstr('{здесь пакет на обмен}');
SendToServerEx(Name);
phase:=1;//вернулись к началу
timer1.interval:=1000;//1 секунда
end;
end;
end;
begin
if FromClient and (ConnectName=Name) and (pck = HStr('{здесь пакет на старт точки, например социальное действие}' )) then begin
timer.enabled:=true;
end;
if FromClient and (ConnectName=Name) and (pck = HStr('{здесь пакет на стоп точки, например социальное действие}' )) then begin
timer.enabled:=false;
end;
end.
спасибо =)))
поправил код, теперь работает ;)
жмакнул "спасибки"
п.с. у тебя в коде есть ошибка, найди сам :p
tiranosaur
07.12.2009, 21:57
А как сделать проверку таймера? типа if (таймер включен) then exit; else then begin (Действие)?
alexteam
07.12.2009, 22:00
if timer.enabled then .... else ....
tiranosaur
15.12.2009, 09:41
Если timer1.interval=1000 то сколько это секунд? Написано вроде 1 но если выставляешь значение 50к то получается почти 2ве минуты
alexteam
15.12.2009, 11:35
50к = 50 сек.
прошу помоч мне :(
const
name='ктоКидает';
name2='камуКидают';
var
timer1: TTimer;
x: integer;
procedure OnTimer1(Sender: TObject);
begin
begin
buf:=hstr('42');
writeS(name2);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(name);
end;
inc(x);
end;
procedure Init;
begin
x := 0;
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=true;
timer1.interval:=3000;
end;
procedure Free;
begin
timer1.free;
end;
begin
end.
суть в том чтобы сделать раздачу пати бд свс пп коту или каму угодно. чтобы бд свс бафали каждые 2 минуты с разничей в бафе в 5 секунд. и пп с котом когда угодно.
пытался скрипт на бд свс сделать неполучаеться. либо бд свс одновременно бафают либо вообще нечего хорошего. пробовал запускать с разных скриптов бд свс, окно уходило в дисконект.
помогите плиз
Добавлено через 1 час 23 минуты
const
name='ктоКидает';
name2='бд';
name3='свс';
var
timer1: TTimer;
x: integer;
procedure OnTimer1(Sender: TObject);
begin
case x of
1:begin
buf:=hstr('42');
writeS(name2);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(name);
timer1.interval := 5000
end;
2:begin
buf:=hstr('42');
writeS(name3);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(name);
end;
end;
inc(x);
end;
//************************************************** ****************************
// Вызывается при включении скрипта
//************************************************** ****************************
procedure Init;
begin
x := 0;
timer1:=TTimer.Create(nil);//выделяем памать и т.п.
timer1.OnTimer:=@OnTimer1;//привязываем процедуру к событию
timer1.enabled:=true;//начальное положение true-включен/false-выключен
timer1.interval:=125000;//интервал
end;
begin
end.
нипонимаю почему ниработает
UseForConnectName не прописан
QaK пасиб. прописал. но скрипт всё равно работает ни как как я хочу. цыкл в нём неработает. каждые 2 минуты надо посылать два пакета
Добавлено через 4 часа 33 минуты
понял свои ошибки. подправьте если коряво. щас попробую впихнуть кота не в цикл
const
name='ктоКидает';
name2='бд';
name3='свс';
var
timer1: TTimer;
x: integer;
procedure OnTimer1(Sender: TObject);
begin
case x of
1:begin
buf:=hstr('42');
writeS(name2);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(name);
inc(x);
timer1.interval := 5000;
end;
2:begin
buf:=hstr('42');
writeS(name3);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(name);
timer1.interval := 125000;
x:=1;
end;
end;
end;
//************************************************** ****************************
// Вызывается при включении скрипта
//************************************************** ****************************
procedure Init;
begin
UseForConnectName:='ктоКидает';
timer1:=TTimer.Create(nil);//выделяем памать и т.п.
timer1.OnTimer:=@OnTimer1;//привязываем процедуру к событию
timer1.enabled:=true;//начальное положение true-включен/false-выключен
timer1.interval:=1000;//интервал
x := 1;
end;
procedure Free;
begin
timer1.free;
end;
begin
end.
UseForConnectName(name); так правельнее будет? через постоянные
Добавлено через 20 часов 45 минут
прошу помоч со скриптом AutoBD_SVS by Ad переделать его для кота.
DpblH, попробуй сделать старт таймера по тексту в чате или по социальному действию.
QaK, вырезать кусок из другого скрипта мне несложно:) но мне это ненадо. мая задача валкер + пнх полный автомат. кач чара офф пати.
мне интересно можно ли настроить баф кота по типу скрипта от AD!
и непроверял работает ли скрипт после релога валкера, и если неработает то сразу вопрос. можно ли сделать чтобы посли релога скрипт продолжал работать?
и хотелось бы узнать по подробнее о том какие пакеты можно пропускать на сервер а какие нет
можно ли сделать чтобы посли релога скрипт продолжал работать?
чар появился . другим приходит пакет
31=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e)d(Race)d(
TAMBIK, хз канешно, но у меня скрипты продолжили работать и без 31=CharInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Nam e)d(Race)d(. еси использовать эту проверку то в какую часть скрипта её ставить?
и ещё вопрос. как настроить wss + wpf + l2walker чтобы он работал с пнх.
было бы ничего еси бы бот от хкора неспамил в общий чат ау :)))) но он спамит, так что решил побегать через wss, но при включеном пнх бот нехочет запускаться
как настроить wss + wpf + l2walker чтобы он работал с пнх.а вы говорите - гланды через жопу ....
а вы говорите - гланды через жопу ....
:)))) а чего так?:D
DpblH, нафигища тебе связка wss+wpf+phx+walker? ИМХО или wss+wpf или phx ...
QaK
опачки. тупанул. тока вот всё адно. как настроить валкер и пнх?
С НОВЫМ ГОДОМ!!!! :)
а с помощью каких команд можно сделать проверку на наличие данных персонажий в данном радиусе?
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot