Показать сообщение отдельно
Старый 24.03.2009, 00:16   #348
Новичок
 
Регистрация: 15.03.2009
Сообщений: 26
Сказал Спасибо: 0
Имеет 11 спасибок в 7 сообщенях
Sieg пока неопределено
По умолчанию

tester, Hello. I had similar problem with my crafter-bot. So, here's my way to solve it:

Код:
const
maxBufferSize = 5; //for example. change it according to your needs

var
delayedPackets: array[1..maxBufferSize] of String;
packetIndex, packetEnd : integer;
delayedPacketTimer :TTimer;

procedure sendDelayedPacket;
begin

buf:=delayedPackets[packetIndex];
SendToServer;  //use 'SendToServerEx' here if it's required
//if (packetIndex=packetEnd) then delayedPacketTimer.enabled:=false;            //uncomment this if you don't want the process to be endless
inc(packetIndex);
if (packetIndex>maxBufferSize) then packetIndex:=1;

end;

procedure Init;
begin
packetIndex:=1;
packetEnd:=1;

//here you can set packet's values, that you want to be sent with delay
//...or do it somewhere in script later

delayedPackets[1]:=HStr('bla-bla-bla');
delayedPackets[2]:=HStr('bla-bla-bla');
delayedPackets[3]:=HStr('bla-bla-bla');
//...and so on

delayedPacketTimer:=TTimer.Create(nil);
delayedPacketTimer.OnTimer:=@SendDelayedPacket;
delayedPacketTimer.interval:=5000;    //set here required interval at wich packets will be sent. You can change it later in you script also.
delayedPacketTimer.enabled:=false;  //set it to 'true' to start packets parcel

end;

procedure Free;
begin
delayedPacketTimer.enabled:=false;
delayedPacketTimer.Free;
end;

begin
if FromClient and (pck[1]=#$1b) and (pck[2]=#$04) then delayedPacketTimer.enabled:=true;  //activates the parcel when you press social 'Advance' or type '/socialcharge' in game
end.
Something like this... Enjoy. =)
Sieg вне форума   Ответить с цитированием
За это сообщение Sieg нажился спасибкой от: