delphi Код:
var
Timer01,Timer02: TTimer;
Mission1,start:Boolean;
i,j,a,k:integer;
missionArr,ProdArr:array[0..20] of string;
procedure Init; //первый таймер активирует второй
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=false; //начальное положение включен(true)/выключен(false)
Timer01.interval:=5000; //29000 интервал(в милисекундах) как часто таймер срабатывает
Timer02:=TTimer.Create(nil); //выделяем памать и т.п.
Timer02.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer02.enabled:=false; //начальное положение включен(true)/выключен(false)
Timer02.interval:=3000; //29000 интервал(в милисекундах) как часто таймер срабатывает
Mission1:=False;
i:=0;
j:=1;
a:=0;
k:=0;
ProdArr[0]:='E3 57 80 80 8B D1 F0 08 7B 2C 3D 09 54 01 00 00 05 00 6A 86 DD 0A 2A 00 00 00 00 00 00 00 49 87 DD 0A 2A 00 00 00 00 00 00 00 D3 D6 18 0A 3F 01 00 00 00 00 00 00 DC D6 18 0A 5E 00 00 00 00 00 00 00 D9 D6 18 0A 6A 02 00 00 00 00 00 00';
start:=false;
Timer01.enabled:=true;
end;
procedure OnTimer01(Sender: TObject);
begin
Start:=true;
Timer01.enabled:=False;
end;
procedure OnTimer02(Sender: TObject);
begin
buf:='C9 57 66 00 ';
SendToServer;
buf:='B5 57 72 52 01 00 00 00 ';
SendToServer;
buf:='E3 57 80 80 8B D1 F0 08 7B 2C 3D 09 54 01 00 00 05 00 6A 86 DD 0A 18 00 00 00 00 00 00 00 49 87 DD 0A 18 00 00 00 00 00 00 00 D3 D6 18 0A 99 01 00 00 00 00 00 00 DC D6 18 0A 78 00 00 00 00 00 00 00 D9 D6 18 0A 18 03 00 00 00 00 00 00';
SendToServer;
Timer02.Enabled:=false;
end;
Procedure TakeMission;
begin
MissionArr[0]:='9C 57 5B 60 00 00 00 34 00 01 00 0A 00 00 00 00 00 00 00';
MissionArr[1]:='9C 57 5B 60 00 00 00 19 00 01 00 1C 00 A2 13 00 00 00 00';
MissionArr[2]:='9C 57 5B 60 00 00 00 EA 03 01 00 04 00 A2 13 00 00 00 00';
For i:=0 to 2 do
begin
buf:=HStr(MissionArr[i]);
SendToServer;
end;
Mission1:=True;
end;
Procedure BuyItems;
begin
buf:=HStr('9C 57 5B 61 00 00 00 02 00 01 00 0A 00 00 00 00 00 00 00');
SendToServer;
buf:=HStr('A1 57 5E 61 00 00 00 0D 00 04 00 D9 D6 18 0A 60 00 00 00 00 00 00 00 DC D6 18 0A 10 00 00 00 00 00 00 00 D3 D6 18 0A 30 00 00 00 00 00 00 00 D6 D6 18 0A 66 00 00 00 00 00 00 00');
SendToServer;
End;
Procedure EndMission;
Begin
//пока в разработке ибо не требуется сдача
end;
procedure Free; //Вызывается при выключении скрипта
begin
Timer01.free;
Timer02.free;
start:=false;
end;
begin
//IF FromServer and (pck[1]=#$1A) then a:=1;
//if FromServer and (pck[1]=#$16) and (a=1) or start then
if FromServer and (pck[1]=#$17) then //Жду личного сообщения пакет типа 17 DD PP XX ZZ и т.д...
begin
if mission1=true then
begin
Timer02.enabled:=true;
j:=j+1;
if j=16 then
begin
mission1:=false;
j:=1;
end;
end
a:=0;
start:=false;
if (mission1=false) then
begin
//EndMission;
i:=0;
j:=1;
a:=0;
TakeMission;
BuyItems;
start:=true;
end;
end
else a:=0;
end.
Вот собственно такой скрипт.
Цель скрипта брать ЗАКАЗ покупать необходимое для изготовления и изготавливать, а затем сдавать.
В алгоритме скрипта думаю Вам копаться не стоит у меня в следующем проблема:
1. Скрипт сейчас должен запускаться от личного сообщения
"if FromServer and (pck[1]=#$17) then ..." но не запускается не пойму почему пакет 17 приходит
2. Цель чтобы скрипт работал циклически там
"//IF FromServer and (pck[1]=#$1A) then a:=1;
//if FromServer and (pck[1]=#$16) and (a=1) or start then ..." заготовка под цикл как ни странно работает суть ее в том что надо поймать два пакет разного типа идущие друг за другом (эти пакеты означают что производство завершено)
3. Проблема заключается в том что при запуске берется задание и покупаются вещи, но когда скрипт доходит до места где должно начаться производство, то рвется соединение с сервером без всяких сообщений в лог l2ph если я отправляю пакеты самостоятельно просто через посылку то все работает не пойму в чем проблема
4. если кто-нибудь подскажет элегантный способ сделать задержку между отсылкой любых пакетов, например в одну секунду буду признателен подозреваю, что проблема в этом.
5. есть еще маленькая проблема с логами я хотел себе в дальнейшем писать сообщения в личку игрового чата (это уже для других скриптов но и тут было бы полезно), но суть в том что там кодируются буквы а ничего нормально для самостоятельной кодировки средствами скрипта я не нашел если кто в курсе как закодировать слова в сообщения буду признателен (с примером отсылки Hello с вкладки дополнительно не разобрался)