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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 29.05.2008, 19:29   #1
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Скрипт на заточку

Автоматизация заточки предметов до необходимого уровня by NLObP

Возможности скрипта
--------------------
+ Панель управления;
+ Затачиваем по очереди все предметы с ItemID пока не переломаем
или не заточим. Один предмет всегда остаётся.

Необходимо затариться оружием, заточками и валерьянкой.
Name='NLObP'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=true; //Interlude - true, C4 - false

Внимание!
Из комбобокса обязательно надо выбрать вещь, чтобы скрипт узнал
ID и количество, только потом ставить напротив галочку.
Галочки снимать не надо, если кончились заточки/вещи - можно сразу идти
покупать и продолжать заточку.
В инвентаре должно быть не менее двух одинаковых затачиваемых вещей, степень заточки значения не имеет


Скрипт распространяется как есть, и я не несу ответственности за то, что ВЫ натворили у себя, его используя.

by NLObP
для С4 и Интерлюдии можно взять здесь
для Грации можно взять здесь

by Breadfan
скрипт переделанный под камаель (с автопокупкой).

by Shadow
Скрипт заточки предметов с их закупкой при необходимости

Этот скрипт помогает в рутине, когда разрешено пользователям 100% точить до большой величины, скажем до +200, ручками то замучаешься точить.

PS: скрипты - это облегчение рутинной работы человека.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.JPG
Просмотров: 14769
Размер:	24.8 Кб
ID:	39  
Вложения
Тип файла: rar breadfan_enchant.rar (5.9 Кб, 4227 просмотров)
Тип файла: rar credo_enchant.rar (2.7 Кб, 2349 просмотров)
Тип файла: zip enchant_by_NLObP_01.zip (7.4 Кб, 2861 просмотров)
Тип файла: zip enchant_by_NLObP_02.zip (71.6 Кб, 1458 просмотров)
Тип файла: zip enchant_by_NLObP_03.zip (71.8 Кб, 1262 просмотров)
Тип файла: zip enchant_by_NLObP_04.zip (73.3 Кб, 1592 просмотров)
Тип файла: zip enchant_by_NLObP_06.zip (9.4 Кб, 1264 просмотров)
Тип файла: zip enchant_by_NLObP_07.zip (9.4 Кб, 1569 просмотров)
Тип файла: rar enchant_by_NLObP_08.rar (6.3 Кб, 1857 просмотров)
Тип файла: rar enchant_by_NLObP_09.rar (6.3 Кб, 5540 просмотров)
Тип файла: rar shadow_enchant.rar (9.6 Кб, 3672 просмотров)

Последний раз редактировалось NLObP, 31.08.2009 в 01:20.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился 114 спасибками от:
4erteg, 4iter, 8tomat8, abyabar, Agat, Alan, AlexStar, Alta1r, AoWpwnz, aSeSSoR, BEJIEC, bestar, BimSkaLaBim, BioDread, BOTt, Breadfan, BuKbI4, C0derxWarr1or, cadaver, catchy, ChiterEPT, coffee, Comedylife, CriticalError, Crypto, Dagon, DarthShelL, DARTY, David, DeadForz, dfackk, dmitrix, Doberman, dyh9l, dynda2000, eGoIST, Elfinit, ERASE, esk71, Fer123, Fvbkm, Ga6pueL, GanGsta0, GANsss, givemexxx, Gray314, Green, Grinch, Gurg, HooleeCheeter, Hwoarang, idkfa, Imperial2008, Irritant, iSee, jiroo, KPOT^^, KrasX, LamerOK, LeroI, leto, Leviy, lodek, LostQ, LoveCoderX, lPomalSveNl, maxstro, Meth0d, micoach, MONDBLITZ, Necrolity, Nerevar, Niksan, nneett, Op4er, Paulo, Pinko, Piter, Pitkin, Porcupine, Porshesh, Random-al, ReaGeN, ReiN, Ribnadzor, RinZo, RODMAN91, rubela, saidbek, SELLER, Sergey, SexGuru, Shadow, Siberia, skaner, someonce1, Source, TAMBIK, Tanuxa, tiranosaur, Tos, Tzio 7, vahes, VanTG, VasQ, winer, WOLf!, Xelat, YssurTiger, zotrussia, Виталий, Витя, Р0ма, ®ennie™
Старый 13.08.2008, 11:48   #41
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
По умолчанию

