Это печать сообщения, с вашего форума:
Код:
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEx(Name);
end;
Без этой функции в процедуре Инит тоже ничего не работает, не создается экземпляр таймера. Пока обошел этот лаг написав буквальный вызов процедуры Init в основном коде обработки пакетов. При первом её вызове она выставляет параметр в труе и больше не запускается, а как быть с функцией запускаемой при остановке скрипта - Free?
Вот весь код скрипта:
Код:
const
//======================================
Name='BOPOH'; //<-----Ник Персонажа
//======================================
var
//a:integer;
//x:integer;
//MyID:string;
//y:integer;
//z:integer;
//ValidatePosition:string;
b:boolean;
InitStart:boolean;
timer:TTimer;
procedure Init; //Вызывается при включении скрипта
begin
SendMsc('Скрипт стартовал');
UseForConnectName:=Name;
timer:=TTimer.Create(nil);
timer.interval:=500; //Скорость распития ЦП в мили. сек., чем меньше число тем быстрее
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
InitStart:=true;
end;
procedure OnTimer(Sender: TObject);
begin
SendMsc('Съел ЦП баночку)');
end;
procedure SendMsc(msc:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClientEx(Name);
end;
procedure UseCP;
begin
buf:=#$19;
WriteD(268907985);
WriteD(0);
SendToServerEx(Name);
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if InitStart<>true then Init();
//Нечитаем пустые пакеты
if pck='' then exit;
//Если Имя соединения Name
//И Пакет Action от клиента то
if FromClient and (ConnectName=Name)
and (pck=hstr('49 2E 00 61 00 75 00 74 00 6F 00 63 00 70 00 00 00 00 00 00 00')) //пакет сказать в чат .autocp
then begin
if b=true then begin
b:=false;
timer.enabled:=false;
SendMsc('режим autocp выключен'); //Оповещаем юзера
end
else begin
b:=true;
timer.enabled:=true;
SendMsc('режим autocp включен'); //Оповещаем юзера
end;
pck:='';
end;
if FromServer and (ConnectName=Name) and (pck[0]='#$18') then
begin
SendMsc('Пакет пойман!');
end;
end.
procedure Free; //Вызывается при выключении скрипта
begin
timer.free;
end;
Это недоделка для автохаванья ЦП банок, пока только по таймеру выводит надпись "Съел ЦП баночку)"