Гдет ж был скрипт под ПХ через создание базы инвентаря...
На форуме поиск не помог...
Вот он (Из ПХ своего взял):
delphi Код:
Const
IDofItem='58';
Name='Nickers';
Max=80;
var
ItemBase : array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
timer:TTimer; IDindex:boolean;
p,p1,p2,x,y,z,i,f:integer;
procedure Init; //Вызывается при включении скрипта
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=false;
timer.interval:=1000; //время задержки
buf:=#$0F;
SendToServerEx(Name);
end;
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;
procedure OnTimer(Sender: TObject);
begin
if GetItem(57,2,3)>2000000000 then //57 - ID Аденки...
begin
buf:= Сюда пакетег) (На Юз скилла)
SendToServer;
end;
end;
begin
if FromServer and (ConnectName=Name) then
case pck[1] of
//......................................
//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов
//......................................
#$27: InventoryUpdate; //Обновление базы
end; //end от case!!!
end.
Добавлено через 24 минуты
Вроде так... Ток нужен пакет на юз скилла Клиент->Сервер Чтобы отправную часть доделать... (Процедура ОнТаймер)