Цитата:
Сообщение от NLObP Посмотреть сообщение
NLObP
Вобщем посмотрел в пакетах ОбджектИД продавцов, и пытался их отловить через скрипт, чтобы понять какой у них ИД, чтобы смещение вычислить. Так ничего и не получилось. Пользуюсь таргетом через явный ОИД. Чего скажешь по скрипту и предыдущему вопросу?
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 13.08.2008, 22:39   #42
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
Вобщем посмотрел в пакетах ОбджектИД продавцов, и пытался их отловить через скрипт, чтобы понять какой у них ИД, чтобы смещение вычислить. Так ничего и не получилось. Пользуюсь таргетом через явный ОИД. Чего скажешь по скрипту и предыдущему вопросу?
Иди в место где есть 1-2 NPC, там проще будет. Отследи пакеты NpcInfo и сравни NpcID в пришедших пакетах и из npcsid.ini для них же. Разница и будет kID.

Наприме Гиран-харбор, там три Npc:
delphi Код:
npcid.ini                                              NpcInfo 7878=Angelina Gatekeeper                      NpcTypeId: 1030878 7879=Felton Wharf Manager                    NpcTypeId: 1030879 8573=Monakan Fishermen's Guild Member   NpcTypeId: 1031573 kId = 1030878-7878 = 1023000
Пробуешь подсчитать разницу между тем что в NpcInfo и тем что должно быть и это будет kID. Понятно? Как определишь kID, тогда сможишь соотносить NpcID с NpcObjectId.

delphi Код:
#$16: begin         msg.Lines.Add('S>Пакет NpcInfo #$16'+inttostr(ReadD(2)));         //        OID       ID         AppendNpc(ReadD(2), ReadD(6)); //добавляем в базу данных         if (FishermanID=ReadD(6)-kID) then begin           EditFishermanOID.text:=inttostr(ReadD(2));           FishermanOID:=strtoint(EditFishermanOID.text);         end;       end;

По скрипту пока ничего не скажу, проверить работу негде.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 14.08.2008, 01:34   #43
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Восклицание

2 NLObP
Все, спасибо, разобрался. Проблема была в том что у меня были неверные ID продавцов, которые мне выдал IG. Теперь нашел верные, смещение такое же.

Подскажи пожалуйста, как реализовать данный алгоритм:
  • Вводные: Мы знаем кол-во Аден, цену итема, и кол-во свободных слотов.
  • К примеру. Есть 2млрд Аден, цена АС 200млн, свободно 40 слотов.
Понятное дело что за раз мы столько не купим, поэтому я как понимаю нужно что-то типа этого:
Код:
начало
  запрос кол-ва аден
  если (ценашмотки*свободслотов<аден) то
   закупка по циклу на свободслоты
  иначе
   цикл до свободслотов 
    закупка на сколько хватит
    обмен денег
  конец
конец
Сейчас оно у меня в таком виде:
delphi Код:
procedure BuyItems(EmptySlots: integer); //тут видимо вообще не нужно указывать переменную, тк она глобальная var   Cnt, IoA: integer; //Item on Adena begin  if InBase then begin   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   if CanChange then CoLChange;   TargetAttacker('Roy', RoyOID);   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   IoA:=(trunc(Adena/ItemPrice)); // TargetAttacker(ObjectID);   RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));   delay(500); // ждем окно   if (IoA>EmptySlots) then begin    for Cnt:=1 to EmptySlots do begin     RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);     delay(BuyDelay);    end;   end else begin    for Cnt:=1 to IoA do begin     RequestMultiSellItem(ItemListID, ItemEntryID, BuyItemCount);     delay(BuyDelay);    end;   end;  end; end;

И всетаки, как сделать закупку чтобы с каждым итемом база обновлялась? А то происходит вот что:
Код:
Удаляем предмет!
i=51 ItemOID=1075255597 ItemID=959 кол-во=1 ItemLVL=0
Деньги закончились! Прервано!
Winnie ObjectID=1209014842 Player=1213259366
Покупаем ListID:576 EntryID:3 в кол-ве:100
{...
...
...}
Покупаем ListID:576 EntryID:3 в кол-ве:100
Roy ObjectID=1209014840 Player=1213259366
Задействовали скролл ScrollID=959 ScrollOID=1075255607
Изменяем параметры предмета!
i=95 ItemOID=1075227868 ItemID=4037 кол-во=3384753 ItemLVL=0
Изменяем параметры предмета!
i=73 ItemOID=1075227891 ItemID=57 кол-во=9691800 ItemLVL=0
{...
...
...}
i=95 ItemOID=1075227868 ItemID=4037 кол-во=3382853 ItemLVL=0
Изменяем параметры предмета!
i=73 ItemOID=1075227891 ItemID=57 кол-во=2089691800 ItemLVL=0
Покупаем ListID:559 EntryID:17 в кол-ве:1
Пробуем улучшить ItemID=6592 ItemOID=1075249921
Изменяем параметры предмета!
Тоесть сначала пробегает цикл, потом он успевает сменить таргет, и только после этого итемы начинают заносится в базу. Из-за этого было переполнение кошелька.
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 14.08.2008, 07:20   #44
Рыцарь
 
