PDA

Просмотр полной версии : List index out of bounds...


sadny
30.08.2009, 22:51
Собственно написал 2 скрипта. Для автозаточки на интерлюде:
Name='XXX';
MaxEnchantLvl=10;
ScrollId=731;
ItemId=5643;
BuyScrolls='A7 B1 02 00 00 E0 FD 1C 00 15 00 00 00 00 00 00 00 00 00 00 00';
PacketScriptOn='38 67 00 6F 00 67 00 6F 00 67 00 6F 00 21 00 21 00 21 00 00 00 00 00 00 00';

var
ScrollObj,ItemObj,NumOfItems,i:integer;
Timer01:TTimer;
EnchLvl,MinEnch:word;
ScriptOn:boolean;

procedure Init;
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=false;
Timer01.interval:=601;
ScriptOn:=false;
end;

procedure OnTimer01(Sender: TObject);
begin
buf:='';
WriteC(20);
WriteD(ScrollObj);
WriteD(0);
SendToServerEx(name);
delay(327);
buf:='';
WriteC(88);
WriteD(ItemObj);
SendToServerEx(name);
timer01.enabled:=false;
end;

procedure Free;
begin
Timer01.free;
end;

begin
if FromClient and (pck=HStr(PacketScriptOn)) then
begin
if not ScriptOn then
begin
ScriptOn:=true;
buf:=HStr(BuyScrolls);
SendToServerEx(name);
end
else
begin
ScriptOn:=false;
end;
pck:='';
end;
if FromServer and (pck[1]=HStr('1B')) and ScriptOn then
begin
ScrollObj:=0;
ItemObj:=0;
NumOfItems:=ReadH(4);
MinEnch:=30;
for i:=1 to NumOfItems do
begin
If ReadD(12+36*(i-1))=ScrollId then ScrollObj:=ReadD(8+36*(i-1));
If (ReadD(12+36*(i-1))=ItemId) and (ReadH(30+36*(i-1))<=MinEnch) then
begin
ItemObj:=ReadD(8+36*(i-1));
MinEnch:=ReadH(30+36*(i-1));
EnchLvl:=ReadH(30+36*(i-1));
end;
end;
if (ScrollObj>0) and (ItemObj>0) and (EnchLvl<MaxEnchantLvl) then timer01.enabled:=true
else
if not(EnchLvl=MaxEnchantLvl) then
begin
buf:=HStr(BuyScrolls);
SendToServerEx(name);
end;
end;
end.