помогите, цель скрипта, что я пытаюсь снять с чара все сомы +17, проблема в том, что 1 сом снимается, я удаляю его с массива, но следующий сом он пытается мне засунуть с 0-ым ObjID
delphi Код:
Тип: 0x16 (AddTradeItem)
Размер: 13+2
Время прихода: 16:50:15:484
0002 d TradeID: 1 (0x00000001)
0006 d ObjectID: 0 (0x00000000)
000A d Count: 1 (0x00000001)
сам скрипт вот:
delphi Код:
const
NameTocher = '~VIP~Dunyaxa' ;
NameOsn = 'eXploidsInMyLife';
max = 80;
var
ItemBasa:array[1..3,1..max] of integer;
ObjectIDosv,Count:integer;
procedure Init;
begin
buf:=#$0F;
SendToServerEx(NameTocher);
end;
procedure ItemPacketList;
var
i:word;
begin
Count:=ReadH(2);
for i:=1 to Count do
begin
ItemBasa[1,i]:=ReadD(i*28+8) ;//ObjectID
ItemBasa[2,i]:=ReadD(i*28+12);//Item ID
ItemBasa[3,i]:=ReadH(i*28+30);//EnchLvl
end;
end;
procedure InvertoryUpdate;
var
i:word;
begin
SendMsg('Начинаю процедуру InvertoryUpdate');
if (ReadH(4)=3) then
begin
SendMsg('Предмет удаляется');
for i:=1 to Count do
begin
SendMsg('Циклим в поисках нужного ObjectID');
if ItemBasa[1,i]=ReadD(8) then
begin
SendMsg('ObjectID найден в массиве и обнулился');
ItemBasa[1,i]:=0;
ItemBasa[2,i]:=0;
ItemBasa[3,i]:=0;
end;
end;
end;
end;
procedure CharInfo;
begin
if (ReadS(22)=NameOsn) then ObjectIDosv:=ReadD(18);
end;
procedure TradeOk;
begin
if (ReadD(2)=ObjectIDosv) then
begin
buf:=#$44;
WriteD(1);
SendToServerEx(NameTocher);
end;
end;
procedure zabiray;
begin
buf:=#$16;
WriteD(1);
WriteD(GetItem(5643,17));
WriteD(1);
SendToServerEx(NameTocher);
end;
function GetItem(item:integer; lvl:integer) : integer;
var
i : integer;
begin
for i:=1 to max do
begin
if ItemBasa[1,i]<>0 then
if (ItemBasa[2,i]=item) and (ItemBasa[3,i]=lvl) then
begin
result:=ItemBasa[1,i];
exit;
end;
end;
end;
begin
if (connectname=NameTocher) and (fromserver) then
case pck[1] of
#$1B: ItemPacketList;
#$27: InvertoryUpdate;
#$03: CharInfo;
#$5E: TradeOk;
end;
if (connectname=NameOsn) and (fromclient) then
case pck[1] of
#$38: if (ReadS(2)='1') then zabiray;
end;
end.