Аватар для dmitry501
 
Регистрация: 01.10.2007
Сообщений: 293
Сказал Спасибо: 42
Имеет 50 спасибок в 37 сообщенях
dmitry501 пока неопределено
По умолчанию

Циклы не используй в главном потоке. Используй сквозное программирование. Учти, твой скрипт вызывается в секунду несколько раз. Не нужно тормозить обмен клиента с сервером.
dmitry501 вне форума   Ответить с цитированием
Старый 15.08.2008, 03:36   #45
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
dmitry501, пример реализации можно?
В главной секции begin ... end. должна быть, по возможности, только реакция на приходящие пакеты, то есть вызов соответствующих подпрограмм.

Добавлено через 2 минуты
Цитата:
Сообщение от freak Посмотреть сообщение
можно пример для работы на c4?
пожалуйста.
К кому и какому скрипту относится вопрос? Если к моему то там просто настроить его надо. Для этого почитать в начале скрипта описание.

Код:
Name='имя_чара'; //Вписать сюда имя чара
//установить константу в зависимости от типа игры (С4 или Интерлюд)
interlude=false; //Interlude - true, C4 - false
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни



Последний раз редактировалось NLObP, 15.08.2008 в 03:36. Причина: Добавлено сообщение
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 15.08.2008, 13:14   #46
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Вопрос

2 NLObP
А у меня циклов в главной секции нет. Все циклы в процедурах.
Вообщем ковыряю твою рыбалку на предмет корректной закупки. Вроде суть понял, но есть вопросы:
1. Не понятно как вызывать закупку при поломке шмоток, или когда все заточилось. Предполагаю что в процедуре ОнТаймер ставить ReadyToMultiSell:=True; Но как-то еще нужно считать сколько слотов, сколько можно закупить, и тд.
2. Он будет кидать таргет, байпас, и мультиселл при входе каждого пакета?
3. Например, я поставил оставлять 5 итемов вместо 1, и вот уже в инвентаре есть 5 итемов с нужным уровнем. Как сделать чтобы он оставлял именно те 5 что точил в текущем цикле? Типа есть 5 штук +16, а в текущем (с новой закупки) он заточил только до +10. Нужно считать именно те 5 штук +10 что точили, исключая 5 с заданым уровнем, закупаем еще, и дальше точим.
4. ReadyToMultiSell ловится в главной секции без привязки к конкретным пакетам?
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 15.08.2008, 13:50   #47
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Shadow, покупка разорвана на несколько этапов.
покупка состоит из следующих шагов:

1. Мы начинаем покупку установив таргет на продавце:
таргет на продавце, пауза, снова таргет (c04=Action, c04=Action)

2. Потом ждем сообщения от продавца:
приходит s0F=NpcHtmlMessage:d(MessageID)s(HTML)d(d)

3.Выбираем требуемый пункт:
шлем выбранный пункт из меню c21=RequestBypassToServer:s(Cmd)

4. Опять ждем сообщения от продавца:
приходит s11=BuyList:d(Money)h(ListID)w(ListCount)w(ItemTyp e1)h(ObjectID)i(ItemID)d(maxcnt)w(ItemType2)w(h)d( ItemBodyPart)

5. По нужному ID подсчитывае сколько надо вещей Count, запоминаем ListId.

6. Всё это шлем в пакете покупки:
шлем c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d( Count)

Замечание:
Так как в основном цикле приходят пакеты, даже когда мы их не ждём, то надо дополнительно флагами, например ReadyToMultiSell, разрешать отслеживание тех или иных пакетов.

PS: надеюсь понятно.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни



Последний раз редактировалось NLObP, 15.08.2008 в 14:00.
NLObP вне форума   Ответить с цитированием
Старый 15.08.2008, 14:28   #48
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Лампочка

Цитата:
Сообщение от NLObP Посмотреть сообщение
Замечание:
Так как в основном цикле приходят пакеты, даже когда мы их не ждём, то надо дополнительно флагами, например ReadyToMultiSell, разрешать отслеживание тех или иных пакетов.
PS: надеюсь понятно.
Это понятно, сам принцип покупки мне давно известен, и (криво), но реализован в моей версии посредством циклов.
Я говорю вот о чем. Предположим свободно 80 слотов. И получается что все 80 раз будет посылаться таргет, байпасс, и РМС, что не есть хорошо. Хотя нужно послать один раз таргет, один раз байпасс, и 80 раз рекуестмультиселл. При обмене соотвественно таргет на другого кота, байпасс, и нужное количество РМС для обмена.
__________________
Shadows anywhere...
Shadow вне форума   Ответить с цитированием
Старый 15.08.2008, 22:12   #49
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

