Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 16.09.2009, 11:53   #11
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

alexteam,
я так для примера
насчет ошибок х..р с ними
что здесь делать . добавить
что нехватает
//<<<<<=== ЧТО ТО НАДО
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 16.09.2009, 12:22   #12
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

как то так.
result - результат функции.
его так же можно использовать как локальную переменную.

delphi Код:
// СКОЛЬКО предметов с itemID //------------------- function GetsumitemID(itemID:integer) : integer; var   i : integer; begin   Result := 0; //В начале у нас 0 вещей.   for i:=1 to max do     if (BaseItems[i,3]=itemID) then       inc(result, BaseItems[i,5]); end; // СКОЛЬКО предметов с itemID и Maxlvl //--------------------- function GetsumMaxlvl(itemID,Maxlvl:integer) : integer; var   i : integer; begin   result := 0;   for i:=1 to max do   if (BaseItems[i,3]=itemID) and (BaseItems[i,10]=Maxlvl) then   inc(result, BaseItems[i,5]); end;

Добавлено через 2 минуты
кстати... рекомендации - называй переменные своими именами... ибо через неделю ты сам не разберешся в своем же скрипте %)
я про то что у тебя EnchantLevel так же Maxlvl ну и в этом духе..
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 16.09.2009 в 12:22. Причина: Добавлено сообщение
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 16.09.2009, 14:31   #13
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

функции, если грубо = переменные


if func1(params1) < func2(params2) then

равносильно

value1 := func1(params1);
value2 := func2(params2);
if func1(params1) < func2(params2) then

вторая конструкция рекомендуеться к использванию если вызываемая функция содержит циклы либо какието сложные расчеты а функция ее вызывающая использует целевую несколько раз. (ибо лучше пожертвовать памятью чем цп)
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 23.09.2009, 16:49   #14
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

delphi Код:
var      ItemBase:array[1..100] of integer;// создали массив      objectID:integer;      i: integer; procedure Init; //Вызывается при включении скрипта begin end; // при приходе пакета begin      if FromServer and (pck[1]=#$21)  and (ReadD(12)= itemID) then begin           // при условии           if  условие then                // записать  objectID в массив                objectID:=ReadD(8);                for i:=1 to 100 do begin                     if (ItemBase[i] == 0) then begin                                             // как  ЗАПИСАТЬ ?                          ItemBase[i]:= objectID;  // да просто :)                          Break// прерываем дальнейший перебор массива.                     end;                end;          end;      end;
как мне на примере этого скрипта
добавить функцию чтения из массива objectID
т.е находим ячейку с записью № 1 objectID
провожу действия какие мне надо с objectID
при выполнение определенного условия :
искать запись № 2 также провожу действия и т.д
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 23.09.2009, 18:07   #15
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

12й пост поправить
delphi Код:
Function ObjIdInArray(value:integer):integer; var i : integer; begin   i := 0;   result := -1;   while (i < itemcount) do   begin     if itemarray[i] = value then       begin         result := i;         exit;       end;     inc(i);   end; end;

использовать
delphi Код:
var itempos : integer; begin SearchItemPos := 0; itempos := ObjIdInArray(itemobjectid, startpos);//получаем номер ячейки в массиве итемаррай с указаным обжектайди if itempos <> -1 then //если номер ячейки не равен -1 т.е. ячейка была найдена   begin     blablabla с itemobjectid   end; end;
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 24.09.2009, 21:32   #16
Местный
 
Регистрация: 25.11.2007
Сообщений: 48
Сказал Спасибо: 34
Имеет 14 спасибок в 12 сообщенях
pascalpwnz
По умолчанию

Цитата:
Сообщение от TAMBIK Посмотреть сообщение
а проще просто брать из массива
запись 1
запись 2
и т.д как это сделать?
эээм... бртаь из массива ? ну

delphi Код:
begin  for i:=1 to 100 do   begin    if mas[i]=... then  // i - номер записи     ...      end; end.
pascalpwnz вне форума   Ответить с цитированием
За это сообщение pascalpwnz нажился спасибкой от:
Старый 25.09.2009, 10:17   #17
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
мая твая не панимает...
брать запись не с чем не сравнивать и использовать.
записи последовательно должны использоваться.
когда мне надо я использую запись 1
потом запись 2
потом запись 3
и т.д
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 25.09.2009, 16:36   #18
Местный
 
Регистрация: 25.11.2007
Сообщений: 48
Сказал Спасибо: 34
Имеет 14 спасибок в 12 сообщенях
pascalpwnz
По умолчанию

Ну так обращайся к записи по номеру mas[1] , mas[2] , mas[3] и делай что надо...
pascalpwnz вне форума   Ответить с цитированием
За это сообщение pascalpwnz нажился спасибкой от:
Старый 16.10.2009, 10:35   #19
Рыцарь
 
Аватар для TAMBIK
 
Регистрация: 03.03.2009
Сообщений: 773
Сказал Спасибо: 361
Имеет 300 спасибок в 168 сообщенях
TAMBIK на пути к лучшему
По умолчанию

Код:
  BaseItems[i,1]:=ReadH(j);  
      BaseItems[i,2]:=ReadD(j);  
      BaseItems[i,3]:=ReadD(j);  //ItemID
      BaseItems[i,4]:=ReadD(j);  
      BaseItems[i,5]:=ReadD(j);  //Amount: 
               j:=j+4;         
      BaseItems[i,6]:=ReadH(j);
      BaseItems[i,7]:=ReadH(j);
      BaseItems[i,8]:=ReadH(j);
      BaseItems[i,9]:=ReadD(j);
      BaseItems[i,10]:=ReadH(j);//EnchantLevel
в массиве есть
1. несколько одинаковых предметов
2. несколько разных предметов
с разными уровнями заточки.
Как найти минимально заточеный предмет для 1 случая и для 2 ?
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать
TAMBIK вне форума   Ответить с цитированием
Старый 16.10.2009, 11:52   #20
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

delphi Код:
Function GetMinEnchantedItemByItemId(itemid : integer):integer; var   i, MinFound : integer; begin   minfound := $ffff;   result := -1;   i := 0;   while i < колличесвоэлементоввмасивеBaseItems do   begin   if (BaseItems[i,3] =  itemid) and (BaseItems[i,10] < MinFound) then     begin       MinFound := BaseItems[i,10];       result := i;     end;   inc(i);   end; end;

поиск минимально заточеного предмета по итемайди.
delphi Код:
var index : integer; begin index := GetMinEnchantedItemByItemId(itemid); if index >= 0 then   begin   //используем BaseItems[index,1..10]   end; end;
.... BaseItems[index,10] ?
__________________
L2Ext - project closed.

Последний раз редактировалось TAMBIK, 27.10.2009 в 23:29.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:16.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!