Обрати внимание на последнее If в твоем скрипте оно выполняется при каждом приходящем пакете.. так что х:=1 при каждом приходящем пакете... поэтому выполняется первый цикл постоянно
. Попробуй последнее условие засунуть в обработку пакета #$27 или ввести дополнительную переменную лучше Boolean. Например так:
Добавлено через 3 минуты
delphi Код:
const
name='name'; //nick
msg1='04 31 19 10 48 C1 C1 01 00 9D 47 FD FF 76 FC FF FF 00'; //пакеты закупки адены
msg2='21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 33 00 30 00 33 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 36 00 32 00 37 00 00 00';
msg3='A7 73 02 00 00 01 00 00 00 01 00 00 00';
var
d,i,k,l,x: integer;
f :TStringList;
m,t :String;
timer: TTimer;
Zanyat: Boolean;
procedure by(Sender: TObject); //сама процедура покупки адены
begin
case x of
1: begin
buf:=hstr(msg1);
SendToServerEx(name);
x:=x+1;
end;
2: begin
buf:=hstr(msg1);
SendToServerEx(name);
x:=x+1;
end;
3: begin
buf:=hstr(msg2);
SendToServerEx(name);
x:=x+1;
end;
4: begin
buf:=hstr(msg3);
SendToServerEx(name);
x:=x+1;
Zanyat:=false;
timer.enabled:=false;
end;
end;
end;
procedure Init; //вызывается при включении
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@by;
timer.enabled:=false;
timer.interval:=600;
x:=0;
Zanyat:=false;
end;
begin
if FromServer and (ConnectName=name)and (pck[1]=#$27)and (pck[12]=#$39)then
begin
i:=12;
k:=ReadD(i); //item ID
l:=ReadD(i); //количество адены
//=IntToStr(l);
//=IntToStr(k);
//=TStringList.Create();
//Add(t+': '+m);
//SaveToFile('c:\adena.txt');
//Free;
end;
if (l<100000000) and (Zanyat=false) then
begin
timer.enabled:=true;
x:=1;
Zanyat:=true;
end;
end.