L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Const
Name='Nickers';
Max=80;
var
ItemBase : array[1..4,1..max] ofinteger; //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 SendMsc(msc:string); //Шаблон отправки системных сообщенийbegin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msc);
SendToClient;
end;
procedure CreateItemBase;
var
i, j, ListCount: integer;
beginfor i:=1tomaxdobegin//очищаем масив
ItemBase[1,i]:=0; //OID
ItemBase[2,i]:=0; //ID
ItemBase[3,i]:=0; //kol-vo
ItemBase[4,i]:=0; //lvlend;
j:=4;
ListCount:=ReadH(j);
j:=8;
for i:=1to ListCount dobegin
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);//EnchantLevelinc(j,12);
end;
end;
//......................................//******************************************************************************procedure InventoryUpdate; //пакет 27, обновляет базу ObjectID по ItemIDvar
i, ii, j, OID, ID, Count, ListCount, UpdType, lvl: integer;
add : boolean;
begin
add:=false;
ListCount:=ReadH(2);
j:=4;
for ii:=1to ListCount dobegin
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 of1: beginfor i:=1tomaxdobeginif(ItemBase[1,i]=0)and(add=false)thenbegin
ItemBase[1,i]:=OID;
ItemBase[2,i]:=ID;
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
add:=true;
end;
end;
end;
2: beginfor i:=1tomaxdobeginif ItemBase[1,i]=OID thenbegin
ItemBase[3,i]:=Count;
ItemBase[4,i]:=lvl;
end;
end;
end;
3: beginfor i:=1tomaxdobeginif ItemBase[1,i]=OID thenbegin
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;
beginfor i:=1tomaxdoif ItemBase[FieldIn,i]=ID thenbegin
result:=ItemBase[FieldOut,i]; // itemOIDexit;
end;
result:=0;
end;
procedure OnTimer(Sender: TObject);
beginend;
beginif FromServer and(ConnectName=Name)thencase pck[1] of//......................................//Пакет ItemList
#$1B: CreateItemBase; //создание базы предметов//......................................
#$27: InventoryUpdate; //Обновление базыend; //end от case!!!end.
Добавлено через 2 минуты
Основа самая самая)) Тут есть и таймер и сразу База инвентрая... В процедуру OnTimer задумано для манипуляций с инвентарем по таймеру...