Цитата:
Сообщение от Shadow Посмотреть сообщение
Предположим свободно 80 слотов. И получается что все 80 раз будет посылаться таргет, байпасс, и РМС, что не есть хорошо. Хотя нужно послать один раз таргет, один раз байпасс, и 80 раз рекуестмультиселл. При обмене соотвественно таргет на другого кота, байпасс, и нужное количество РМС для обмена.
Готовь пакет на все 80 предметов
Код:
c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d( Count)
d(BuyCount) - сколько будет повторов -> i(ItemID)d( Count)

к примеру
Код:
id          -    #$1F
h(ListID) -      #$1234567
d(BuyCount)    - 80
i(ItemID)      - #$123
d( Count)      - 1
... ( повторяем в цикле)
i(ItemID)      - #$800
d( Count)      - 1
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 16.08.2008, 23:47   #50
Новичок
 
Аватар для Shadow
 
Регистрация: 06.08.2008
Сообщений: 27
Сказал Спасибо: 8
Имеет 11 спасибок в 7 сообщенях
Shadow пока неопределено
Восклицание

Цитата:
Сообщение от NLObP Посмотреть сообщение
Готовь пакет на все 80 предметов
Код:
c1F=RequestBuyItem:h(ListID)d(BuyCount)i(ItemID)d( Count)
d(BuyCount) - сколько будет повторов -> i(ItemID)d( Count)

к примеру
Код:
id          -    #$1F
h(ListID) -      #$1234567
d(BuyCount)    - 80
i(ItemID)      - #$123
d( Count)      - 1
... ( повторяем в цикле)
i(ItemID)      - #$800
d( Count)      - 1
Так у меня ведь не RequestBuyItem, а RequestMultiSell, тоесть обмен. А там такого нет.

