Так Люди очень прошу кто знает помогите
нашел какойто масив но я непонимаю вобще что ето и как з ним работать((
Procedure GetItemBase ;
Var
i : integer ;
ReadIndex : integer ;
Begin
Timer.Enabled := False ;
For i := 1 to 8 do
Begin
ItemBase[i,1] := 0 ;
ItemBase[i,2] := 0 ;
ItemBase[i,3] := 0 ;
ItemBase[i,4] := 0 ;
End ;
ReadIndex := 4 ;
ItemCount := ReadH(ReadIndex) ;
For i := 1 to ItemCount do
Begin
ReadH(ReadIndex) ;
ItemBase[i,2] := ReadD(ReadIndex) ; //objID
ItemBase[i,1] := ReadD(ReadIndex) ; //ItemID
ReadD(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadH(ReadIndex) ;
ReadD(ReadIndex) ;
ItemBase[i,3] := ReadH(ReadIndex) ; //EnchLvl
ReadH(ReadIndex) ;
End ;
Timer.Enabled := true ;
End ;
Вот з етим
помогите розобратся з масивом дайте какойто пример з масивом и нафиг он вобще нада
Пример киньте какойто Плиз очень нада
Const
Name='ArchDevil';
Max=300;
var
ItemBase : array[1..4,1..max] ofinteger; //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;
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);
beginif GetItem(57,2,3)>2000000000thenbegin
buf:=#$A7;
WriteD(9003);
WriteD(100000);
WriteD(1);
WriteD(0);
WriteD(0);
SendToServerEx(name);
end;
end;
beginif FromServer and(ConnectName=Name)thencase 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;
if GetItem(57,2,3)>2000000000 then begin
Вот я понел getitem и 57 ето ид
2
3 что ето?
j:=4; ну у нас есть что j =4
ListCount:=ReadH(j); а лист коунт ето 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); а нафига его увеличивать на 10
itemBase[4,i]:=ReadH(j);//EnchantLevel и что за [4,i] где мы взяли 4
inc(j,12); и нафиг его увеличивать на 12
end;
end;
ну я понел что I ето инвентарь вроде
и обесните
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;
что такое FieldIn FieldOut
За это сообщение goodvin1709 нажился спасибкой от:
вводятся ИД 2х параметров, по которым буим искать (Любые из 4х представленных, но 2 разных)
Цитата:
1. OID - Обжект ИД Уникальный номер у каждого предмета свой, если вещи в пачке их кол-во не влияет на изменение ОИДа
2. ID ИД определяющий тип предмета (Гугл поможет в определении нужного ИД для выбранного предмета)
3. kКол-во предметов (Стопковые когда)
4. Энчант лвл (Если Шмот или Пухи)
Функция ReadD(j) считывает из пакета (тут это 1B) 4 пары начиная с j и расшифровывает, как Dword и получает значение... При увеличении j Скрипт "продвигается дальше" по пакету (Переходя к новому пункту - новый итем) при этом записывая все в Базу... В это можно особо не вдумываться)))
на самом деле в этой ситуации больше интересно как сделали что работает и ReadD(j) и ReadD(2) (вар и не вар параметр) ведь оверлоад в делфи распознает только функции разным типов параметров а var const и тп не учитывает
__________________ Начало.
За это сообщение supernewbie нажился спасибкой от: