Просмотр полной версии : проблема с процедурой
Доброго времени суток тому кто читает.
Собственно проблема:
Пишу скрипт и хочу сделать чтоб при отсылке пакета на сервер(в моём случае чтото написать в чате) пакет не отсылался и слался другой (в моём случае это пакет на соц действие - сесть).
Код вот такой, часть конечно:
begin
if FromClient and (pck[1]=hstr('49')) then begin
pck:='';
buf:=hstr('56 00 00 00 00 00 00 00 00 00');
SendToServerEx(name);
end;
end.
Работает без проблем, но если я положу его в процедуру таймера(не буду писать код дело не в нём, работает если под таймер поставить просто пакет на сесть), то ничего не происходит.
Думаю всё дело что под процедурой стоит условие if...then..begin...end;
Но что делать я не знаю чтоб работало по таймеру...
Подскажите плз.
Выложи код может как раз таки дело в нем. Я что то не совсем понял что ты хочешь.
const
name='brbr';
var
enchant:TTimer;
procedure Init;
begin
enchant:=TTimer.Create(nil);
enchant.OnTimer:=@Onenchant;
enchant.enabled:=true;
enchant.interval:=3000;
end;
procedure Onenchant(Sender: TObject);
begin
if FromClient and (pck[1]=hstr('49')) then begin
pck:='';
buf:=hstr('56 00 00 00 00 00 00 00 00 00');
SendToServerEx(name);
end;
end;
procedure Free;
begin
enchant.Free;
end;
begin
end.
Вот то что под процедурой не работает, но если убрать в процедуре эту строку:
if FromClient and (pck[1]=hstr('49')) then то он каждые 3 секунды нормально садиться и встаёт тоесть всё отлично с таймером.
Ну а если же всё что под процедурой засунуть в тело скрипта тоесть вот так:
const
name='brbr';
var
enchant:TTimer;
procedure Init;
begin
enchant:=TTimer.Create(nil);
enchant.OnTimer:=@Onenchant;
enchant.enabled:=true;
enchant.interval:=3000;
end;
procedure Onenchant(Sender: TObject);
begin
end;
procedure Free;
begin
enchant.Free;
end;
begin
if FromClient and (pck[1]=hstr('49')) then begin
pck:='';
buf:=hstr('56 00 00 00 00 00 00 00 00 00');
SendToServerEx(name);
end;
end.
То работает отлично я пишу чтолибо в чат и он тутже садиться.
Ну и вот собствена проблема как сделать чтоб всё работало с условием тоесть с этой строкой - if FromClient and (pck[1]=hstr('49')) then
и именно в процедуре:
procedure Onenchant(Sender: TObject);
begin
end;
Вот).
alexteam
16.01.2010, 16:45
timer.enabled := true/false
Добавлено через 2 минуты
var
SitStand:TTimer;
procedure Init;
begin
useforconnectname := 'brbr';
SitStand:=TTimer.Create(nil);
SitStand.OnTimer:=@OnSitStand;
SitStand.enabled:=false;
SitStand.interval:=3000;
end;
procedure OnSitStand(Sender: TObject);
begin
buf:=hstr('56 00 00 00 00 00 00 00 00 00');
SendToServer;
end;
procedure Free;
begin
SitStand.Free;
end;
begin
if FromClient then
case pck[1] of
#$49:
begin
SitStand.enabled := not SitStand.enabled;
pck:='';
end;
end;
end.
О спасиб огромное я позволил себе его немного добавить потому что мне надо было выполнить только единожды и написал так:
var
SitStand:TTimer;
procedure Init;
begin
useforconnectname := 'brbr';
SitStand:=TTimer.Create(nil);
SitStand.OnTimer:=@OnSitStand;
SitStand.enabled:=false;
SitStand.interval:=3000;
end;
procedure OnSitStand(Sender: TObject);
begin
buf:=hstr('56 00 00 00 00 00 00 00 00 00');
SendToServer;
SitStand.enabled:=false;
end;
procedure Free;
begin
SitStand.Free;
end;
begin
if FromClient then
case pck[1] of
#$49:
begin
SitStand.enabled := not SitStand.enabled;
pck:='';
end;
end;
end.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot