Показать сообщение отдельно
Старый 05.03.2011, 08:27   #8
Местный
 
Аватар для Nickers
 
Регистрация: 23.11.2009
Сообщений: 574
Сказал Спасибо: 134
Имеет 117 спасибок в 82 сообщенях
Nickers пока неопределено
По умолчанию

Давай ка вместо 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".

--------------------------------------------------------------------------------------------------------------------------------
Оффтоп
--------------------------------------------------------------------------------------------------------------------------------
__________________
Пишу что думаю, но ничего не знаю...
[LameGuard|Скрипты l2phx]

Последний раз редактировалось Nickers, 05.03.2011 в 08:39.
Nickers вне форума   Ответить с цитированием