PDA

Просмотр полной версии : Не работает таймер


semiromid
29.03.2014, 17:34
Здравствуйте ув. программисты . Сутки уже сижу не могу разобраться почему не хочет работать таймер.

var
Timer01: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=true; //начальное положение включен(true)/выключен(false)
Timer01.interval:=2000; //интервал(в милисекундах) как часто таймер срабатывает
end;

procedure OnTimer01(Sender: TObject);
begin
buf:=HStr('39 04 00 00 00 00 00 00 00 00');
SendToServer;
end;

procedure Free; //Вызывается при выключении скрипта
begin
Timer01.free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck=HStr('56 18 00 00 00 00 00 00 00 00')) then
begin
buf:=HStr('19 B6 C6 A4 40 00 00 00 00');
SendToServer;
Timer01.enabled:=true;
end
end.
Должно работать следующим образом : При приходе пакета "56" , скрипт отправит пакет "19". Это условие выполняется , а дальше нет. После отправки "19" пакета скрипт включает таймер Timer01.enabled:=true; после включения таймера скрипт должен отправить "39" пакет на сервер , но не отправляет его .

kpa9pt
29.03.2014, 17:42
Здравствуйте ув. программисты . Сутки уже сижу не могу разобраться почему не хочет работать таймер.

var
Timer01: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=true; //начальное положение включен(true)/выключен(false)
Timer01.interval:=2000; //интервал(в милисекундах) как часто таймер срабатывает
end;

procedure OnTimer01(Sender: TObject);
begin
buf:=HStr('39 04 00 00 00 00 00 00 00 00');
SendToServer;
end;

procedure Free; //Вызывается при выключении скрипта
begin
Timer01.free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck=HStr('56 18 00 00 00 00 00 00 00 00')) then
begin
buf:=HStr('19 B6 C6 A4 40 00 00 00 00');
SendToServer;
Timer01.enabled:=true;
end
end.
Должно работать следующим образом : При приходе пакета "56" , скрипт отправит пакет "19". Это условие выполняется , а дальше нет. После отправки "19" пакета скрипт включает таймер Timer01.enabled:=true; после включения таймера скрипт должен отправить "39" пакет на сервер , но не отправляет его .

Может изначально таймер отключить для начала?

semiromid
29.03.2014, 17:45
Может изначально таймер отключить для начала?
Да-да , он был изначально отключен , просто уже экспериментирую как могу ).

kpa9pt
29.03.2014, 17:58
Да-да , он был изначально отключен , просто уже экспериментирую как могу ).

Такс, только что сделал у себя также, ммм таймер в порядке не работает отправка sendtoserver, я сделал sendtoserverex(name) где name имя персонажа тобишь героя на котором соединение, и заработало

тобиш надо так


var
Timer01: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=true; //начальное положение включен(true)/выключен(false)
Timer01.interval:=2000; //интервал(в милисекундах) как часто таймер срабатывает
end;

procedure OnTimer01(Sender: TObject);
begin
buf:=HStr('39 04 00 00 00 00 00 00 00 00');
SendToServerex('name');
end;

procedure Free; //Вызывается при выключении скрипта
begin
Timer01.free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromClient and (pck=HStr('56 18 00 00 00 00 00 00 00 00')) then
begin
buf:=HStr('19 B6 C6 A4 40 00 00 00 00');
SendToServer;
Timer01.enabled:=true;
end
end.


не забудь поменять name на ник

semiromid
29.03.2014, 18:01
Оо спасибо большое )