Добавлено через 13 часов 42 минуты
Переделал обменную часть от рыбалки. Но периодически он останавливается. И постоянно слетает коннект. Посмотрите, что я не так сделал:
delphi Код:
//****************************************************************************** //.............................................................................. // Закупка procedure Shoping(Sender: TObject); begin  timer.Enabled:=False;  Change.Enabled:=False; // if ShopMode=1 then begin   if NeedToBuy then exit; //если еще не обменяли предыдущую вещь, то выходим сразу   if (RoyOID=0) then begin     //(RoyOID=0) or     Shops.Enabled:=False; //останавливаем торговлю     stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');     exit; //выходим   end;   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   if (Adena<ItemPrice) then begin    Shops.Enabled:=False; //останавливаем    stats.Lines.Add('Не хватает денег.');    NeedToChange:=True; //   Shops.Enabled:=True;    exit;   end;   if (EmptySlots<=2) then begin //проверка на выход    Shops.Enabled:=False; //останавливаем торговлю    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Всё закупили!');    CurEnchLvl:=0;    Edit2.text:=IntToStr(CurEnchLvl);    EditBuyDelay.Enabled:=False;    timer.Enabled:=True;   end    else   begin    msg.Lines.Add('Цель Roy >');    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Готовы обменять: '+IntToStr(EmptySlots-2));    NeedToBuy:=True; //готовы обменивать   end; end; //.............................................................................. //.............................................................................. // Обмен procedure OnChange(Sender: TObject); begin  timer.Enabled:=False;  Shops.Enabled:=False;   if NeedToChange then exit; //если еще не обменяли предыдущую вещь, то выходим сразу   if (WinnieOID=0) then begin     //(RoyOID=0) or     Change.Enabled:=False; //останавливаем торговлю     stats.Lines.Add('Не определены OID! Требуется отбежать подальше и вернуться.');     exit; //выходим   end;   AdenaCounter(CoLChangeCount, CanChange, CanBuy);   if (Adena>=1900000000) then begin //проверка на выход    Change.Enabled:=False; //останавливаем    TargetAttacker('Roy', RoyOID); //таргет    msg.Lines.Add('Всё обменяли!');    timer.Enabled:=True;   end    else   begin    msg.Lines.Add('Цель Winnie >');    TargetAttacker('Winnie', WinnieOID); //таргет    msg.Lines.Add('Готовы обменять: '+IntToStr(ColChangeCount));    NeedToChange:=True; //готовы обменивать   end; end; //.............................................................................. //****************************************************************************** //****************************************************************************** procedure OnTimer(Sender: TObject); begin  EditItemVal.Text:=IntToStr(SumItem(ItemID));  EditScrollVal.Text:=IntToStr(SumItem(ScrollID));  if (Adena<=99000000) then begin   stats.Lines.Add('Деньги закончились! Меняем...');   timer.Enabled:=False;   NeedToChange:=True;// else exit;   Change.Enabled:=True;  end;  if (CurEnchLvl>=StrToInt(Edit1.Text)) then begin   stats.Lines.Add('Sum '+IntToStr(SumItem(ItemID))+' lvl'+IntToStr(CurEnchLvl)+' Ed'+(Edit1.Text));   timer.enabled:=false;   //Пакет RequestItemList   buf:=hstr('0F');   SendToServerEx(Name);   delay(50);   stats.Lines.Add('Достигнут требуемый уровень! Закупаем...');   stats.Lines.Add('Свободно слотов: '+IntToStr(EmptySlots));   if (EmptySlots>0) then begin    ButtonBuyItems.Enabled:=True;    ButtonBuyItems.Caption:=((ComboBoxItem.Text)+': '+IntToStr(EmptySlots)+'шт.');   end; {  if (SumItem(ItemID)>=10) and (CurEnchLvl>=StrToInt(Edit1.Text)) then begin    stats.Lines.Add('Max '+IntToStr(MaxEnchLvl));    stats.Lines.Add('Заточено 10шт '+IntToStr(MaxEnchLvl)+' уровня!');    inc(MaxEnchLvl);    stats.Lines.Add('Увеличиваем уровень: '+IntToStr(MaxEnchLvl));    Edit1.Text:=(IntToStr(MaxEnchLvl));   end; }   NeedToBuy:=True;   Shops.Enabled:=True;   //exit;  end;  if (SumItem(ItemID)<=StrToInt(EditKeepItems.Text)) then begin   timer.enabled:=false;   buf:=hstr('0F');   SendToServerEx(Name);   stats.Lines.Add('Ограничение по поломкам - '+IntToStr(EditKeepItems.Text)+'! Закупаем...');   delay(50);   NeedToBuy:=True;   Shops.Enabled:=True;  end;  ScrollOID:=GetItem(ScrollID,0);  if (ScrollOID<=3) then begin   stats.Lines.Add('Свитки закончились! Покупаем...');   timer.enabled:=False;   //***** Закупка заточек *   BuyScroll;   //***********************   delay(50);   timer.enabled:=True;   //exit;  end;  UseItem(ScrollOID);  msg.Lines.Add('Задействовали скролл ScrollID='+IntToStr(scrollID)+' ScrollOID='+IntToStr(ScrollOID));  ready:=true; //готовы затачивать end; //============================================================================== // вызывается при приходе каждого пакета, если скрипт включен //****************************************************************************** Begin //****************************************************************************  if pck='' then exit; //****************************************************************************  if NeedToChange and (WinnieOID<>0) then begin   if (ConnectName=Name) and FromServer then begin    case pck[1] of     #$0F: begin            msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');            msg.Lines.Add(IntToStr(ReadD(4)));            if (ReadD(2)=WinnieOID) then begin             delay(350);             RequestByPassToServer('menu_select?ask=-303&reply=576');             msg.Lines.Add('C>Пакет RequestBypassToServer');            end;           end;     #$D0: begin            msg.Lines.Add('S>Пакет MultiSellList #$D0');            delay(350);            RequestMultiSellItem(576, 3, 100);            NeedToChange:=False;           end;    end;   end;  end;  if NeedToBuy and (RoyOID<>0) then begin   if (ConnectName=Name) and FromServer then begin    case pck[1] of     #$0F: begin            msg.Lines.Add('S>Пакет NpcHtmlMessage #$0F');            msg.Lines.Add(IntToStr(ReadD(4)));            if (ReadD(2)=RoyOID) then begin             delay(350);             RequestByPassToServer('menu_select?ask=-303&reply='+IntToStr(ItemListID));             msg.Lines.Add('C>Пакет RequestBypassToServer '+IntToStr(ItemListID));            end;           end;         #$D0: begin            msg.Lines.Add('S>Пакет MultiSellList #$D0');            delay(350);            RequestMultiSellItem(ItemListID, ItemEntryID, ItemCount);            NeedToBuy:=False;           end;    end;   end;  end; //****************************************************************************  
Может зря я два таймера использовал, и можно на одном это сделать?
__________________
Shadows anywhere...

Последний раз редактировалось Shadow, 16.08.2008 в 23:47. Причина: Добавлено сообщение
Shadow вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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