Ответ сервера (Megal2.ru) - 3 пакета:
1.Tип: 0x21 (InventoryUpdate): Кол-во оставшихся заточек
Код:
21 01 00 02 00 04 00 D6 4E 04 10 B2 19 00 00 0B 00 00 00 24 01 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
2.Tип: 0x21 (InventoryUpdate): Информация о затачиваемом предмете, с текущим уровнем заточки
Код:
21 01 00 02 00 01 00 56 2D 0B 10 D7 24 00 00 0C 00 00 00 01 00 00 00 01 00 00 00 01 00 00 10 00 00 05 00 00 00 00 00 00 00 FF FF FF FF FE FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
3.Tип: 0x87 (EnchantResult): Текущий уровень заточки предмета
Код:
87 05 00 00 00 05 00 00 00 05 00 00 00
Вопрос:
Ранее для остановки скрипта можно было зацепиться за 0x87, проверить по
0012 d (id предмета), теперь вместо
0012 d отдаёт
000С d (id предмета).
Скрипт выдаёт ошибку:
PHP код:
const
Name='******';
var
timer:TTimer;
x:byte; //ii?aaaeaiea, eaeiaa aaenoaea ii n?aoo iu niaa?oaai
procedure Init;
begin
timer:=TTimer.Create(nil);
timer.interval:=150;
timer.OnTimer:=@fireTimer;
timer.enabled:=true;
x:=1;//nia?aea o=1
end;
procedure Free;
begin
timer.Free;
end;
procedure fireTimer(Sender: TObject);
begin
case x of
1:begin
buf:=hstr('5F 48 65 BF 19 00 00 00 00 ');
SendToServerEx(Name);
inc(x);
end;
2:begin
buf:=hstr('5F 48 65 BF 19 00 00 00 00 ');
SendToServerEx(Name);
x:=1;
end;
end;{case}
end;
//кусок ниже ты получается влепил в таймер, пришлось расставить еще пару end; и begin;
begin
if FromServer then
begin
case pck[1] of
#$21: begin //InventoryUpdate
if (ReadD(0C)=9456) and (ReadD(34)=5) then timer.enabled:=false;;
end;
end;
end;
end.
Забавно то, что при составлении пакета id вещи показывается в
0012 d, но когда пакет приходит с сервера - пх показывает id в
000С d.
В связи с чем скрипт точит не останавливаясь, пока не заканчиваются заточки.
[+] Если установить таймер менее чем на 2500 - вещь временами ломается на +4, при том, что на сервере +4 безопасно.