Приветствую! решил написать скрипт на автоматическую посылку в чат, например в мировой, на продажу или покупку ( на ваше усмотрение ).
Теперь внимательно: скрипт будет не полный, остальные части вы должны будете доделать сами, я постараюсь доходчиво объяснить.
Первое, что нам понадобится это - присвоить имя нашему соеденению.
Это очень легко делается:
Разворачиваем пнх ( L2ph ), во вкладке: "Дополнительно" пишем такое:
Код:
begin
SetName('Ваш ник');
end.
И нажимаем: "Выполнить скрипт".
[Ссылки могут видеть только зарегистрированные пользователи. ]
Далее идем в раздел "Автоматизация" --> "Скрипты". ( Ctrl + E )
Создаем скрипт и пишем там такое:
Код:
//Скрипт на сообщение в чат by CyberCryme'r
const
name='CyberCrimer';
var
Timer:TTimer;
TimerMyMsgs:byte;
procedure Init;
begin
TimerMyMsgs:=1;
Timer:=TTimer.Create(nil);
Timer.OnTimer:=@OnTimer;
Timer.enabled:=false;
Timer.interval:=1;
end;
procedure Free;
begin
Timer.free;
end;
procedure OnTimer(Sender: TObject);
begin
buf:=HStr('Вот сюда'); //Сообщение в чат
SendToServerEx(name);
Timer.interval:=120000; //Таймер посылки пакета через интервал 120000 - миллисекунд - это: 2 минуты
end;
begin
if FromClient and (pck=HStr('Вот сюда')) and (ConnectName=name) then //Пакет активирующий скрипт/таймер ( сообщение на старт )
begin
Timer.enabled:=true;
pck:='';
end;
if FromClient and (pck=HStr('Вот сюда')) and (ConnectName=name) then //Пакет дезавтивирующий скрипт/таймер ( сообщение стоп )
begin
Timer.enabled:=false;
pck:='';
end;
end.
Этот скрипт расчитан на одно сообщение в чат.
В этом скрипте как может показаться, есть лишняя глобальная переменная - это TimerMyMsgs:byte;
Но это сделано для того, что бы можно было без тотальных изменений добавить больше одного сообщения, ну об этом позже...
Теперь непосредственно расскажу про вышенаписанный скрипт, что бы он работал, для начала нужно вписать в нашей константе то имя, которое мы присвоили соеденению, оно может быть каким угодно, но должно быть одинаковым.
Прописать надо:
Код:
const
name='CyberCrimer'; //Вместо моего ника, нужное имя
После займемся вставкой наших пакетов.
Чтобы скрипт посылал сообщение, нам надо написать его в чат и словить пакет, далее вставить его:
Код:
procedure OnTimer(Sender: TObject);
begin
buf:=HStr('Вот сюда'); //Сообщение в чат
SendToServerEx(name);
end;
После нам надо словить пакеты на активацию/дезактивацию скрипта/таймера.
Вы можете ловить какие угодно пакеты: эмоций; действий; команд в чат.
Лично я выбрал команды в чат. Итак, что бы активировать скрипт нам надо словить определенный пакет, например это будет сообщение в ""общий чат"" такого вида: "/старт", пишем слово, ловим пакет и вставляем его:
Код:
begin
if FromClient and (pck=HStr('Вот сюда')) and (ConnectName=name) then //Пакет активирующий скрипт/таймер ( сообщение на старт )
begin
Timer.enabled:=true;
pck:='';
end;
Тоже самое делаем с пакетом дезактивации, пишем в ""общий чат"" слово: "/стоп", ловим пакет и вставляем его:
Код:
if FromClient and (pck=HStr('Вот сюда')) and (ConnectName=name) then //Пакет дезавтивирующий скрипт/таймер ( сообщение стоп )
begin
Timer.enabled:=false;
pck:='';
Теперь для выполнения данного скрипта нужно его отметить галочкой в списке скриптов и он автоматически скомпилируется и выполнится.
Теперь в игре пишем "/старт" в общий чат и видим, что сообщение послалось, следующее сообщение будет послано через 2 минуты, это можно изменить тут:
Код:
procedure OnTimer(Sender: TObject);
begin
buf:=HStr('Вот сюда'); //Сообщение в чат
SendToServerEx(name);
Timer.interval:=120000; //Таймер посылки пакета через интервал 120000 - миллисекунд - это: 2 минуты
end;
Там где Timer.interval:=120000; меняем 120000 на большее или меньшее время, время в миллисекундах ( 1 секунда = 1000 миллисекунд )
Перед тем как исправить обязательно снемите галочку в списке скриптов.
Добавлено через 2 минуты
Теперь сделаем 2 и больше сообщений в чат.
Для этого в самом скрипте нужно всего лишь добавить конструкцию case в процедуру таймера.
Там где у нас:
Код:
procedure OnTimer(Sender: TObject);
begin
buf:=HStr('Вот сюда'); //Сообщение в чат
SendToServerEx(name);
Timer.interval:=120000; //Таймер посылки пакета через интервал 120000 - миллисекунд - это: 2 минуты
end;
Напишем так:
Код:
procedure OnTimer(Sender: TObject);
begin
case TimerMyMsgs of
1:
begin
buf:=HStr('');
SendToServerEx(name); //первое сообщение
Inc(TimerMyMsgs);
end;
2:
begin
buf:=HStr('');
SendToServerEx(name); //второе сообщение
Inc(TimerMyMsgs);
end;
3:
begin
buf:=HStr('');
SendToServerEx(name); //третье сообщение
TimerMyMsgs:=1; //возвращает процедуру к первому действию
Timer.interval:=120000; // задает интервал между выполнением действий/посылки сообщений
end;
end;
end;
Можно делать и больше сообщений, главное чтоб вконце процедуры посылки пакета было:
Код:
Inc(TimerMyMsgs);
А в конце последнего сообщение было:
Код:
TimerMyMsgs:=1;
Timer.interval:=120000;
==================
В принципе все, надеюсь все понятно. Удачи
Последний раз редактировалось CyberCrime'r; 17.06.2011 в 16:14.
Причина: Добавлено сообщение
для тебя это геморой, для меня это дело 1й минуты...и потом чтоб не жать на эти геморойные макросы, я качаюсь бегаю, не парюсь и жду ПМов например и т.д., если тебе тема не нужна уйди из нее и не надо разводить флуд