Показать сообщение отдельно
Старый 29.03.2011, 17:53   #1
Местный
 
Регистрация: 11.06.2010
Сообщений: 644
Сказал Спасибо: 119
Имеет 85 спасибок в 77 сообщенях
dyh9l пока неопределено
По умолчанию База инвертаря шоле

помогите, цель скрипта, что я пытаюсь снять с чара все сомы +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.
__________________

Последний раз редактировалось dyh9l, 29.03.2011 в 18:56.
dyh9l вне форума   Ответить с цитированием