"Скрипт: Создание базы интвентаря":
Оффтоп
delphi Код:
Const
Name='ArchDevil';
Max=300;
var
ItemBase : array[1..4,1..max] of integer; //ItemOID, ItemID, Kol-vo, ItemLvl
timer:TTimer;
procedure Init; //Вызывается при включении скрипта
begin
timer:=TTimer.Create(nil);
timer.OnTimer:=@OnTimer;
timer.enabled:=true;
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 begin
buf:=#$A7;
WriteD(9003);
WriteD(100000);
WriteD(1);
WriteD(0);
WriteD(0);
SendToServerEx(name);
end;
end;
begin
if FromServer and (ConnectName=Name) then
case pck[1] of
//......................................
//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов
//......................................
#$27: InventoryUpdate; //Обновление базы
end; //end от case!!!
end.
Тут гдет выкладывался... Вроде под Интерлюд...
Создает базу инвентаря (Массив с записями всех вещей из кармана) по таким Хар-кам:
1. OID - Обжект ИД Уникальный номер у каждого предмета свой, если вещи в пачке их кол-во не влияет на изменение ОИДа
2. ID ИД определяющий тип предмета (Гугл поможет в определении нужного ИД для выбранного предмета)
3. kКол-во предметов (Стопковые когда)
4. Энчант лвл (Если Шмот или Пухи)
Создает Базу
CreateItemBase; процедура берет все нужные параметры и значения из пакета
1B, который и запускает данную функцию...
Процедура
InventoryUpdate; Обновляет (Добовляет удоляет определенные разделы существующей базы) работает через пакет
27...
GetItem; Функция позволяет легко и удобно пользоваться созданной базой вводятся ИД 2х параметров, по которым буим искать (Любые из 4х представленных, но 2 разных) и 3й параметр - Число относящееся к Типу указанному 1м параметром и своеобразный поиск по базе осуществляется на основе сочетания этих 2х параметров...
Например вводим 1(Оид) и 2(ИД) и (Обжект ИД итема, который ищем например это адена у вас в кармане) функция выдает вам ИД этого итема (57) и так в любых комбинациях...
Так же есть встроенный таймер и для примера в нем находится проверка адены если ее на кол-во, если ее больше 2ккк, то скрипт юзает скилл обращающий 2ккк в 1гб (Пвп серваки)... Использует при этом проверка Функцию
GetItem;