Показать сообщение отдельно
Старый 26.01.2012, 16:37   #45
Новичок
 
Регистрация: 22.01.2012
Сообщений: 3
Сказал Спасибо: 1
Имеет 2 спасибок в 2 сообщенях
brotherrus пока неопределено
По умолчанию

Часть моего бота для получения инвентаря (используется только для банок). Может кому пригодится. Использую на известном фришарде с HF P5.
DELPHI Код:
const     InventoryCountMax=250; var     Inventory:array[0..InventoryCountmax,1..3] of integer;     InventoryCount:integer; procedure GetItemsList; var     i:integer; begin     InventoryCount:=readH(4);     for i:=0 to InventoryCountMax do begin         Inventory[i,1]:=0;Inventory[i,2]:=0;Inventory[i,3]:=0;        end;     for i:=0 to InventoryCount do begin         Inventory[i,1]:=ReadD(6+i*68)//ObjID         Inventory[i,2]:=ReadD(10+i*68); //ItemID         Inventory[i,3]:=ReadD(18+i*68); //Count     end; end; function GetFromInventoryByID(id:integer):integer; var     i:integer; begin     result:=-1;     for i:=0 to InventoryCount do begin         if Inventory[i,2]=id then begin             result:=i;             break;         end;     end;    end; function GetFromInventoryByObjID(id:integer):integer; var     i:integer; begin     result:=-1;     for i:=0 to InventoryCount do begin         if Inventory[i,1]=id then begin             result:=i;             break;         end;     end;    end; procedure UpdateInventory; var     i,count,find,ObjID,m:integer; begin     count:=readH(2);     m:=readH(4);     if m=2 then begin         for i:=0 to count do begin             ObjID:=ReadD(6+i*68);             find:=GetFromInventoryByObjID(ObjId);             if find>-1 then begin                 Inventory[find,2]:=ReadD(10+i*68); //ItemID                 Inventory[find,3]:=ReadD(18+i*68); //Count                      end;          end;              end;     if m=3 then begin         for i:=0 to count do begin             ObjID:=ReadD(6+i*68);             find:=GetFromInventoryByObjID(ObjId);             if find>-1 then begin                 Inventory[find,1]:=0;                 Inventory[find,2]:=0;                 Inventory[find,3]:=0;             end;            end;        end;     if m=1 then begin         for i:=0 to count do begin             InventoryCount:=InventoryCount+1;             Inventory[InventoryCount,1]:=ReadD(6+i*68)//ObjID             Inventory[InventoryCount,2]:=ReadD(10+i*68); //ItemID             Inventory[InventoryCount,3]:=ReadD(18+i*68); //Count         end;        end; end;
DELPHI Код:
#$11: GetItemsList; #$21: UpdateInventory;
p.s. спасибо dyh9l за тег делфи)

Последний раз редактировалось brotherrus, 26.01.2012 в 17:02.
brotherrus вне форума   Ответить с цитированием