как то так.
result - результат функции.
его так же можно использовать как локальную переменную.
delphi Код:
// СКОЛЬКО предметов с itemID//-------------------function GetsumitemID(itemID:integer) : integer;
var
i : integer;
begin
Result := 0; //В начале у нас 0 вещей.for i:=1tomaxdoif(BaseItems[i,3]=itemID)theninc(result, BaseItems[i,5]);
end;
// СКОЛЬКО предметов с itemID и Maxlvl//---------------------function GetsumMaxlvl(itemID,Maxlvl:integer) : integer;
var
i : integer;
begin
result := 0;
for i:=1tomaxdoif(BaseItems[i,3]=itemID)and(BaseItems[i,10]=Maxlvl)theninc(result, BaseItems[i,5]);
end;
Добавлено через 2 минуты
кстати... рекомендации - называй переменные своими именами... ибо через неделю ты сам не разберешся в своем же скрипте %)
я про то что у тебя EnchantLevel так же Maxlvl ну и в этом духе..
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 16.09.2009 в 12:22.
Причина: Добавлено сообщение
value1 := func1(params1);
value2 := func2(params2);
if func1(params1) < func2(params2) then
вторая конструкция рекомендуеться к использванию если вызываемая функция содержит циклы либо какието сложные расчеты а функция ее вызывающая использует целевую несколько раз. (ибо лучше пожертвовать памятью чем цп)
var
ItemBase:array[1..100] ofinteger;// создали массив
objectID:integer;
i: integer;
procedure Init; //Вызывается при включении скриптаbeginend;
// при приходе пакетаbeginif FromServer and(pck[1]=#$21)and(ReadD(12)= itemID)thenbegin// при условииif условие then// записать objectID в массив
objectID:=ReadD(8);
for i:=1to100dobeginif(ItemBase[i] == 0)thenbegin// как ЗАПИСАТЬ ?
ItemBase[i]:= objectID; // да просто :)Break; // прерываем дальнейший перебор массива.end;
end;
end;
end;
как мне на примере этого скрипта
добавить функцию чтения из массива objectID
т.е находим ячейку с записью № 1 objectID
провожу действия какие мне надо с objectID
при выполнение определенного условия :
искать запись № 2 также провожу действия и т.д
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
Function ObjIdInArray(value:integer):integer;
var
i : integer;
begin
i := 0;
result := -1;
while(i < itemcount)dobeginif itemarray[i] = value thenbegin
result := i;
exit;
end;
inc(i);
end;
end;
использовать
delphi Код:
var
itempos : integer;
begin
SearchItemPos := 0;
itempos := ObjIdInArray(itemobjectid, startpos);//получаем номер ячейки в массиве итемаррай с указаным обжектайдиif itempos <> -1then//если номер ячейки не равен -1 т.е. ячейка была найденаbegin
blablabla с itemobjectid
end;
end;
брать запись не с чем не сравнивать и использовать.
записи последовательно должны использоваться.
когда мне надо я использую запись 1
потом запись 2
потом запись 3
и т.д
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
в массиве есть
1. несколько одинаковых предметов
2. несколько разных предметов
с разными уровнями заточки.
Как найти минимально заточеный предмет для 1 случая и для 2 ?
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
Function GetMinEnchantedItemByItemId(itemid : integer):integer;
var
i, MinFound : integer;
begin
minfound := $ffff;
result := -1;
i := 0;
while i < колличесвоэлементоввмасивеBaseItems dobeginif(BaseItems[i,3] = itemid)and(BaseItems[i,10] < MinFound)thenbegin
MinFound := BaseItems[i,10];
result := i;
end;
inc(i);
end;
end;
поиск минимально заточеного предмета по итемайди.
delphi Код:
var
index : integer;
begin
index := GetMinEnchantedItemByItemId(itemid);
if index >= 0thenbegin//используем BaseItems[index,1..10]end;
end;
.... BaseItems[index,10] ?
__________________
L2Ext - project closed.
Последний раз редактировалось TAMBIK, 27.10.2009 в 23:29.