farmwl

 Admin
  • Content count

    824
  • Joined

  • Last visited


Everything posted by farmwl

  1. farmwl added a post in a topic Детект чемпионов   

    uses SysUtils; const R = 5555; // Радиус поиска Z = 555; // Ограничение по Z HP = 11111; // Кол-во ХП для сравнения sound = 'Chicken.wav'; // Звуковой сигнал use_names = true; // true: искать по заданному списку; false: искать только по ХП var champions: array of string = ['Гельдрем Бандит', 'Гельдрем Разрушитель']; // Названия мобов для поиска, если use_names = false, то не учитывается procedure find_champions(); var i, j: integer; begin for i:= 0 to npclist.count-1 do // Пробегаем по списку мобов if (user.distto(npclist.items(i)) < R) and // Если дистанция до моба < радиуса поиска И (abs(user.z - npclist.items(i).z) < Z) and // Разность по модулю координаты Z бота и моба < Z И (npclist.items(i).curhp > HP) then begin // Кол-во ХП моба > HP, ТО for j:= 0 to length(champions)-1 do begin // Пробегаем по списку чемпионов if (use_names) and (npclist.items(i).name <> champions[j]) then continue; // Пропускаем неподходящих мобов Engine.MSG(user.name,'Обнаружен чемпион: '+npclist.items(i).name+', [HP: '+inttostr(npclist.items(i).curhp)+'], Dist: '+inttostr(user.distto(npclist.items(i))), 0); // Распечатываем инфу PlaySound(exepath+'/Sounds/'+sound); // Проиграть звук delay(3333); // Подождать end; end; end; // Основная программа begin while true do begin // Запускаем бесконечный цикл delay(111); // Задержка чтобы не грузить проц find_champions(); // Поиск чемпионов end; end.
  2. farmwl added a topic in Script repository   

    Пример взаимодействия двух персонажей
    Пример взаимодействия двух персонажей:

    Master: 
    uses etc, Gludio, Exping, SysUtils; // Подключение Unit'ов // Master - Ведущий // Slave - Ведомый // Перед запуском собрать пт // Скрипт расчитан на ФС'ов begin if (ESlave = nil) then exit; M_GetChars; // Процедура определения персонажей для Ведущего while (User.Exp < 4382832) or (USlave.Exp < 4382832) do begin while (not User.Dead) and (User.Exp<4382832) and (USlave.Exp<4382832) do begin if (not User.InRange(-14479, 123781, -3109, 2000)) then GludioSoE else Gludio; Shop; ToSpot; while (User.DistTo(USlave) > 222) and (not User.Dead) do delay(2222); case SpotNumber of 1: M_Spot1; 2: M_Spot2; end; M_XYZ; M_AT:= 500; while Engine.FindEnemy(M_Enemy, User) and (not User.Dead) do M_Fight; GludioSoE; end; if (User.Dead) then begin print(User.Name+': умер'); Engine.GoHome(); delay(7777); end; end; end.Slave:
    begin if (EMaster = nil) then exit; S_GetChars; // Процедура определения персонажей для Ведомого while (User.Exp<4382832) or (UMaster.Exp<4382832) do begin while (not User.Dead) and (User.Exp<4382832) and (UMaster.Exp<4382832) do begin if (not User.InRange(-14479, 123781, -3109, 2000)) then GludioSoE else Gludio; Shop; ToSpot; while (User.DistTo(UMaster) > 222) and (not User.Dead) do delay(2222); case SpotNumber of 1: S_Spot1; 2: S_Spot2; end; S_XYZ; S_AT:= 500; while Engine.FindEnemy(S_Enemy, User) and (not User.Dead) do S_Fight; GludioSoE; end; if (User.Dead) then begin print(User.Name+': умер'); Engine.GoHome(); delay(7777); end; end; end.+ юниты необходимые для работы: Взаимодействие.zip
    • 0 replies
    • 366 views
  3. farmwl added a post in a topic Отправка почты   

    Engine.SendMail('НикПолучателя', 'Тема', 'ТекстСообщения', [57, 1000000, 4789,1]) // отправит в письме 1кк адены и вуден верх (1шт) Engine.SendMail('НикПолучателя', 'Тема', 'ТекстСообщения', [4789,1, 4789,1],12000) // отправит 2 вуден верха платной почтой за 12к
  4. farmwl added a topic in Script repository   

    Защищаемся от паровозеров
    Функция, которую Вы можете использовать в свои скриптах, для проверки, нет ли поблизости людей, которые пытаются Вас запоровозить:
    uses SysUtils; function check_trains(mobs_count: integer = 5; R: integer = 1500; info_print: boolean = false): boolean; // Функция, проверяющая паровозы вокруг перса в радиусе R и возвращающая true, если мобов больше чем mobs_count. info_print - распатывать инфу о паровозе или нет var i, j, mobs_in_train: integer; begin Result:= false; for i:= 0 to charlist.count-1 do begin mobs_in_train:= 0; if (user.distto(charlist.items(i)) < R*1.5) and (charlist.items(i).moved) then begin for j:= 0 to npclist.count-1 do begin if (npclist.items(j).target = charlist.items(i)) and (charlist.items(i).distto(npclist.items(j)) < R) then inc(mobs_in_train); if (mobs_in_train >= mobs_count) then begin Result:= true; if (info_print) then print('Замечен паровоз из '+inttostr(mobs_in_train)+' мобов, бегут за '+charlist.items(i).name); exit; end; end; end; end; end; begin while delay(777) do begin if check_trains(4, 2000, true) then begin // Если кто-то ведет паровозы из 4+ мобов в радиусе меньше 2к, то // Отключаем интерфейс, делаем релог, или предпринимаем другие меры end; end; end.
    • 5 replies
    • 501 views
  5. farmwl added a topic in Script repository   

    Использование Frenzy по кд
    Пример небольшого скрипта для дестров, который будет переодеваться для слива ХП и юзать фрези:
    uses SysUtils; var frenzy: TL2Skill; function equipped(id: integer): boolean; // Проверка на одетость вещи по ID var i: integer; begin result:= false; for i:= 0 to inventory.user.count-1 do begin if (inventory.user.items(i).id = id) and (inventory.user.items(i).equipped) then begin result:= true; break; end; end; end; procedure equip_smth(var id: array of integer); // Одевает вещи по указанному списку ID var i: integer; begin for i:= 0 to length(id)-1 do begin while (not equipped(id)) do if engine.useitem(id) then delay(333); end; end; begin while (engine.status <> lsOnline) do delay(1111); // Ждем пока зайдем в игру SkillList.byid(176, frenzy); // Объявляем скил Frenzy в переменную while true do begin // Запускаем бесконечный цикл delay(1111); while (engine.status = lsOnline) do begin // Пока онлайн выолняем: delay(1111); if (frenzy.endtime = 0) then begin // Если скил готов к использованию, то equip_smth([7715, 356, 4725]); // Одеваем конверсию, ФП и опять ГС if engine.useskill(176) then print('Frenzy!');// Если использовали скил, то печатаем об этом equip_smth([398, 418]); // Одеваемся обратно в ПЛ сет end; end; end; end.
    • 0 replies
    • 368 views
  6. farmwl added a topic in Script repository   

    Отмена ненужных бафов
    Простой скрипт, пригодится каким-нибудь СБ
    uses SysUtils; procedure Remove_Buffs(var buff_list: array of string); // Отменяет указанный список бафов (по имени) var i, j: integer; begin for i:= 0 to User.Buffs.Count-1 do begin // Пробегаем по списку наших бафов for j:= 0 to Length(buff_list)-1 do begin // Сравниваем со списком бафов для отмены if (User.Buffs.Items(i).Name = buff_list[j]) then begin // Если нашли совпадение, то if Engine.Dispel(User.Buffs.Items(i).Name) then Print('Отменен эффект: '+buff_list[j]); // Отменяем break; // Прерываем текущую итерацию, т.к. список бафов был изменен end; end; end; end; begin while delay(555) do begin // Запускаем бесконечный цикл с небольшой задержкой, чтобы не грузить процессор remove_buffs(['Щит', 'Могущество']); // Вызов отмены бафов, в скобках подается массив с названиями end; end.
    • 0 replies
    • 204 views
  7. farmwl added a topic in Script repository   

    Проверка респа РБ
    Простой вариант проверки: скрипт будет релогаться между всеми персонажами на аккаунте и искать РБ из указанного списка, в случае если найдет, то распечатает инфу в логи и даст звуковое оповещение. Можно настроить так, чтобы если нашел РБ то не релогался дальше а останавливал скрипт.
    uses sysutils, classes; var raid_boss_names: array of string; stop_if_find: boolean; sound_name: string; i, char_count, time_to_loading: integer; procedure set_options(); begin raid_boss_names:= ['Баракиэль', 'Клинок Судьбы Танатос', 'Баюм', 'Шуриэль Пламя Гнева', ''];// Список РБ sound_name:= 'Good.wav'; // Название звукового файла для оповещения stop_if_find:= true; // true: стоп скрипт, если нашел рб; false - продолжит поиск дальше char_count:= 7; // Кол-во персонажей на аккаунте time_to_loading:= 5555; // Время, на прогрузку окружения после входа в игру в мс (1сек = 1000мс) end; procedure check_disconnect(); begin if (engine.status = lsOff) then engine.msg('Script', 'Дисконнект, торможу скрипт', 128); while (engine.status <> lsOnline) do delay(1111); delay(2222+random(2222)); end; function find_raid_boss(): boolean; var i, j: integer; begin result:= false; for i:= 0 to npclist.count-1 do begin for j:= 0 to length(raid_boss_names)-1 do begin if (npclist.items(i).name = raid_boss_names[j]) then begin result:= true; engine.msg(user.name, 'Обнаружил '+raid_boss_names[j]+', Dist: '+inttostr(user.distto(npclist.items(i)))+', Z: '+inttostr(npclist.items(i).z - user.z), 32768); playsound(exepath + 'Sounds/' + sound_name); delay(1111); if (stop_if_find) then script.stop; break; end; end; end; if (not result) then engine.msg(user.name, 'Ничего не нашел, релогаюсь дальше', 0); end; begin set_options(); if (engine.status <> lsOffline) and (engine.status <> lsOnline) then while (engine.status <> lsOffline) do delay(1111); delay(1111); if (engine.status = lsOffline) then if (engine.gamestart) then while (engine.status <> lsOnline) do delay(1111); delay(1111); while (true) do begin delay(111); for i:= 0 to char_count-1 do begin check_disconnect(); if (engine.status = lsOnline) then if (engine.restart) then while (engine.status <> lsOffline) do delay(1111); if (engine.status = lsOffline) then if (engine.gamestart(i)) then while (engine.status <> lsOnline) do delay(1111); delay(time_to_loading); if (engine.status = lsOnline) then find_raid_boss(); end; end; end.
    • 7 replies
    • 422 views
  8. farmwl added a topic in Script repository   

    Возврат на спот
    Простой скелет для возврата на спот. Вам потребуется изменить координаты центра спота и его радиус, а так же записать действия, необходимые для возврата на спот. Это можно легко сделать с помощью плагина Script Recorder
    uses sysutils, classes; const   // Координаты спота   spot_x = 174417;   spot_y = -176091;   spot_z = 736;   // Радиус спота   spot_R = 1111;   procedure return_path();  // Маршрут из города на спот (или край спота), включая диалоги (если нужно) begin   Engine.MoveTo(-19357, 169353, -3012);   Engine.MoveTo(-19968, 170311, -3049);   Engine.MoveTo(-20655, 170422, -3096);   Engine.MoveTo(-20767, 170703, -3112);  end; procedure check_death(); begin   if (user.dead) then begin     print('Умер, воскрешаюсь');     engine.FaceControl(0, false);     while (user.dead) do begin       if engine.GoHome() then delay(3333+random(1111));            if (not user.dead) then delay(5555);     end;     if (user.distto(spot_x, spot_y, spot_z) < spot_R) then engine.FaceControl(0, true)     else begin       return_path();       engine.FaceControl(0, true); print('Вернулся на спот, продолжаю фарм');     end;   end; end; begin   while (engine.status <> lsOnline) do delay(1111); // Ждем, пока персонаж не войдет в игру while true do begin // Запускаем бесконечный цикл   while (engine.status = lsOnline) do begin // Пока в игре крутим проверку     delay(1111);     if (user.distto(spot_x, spot_y, spot_z) < spot_R) then check_death();   end; end; end.
    • 6 replies
    • 1,076 views
  9. farmwl added a post in a topic Проблемы \ решения   

    тебя не смутил пункт "Работает на L2Classic (RU)" когда ты покупал ключ за 300р? на продающей есть ссылка, ведущая на тему Список поддерживаемых серверов, где очень подробно все расписано. на сервера со смарт гвардом требуется версия за 700р, и там есть перечисленные выше сервера
  10. farmwl added a post in a topic многооконка бнс   

    нет
  11. farmwl added a post in a topic Проблемы \ решения   

    в чате на главной добавил
  12. farmwl added a post in a topic Проблемы \ решения   

    Написал в чате же - проблемы с сервером обновлений, нужно потерпеть
  13. farmwl added a topic in Interface set up examples   

    Настройка Toggle-скилов (переключаемых)
    Переключаемые скилы можно настроить в закладке "Атака":

    Сохраняя при этом возможность настроить требуемымые условия
    • 3 replies
    • 2,196 views
  14. farmwl added a topic in Interface set up examples   

    Использование скилов пета \ сумона
    По аналогии с обычными хил скилами, можно настраивать скилы у сумона \ пета, например залив МП Бекаром:

    или баф, как самого себя:

    так и всей пати:

    Еще можно запретить курице бафать нас:

    Так же советую посмотреть видео с полной настройкой сумонера на АОЕ фарм: https://youtu.be/W96h-Ed3nek
    • 0 replies
    • 1,913 views
  15. farmwl added a post in a topic Рес мемберов в пати   

    В закладке Пати Хил-Баф нужно выбрать скил для воскрешения и поставить условие "Если цель мертва". Примерно так:

    В свою очередь, у сопартийцев должен быть настроен автоприем реса. В закладке Пати настройки необходимо включить функцию "Подтверждать все диалоги от": 

  16. farmwl added a topic in Interface set up examples   

    Автоюз душ Камаэлей
    По аналогии можно настроить использование камней для гладов и тиров:

    Интервал и кол-во душ, при котором использовать можно изменять по Вашему усмотрению
    • 0 replies
    • 1,655 views
  17. farmwl added a file in Scripts \ Plug-ins [Lineage II]   

    [L2] Auction v1.3
    Плагин для скупки предметов с аукциона. Запускается с помощью бота L2Adrenalin !
    Plug-in for buying items from Auction House. You need L2Adrenalin bot to start it !
    Цена (Price): 5$ \ мес  (5$ per month)
    Купить (Buy): http://www.oplata.info/asp2/pay_wm.asp?id_d=2140465&lang=en-US
    English description + instructions:
    Особенности:
    Настройки производятся в простом и удобном интерфейсеМожно задать список покупок, для каждого товара указать свои параметрыЛогирование действий плагина в логи ботаИнструкции по запуску (Как пользоваться скрипт апдейтером?):
    Скачать плагин с помощью Script Updater, он будет помещен в папку ..\Adrenalin\Scripts\Auction [by farmwl]\..Запустить Auction.bin с помощью ботаВ появившемся окне ввести ключ, произвести необходимые настройки и пользоваться:
    • 204 downloads
    • 0 comments
    • 0 reviews
  18. farmwl added a post in a topic [Урок 6] Работа с Unit'ами. Разбиение кода на части   

    Без использования процедур - нет. В данном случае нужно просто код вспомогательно скрипта вытащить в процедуру и вызвать во втором скрипте:
    unit unit_1; // название юнита interface // раздел interface procedure procedure_1(); // описание метода, к которому будет доступ, если подключиь этот юнита куда-нибудь implementation // раздел implementation (реализация) procedure procedure_1(); // непосредственно сам метод var i: integer; begin for i:=1 to 10 do print('Исполняем шаг ' + inttostr(i)); end; end.  
    uses unit_1; // подключили наш юнит begin print('Начали основной скрипт'); procedure_1(); // вызываем метод, описанный в юните print('Закончили основной скрипт'); end.Модули (юниты) должны находиться в той же папке что и главный скрипт
  19. farmwl added a post in a topic многооконка бнс   

    она и так есть, в скайп пиши
  20. farmwl added a post in a topic Запись видео с экрана   

    она крайне многофункциональна, скрины \ гифки \ видео, возможность настраивать кодеки, автоматическая выгрузка на большинство популярных сервисов, редактирование изображений и тд. 
  21. farmwl added a post in a topic Запись видео с экрана   

    Ну тогда в догонку еще: https://getsharex.com/
  22. farmwl added a topic in Script repository   

    Как правильно вставить код скрипта?
    При выкладывании кода скриптов на форум, его обязательно нужно оформлять в соответствующий тег. Берегите свои и чужие глаза, ведь порой даже подсветка синтаксиса не гарантирует нормальную читаемость кода, а без нее код может выглядеть совершенно не читаемым.
    Итак, как правильно включить подсветку синтаксиса?

    На выходе получаем:
    begin   init();  // Инициализация   while delay(55) do begin     x:= User.X; y:= User.Y; Z:= User.Z;     if (rec) then begin       dist:=sqrt(sqr(dx-x)+sqr(dy-y)+sqr(dz-z));         if (dist > delta) then begin           { если смещение больше указанного, то записываем точку }           PlaySound(ExePath+'point.wav');           dx:= x; dy:= y; dz:= z;           path.add('  move_to('+ftostr(dx)+', '+ftostr(dy)+', '+ftostr(dz)+');');           if (jump) then begin             path.add('engine.usekey(32);');             jump:= false;           end;           engine.print('Add point: №'+inttostr(path.count-1)+': R: '+inttostr(round(dist)), 0);         end;     end;   end; end.
    • 0 replies
    • 345 views
  23. farmwl added a post in a topic Сервис управления ключами   

    1. в паблик код выкладывать не благоразумно
    2. перепривязка происходит автоматически когда пользователь попытается запустить ключ с нового ПК, в админ панели лишь включается-выключается эта возможность. Т.е. просто если пользователь запускает свой ключ с другого ПК то ему либо будет отказано в доступе, либо будет доступ, но -1 сутки ключа. 
    3. ключи несут лишь ответ о том, разрешен доступ или нет (в различных вариантах), контроль и проверки на кол-во запущенных сессий - это уже без проблем можно защить в самом скрипте. ключи можно пооконными делать - насчитал 4 валидных ключа из 10 - дал доступ только к 4ем сессиям скрипта
  24. farmwl added a topic in ArcheBox   

    Автовход на сервер с помощью многооконки
    Чтобы оконка сама выбирала сервер и заходила на персонажа нужно всего лишь активировать кнопку с изображением приоткрытой двери, справа от МА (менеджера аккаунтов).

    Ну и разумеется в настройках аккаунта должен быть указан сервер, на который нужно заходить.
    Так же, для контроля окон (т.е. авторелогина при дисконекте) нужно включить "спасательный круг"
    • 0 replies
    • 2,357 views
  25. farmwl added a file in Scripts \ Plug-ins [Lineage II]   

    [L2] Script Recorder v1.4
    Плагин-помощник для записи в скрипт ваших действий. Запускается с помощью Adrenalin bot
    This simple plug-in helps you to write scripts. You will need Adrenalin bot to start it
    English description:
    Русское описание:
    Функционал:
    Записывает передвижение \ смену таргета \ открытие и выбор диалогов \ сканирует и записывает отправленные bypass'ыПри необходимости генерируются комментарииПарсит и удобно форматирует открытие диалоги (для помощи с Engine.BypassToServer) + подсветка выборов ответа и самих bypass'овИнструкция по запуску (Как использовать Script Updater?):
    Скачать плагин, используя Script Updater, он будет скачан в папку ..Adrenalin/Scripts/Script_Recorder [by farmwl]/..В Адреналине открыть и запустить файл Script_Recorder.enc Настроить необходимые опции - теперь ваши действия записываются в отдельное поле 

    • 4,259 downloads
    • 0 comments
    • 3 reviews