L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
пытался разобраться в куске кода из скрипта на заточку
Ещё раз посмотри в нём внимательно процедуры:
delphi Код:
var
BaseItems: array[1..maxitems, 1..12] ofinteger; //все предметы в инвентаре//..............................................................................procedure ItemList;
{Создаем базу Items}var
i, j, k: integer;
ListCount: integer;
begin
j:=4; //смещение для ListCount
ListCount:=ReadH(j); //количество итемов не должно превышать max!for i:=1to maxitems doif(i<=ListCount)thenbegin
BaseItems[i,1]:=ReadH(j); //ItemType1
BaseItems[i,2]:=ReadD(j); //ObjectID
BaseItems[i,3]:=ReadD(j); //ItemID
BaseItems[i,4]:=ReadD(j); //LocationSlot
BaseItems[i,5]:=ReadD(j); //Count
BaseItems[i,6]:=ReadH(j); //ItemType2
BaseItems[i,7]:=ReadH(j); //CustomType1
BaseItems[i,8]:=ReadH(j); //isEquipped
BaseItems[i,9]:=ReadD(j); //BodyPart
BaseItems[i,10]:=ReadH(j); //EnchantLevel
BaseItems[i,11]:=ReadH(j); //CustType2
BaseItems[i,12]:=ReadD(j); //AugmentationIDinc(j,40);
endelsefor k:=1to12do BaseItems[i,k]:=0; // забиваем нулямиend;
//..............................................................................procedure InventoryUpdate;
var
i, ii, j, k, ListCount, UpdType : integer;
ItemType1, ObjectID, ItemID, LocationSlot, Count, ItemType2, CustomType1,
isEquipped, BodyPart, EnchantLevel, CustType2, AugmentationID :integer;
additem : boolean;
begin
additem:=true;
ListCount:=ReadH(2); //количество итемов
j:=4; //смещение для действия с предметом 1-добавлен 2-изменен 3-удаленfor i:=1to ListCount dobegin
UpdType:=ReadH(j);
ItemType1:=ReadH(j);
ObjectID:=ReadD(j);
ItemID:=ReadD(j);
LocationSlot:=ReadD(j);
Count:=ReadD(j);
ItemType2:=ReadH(j);
CustomType1:=ReadH(j);
isEquipped:=ReadH(j);
BodyPart:=ReadD(j);
EnchantLevel:=ReadH(j);
CustType2:=ReadH(j);
AugmentationID:=ReadD(j);
case UpdType of1: k:=0; //добавлен новый предмет2: k:=ObjectID; //изменен предмет в инвентаре3: begin//удаленfor ii:=1to maxitems doif(BaseItems[ii,2]=ObjectID)thenbeginfor k:=1to12do BaseItems[ii,k]:=0;
break;
end;
end;
end;
for ii:=1to maxitems dobeginif(BaseItems[ii,2]=k)thenbegin
BaseItems[ii,1]:=ItemType1;
BaseItems[ii,3]:=ItemID;
BaseItems[ii,4]:=LocationSlot;
BaseItems[ii,5]:=Count;
BaseItems[ii,6]:=ItemType2;
BaseItems[ii,7]:=CustomType1;
BaseItems[ii,8]:=isEquipped;
BaseItems[ii,9]:=BodyPart;
BaseItems[ii,10]:=EnchantLevel;
BaseItems[ii,11]:=CustType2;
BaseItems[ii,12]:=AugmentationID;
break;
end;
end;
inc(j,38);
end;
end;
//..............................................................................
А если надо из базы найти что-то, то смотри функцию
delphi Код:
//..............................................................................function GetItem(ID, FieldIn, FieldOut : integer): integer;
{GetInv(что ищем, № поля где ищем, № поля что возвращать)
где:
ID - искомый код;
FieldIn - по какому полю ищем;
FieldOut - какое поле возвращаем;
1=ItemType1; 2=ObjectID;3=ItemID;4=LocationSlot;5=Count;6=ItemType2;7=CustomType1;
8=isEquipped;9=BodyPart;10=EnchantLevel;11=CustType2;12=AugmentationID;
ex1: GetInv(6408,2,1) - вернет ObjectID свадебного платья, если онное лежит в
инвентаре, иначе вернет -1
ex2: GetInv(6408,2,8) - вернет уровень заточки первого попавшегося в инвентаре
свадебного платья, если свадебного платья нет, то вернет -1
}var
i: integer;
beginfor i:=1to maxitems doif(BaseItems[i,FieldIn]=ID)thenbegin
Result:=BaseItems[i,FieldOut];
exit;
end;
Result:=-1;
end;
//..............................................................................
Кстати, что-то с оид есть в скриптах на заточку...
Добавлено через 2 минуты
Я не из этого скрипта смотрел, но ща попробую разобраться...
Добавлено через 1 минуту
Эмммм... Это для определения всех параметров всех вещей... А мне нужно только ОИД адены в инвентаре... Сейчас попробую открутить все, кроме оид...
Последний раз редактировалось ERASE, 27.01.2009 в 22:08.
Причина: Добавлено сообщение
Возьми готовое и не мучай нас. Три подпрограммы, которые могут найти всё, что угодно в инвентаре. Кстати их уже выкладывали в теме с готовыми функциями.