Показать сообщение отдельно
Старый 17.05.2011, 21:14   #1711
Новичок
 
Регистрация: 09.01.2011
Сообщений: 5
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Velizarx пока неопределено
По умолчанию

Это печать сообщения, с вашего форума:
Код:
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;
Это недоделка для автохаванья ЦП банок, пока только по таймеру выводит надпись "Съел ЦП баночку)"

Последний раз редактировалось Velizarx, 17.05.2011 в 21:19.
Velizarx вне форума   Ответить с цитированием