Давай ка вместо 1го "Инвентари Апдейт" вставим вот это для начала))
delphi Код:
procedure CreateItemBase;
var
i, j, ListCount: integer;
begin
for i:=1 to max do begin
//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //kol-vo
ItemBase[4,i]:=0; //lvl
end;
j:=4;
ListCount:=ReadH(j);
j:=8;
for i:=1 to ListCount do begin
itemBase[1,i]:=ReadD(j); //OID
itemBase[2,i]:=ReadD(j); //ItemID
itemBase[3,i]:=ReadD(j); //кол-во
inc(j,10);
itemBase[4,i]:=ReadH(j);//EnchantLevel
inc(j,12);
end;
end;
//......................................
//******************************************************************************
procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemID
var
i, ii, j, OID, ID, Count, ListCount, UpdType, lvl: integer;
add : boolean;
begin
add:=false;
ListCount:=ReadH(2);
j:=4;
for ii:=1 to ListCount do begin
add:=false;
UpdType:=ReadH(j);
ReadH(j); //ItemType1
OID:=ReadD(j); //ObjectID
ID:=ReadD(j); //ItemID
Count:=ReadD(j); //кол-во
inc(j,10);
lvl:=ReadH(j);
case UpdType of
1: begin
for i:=1 to max do begin
if (ItemBase[1,i]=0) and (add=false) then begin
ItemBase[1,i]:=OID;
ItemBase[2,i]:=ID;
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
add:=true;
end;
end;
end;
2: begin
for i:=1 to max do begin
if ItemBase[1,i]=OID then begin
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
end;
end;
end;
3: begin
for i:=1 to max do begin
if ItemBase[1,i]=OID then begin
ItemBase[1,i]:=0;
ItemBase[2,i]:=0;
ItemBase[3,i]:=0;
ItemBase[4,i]:=0;
end;
end;
end;
end;
inc(j,10);
end;
end;
function GetItem(ID, FieldIn, FieldOut : integer) : integer;
var
i : integer;
begin
for i:=1 to max do
if ItemBase[FieldIn,i]=ID then begin
result:=ItemBase[FieldOut,i]; // itemOID
exit;
end;
result:=0;
end;
Var:
delphi Код:
Const
Name='ArchDevil'; //Афффтор
Max=300;
var
ItemBase : array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
timer:TTimer;
Во 1х мне так удобней чесн слово)))
во 2х GetItem оч полезная функция...
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
Цитата:
узнать как то ObjectID всех скролов которые в сумке
|
delphi Код:
GetItem(ID,2,1); //ID Вещи, тоесть скролла, не меняется.
Функция выдает ОИД вещи с ИД "ID".
--------------------------------------------------------------------------------------------------------------------------------
Оффтоп
Думаю всех не обязательно узнавать и прост по 1му вытаскивать по мере работы скрипта, но если пока буим делать появится проблема сможем переделать, чтоб он сразу ВСЕ скроллы в Массив записывал (Нада в чужих скриптах по копаться, посмотреть как у них там, но сейчас не могу... вечером)
--------------------------------------------------------------------------------------------------------------------------------