farmwl

 Admin
  • Количество публикаций

    801
  • Зарегистрирован

  • Посещение


Все публикации пользователя farmwl

  1. farmwl добавил сообщение в теме Проблемы \ решения   

    а ты уверен, что у тебя версия с волкером?
    оконка за 300р - это именно оконка, без волкера. для волкера ключи пооконные от адреналина подходят если что
  2. farmwl добавил тему в L2Adrenalin   

    Как узнать свои координаты? Запись маршрута в L2Adrenaline боте
    Существует 2 способа записи маршрута:
    Запись текущих (своих) координат.
    Тут все просто - Вы становитесь активным персонажем в нужную точку, переходите в многооконку, ставите курсор мыши в нужное место (в скрипте) и нажимаете сочетание клавиш Alt + V (это работает как с Ctrl+V, только Alt+V). Все, ASI записала текущие координаты туда, где был установлен курсор мыши.Запись маршрута встроенным рекордером.  
    Вы должны поставить курсор мыши в нужное место в скрипте и активировать функцию записи (красный кружок, расположен в закладке скрипт).
    Теперь Вам остается просто кликать мышкой в игре, каждый клик будет записываться рекордером, преобразуя координаты в готовые MoveTo. 
    • 0 ответов
    • 383 просмотра
  3. farmwl добавил тему в L2Adrenalin   

    Работа с динамическими bypass'ами. Парсинг. Регулярные выражения.
    Сейчас админы серверов изобретают различные методы противодействия ботам. В этой статье будет рассмотрено, какие методы защиты применяются в диалогах, направленные на то, чтобы затруднить ботам их работу, в то время как для обычных игроков подобные меры защиты скорей всего будут даже не заметны.
    Пока я разрабатывал и тестировал скрипт для Adrenalin'a на прохождение квестов на ТТ рецепты, я встретил несколько способов, которые и будут описаны ниже. Для удобства я буду рассматривать диалог с Джереми, у которого берутся эти квесты. Для удобного просмотра диалогов в процессе работы можно воспользоваться Script Recorder'ом.
    Динамически меняющийся bypass (например, на euro-pvp.com). Самый простой случай - сама фраза, которую мы хотим выбрать не меняется, но с каждым новым открытием диалога меняется bypass, который нужно отправить. Обычно данный способ комбинируют с каким-нибудь еще.
    <a action="bypass -h 0-739772929">[Доставка ликера (In progress)]</a><br> // 0-739772929 <a action="bypass -h 01784106480">[Доставка яиц (In progress)]</a><br> // 01784106480<a action="bypass -h 0-739859206">[Доставка ликера (In progress)]</a><br> // 0-739859206 <a action="bypass -h 01784133759">[Доставка яиц (In progress)]</a><br> // 01784133759 Замена одной или нескольких букв в строчке (например, на emerial.ru). Длина строки при этом не меняется. Как правило, в исходной строке заменяют пару букв, так что бегло взглянув это можно даже не заметить. Например, вместо "Доставка яиц" будет "Досrавка яиц". Этот способ как раз и используется в дополнение к предыдущему, т.е. при каждом новом открытии диалога меняется и строка ответа и bypass. Данный способ мешает нам искать bypass по заранее известной подстроке, <a action="bypass -h 01736714927">[Доставка ликdра]</a><br> // 01736714927 <a action="bypass -h 0-1931249600">[Дeставка яиц]</a><br> // 0-1931249600<a action="bypass -h 01736767322">[Доставка лdкера]</a><br> // 01736767322 <a action="bypass -h 0-1931186782">[Доставка aиц]</a><br> // 0-1931186782Использование "невидимых" нам спец. символов. Причем как внутри диалога, так и внутри bypass'a (например, на ketrawars.net). Фактически они присутствуют в диалоге, но при экранировании (т.е. когда нам показывают этот диалог) они не отображаются. Это связано с нестандартными кодировками, кому сильно интересно можете погуглить. По этой же причине я не могу, например, выложить на форум код этих строк (эти спец символы будут автоматически удалены), поэтому любуемся скриншотами:В обычном блокноте:

    В Sublime:

    Таким образом, длина искомой подстроки меняется каждый раз, однако последовательность символов в этой подстроке целиком сохранятся.
    Возможно есть еще другие виды защит именно на уровне всевозможных модификаций диалогов (вылезающие при открытии диалога каптчи - это отдельный разговор), но мне пока другие не встречались.
    Итак, теперь, когда ясна задача, можно думать над тем, как находить заветные bypass's для отправки. Вариантов опять таки несколько, можно решить это, не выходя за рамки функций Pos, Copy, Delete, Trim и тд. Однако проще и красивее будет использовать регулярные выражения (regular expressions). О том, что это и как они составляются можете погуглить. Если кратко, то это поиск по шалблонам, который позволяет нам парсить диалоги в разы проще.
    Как пользоваться регулярными выражениями?
    Тут все просто, подключаете модуль RegExpr в раздел uses и пользуетесь.
    Пример:
    uses SysUtils, Classes, RegExpr; // подключили модуль RegExpr procedure PrintAllTags(); // распечатать все конструкции с bypass'ами var RegExp: TRegExpr; begin RegExp:= TRegExpr.Create; RegExp.Expression:= '(<a *(.+?)</a>)|(<button *(.+?)>)'; if RegExp.Exec(Engine.DlgText) then repeat Print(RegExp.Match[0]); until (not RegExp.ExecNext); RegExp.Free; end; begin PrintAllTags(); end.Этот простой код найдет и распечатает нам все интересующие bypass'ы:

     
    uses SysUtils, Classes, RegExpr; // подключили модуль RegExpr function Bypass(dlg: string): boolean; var RegExp: TRegExpr; SL: TStringList; i: integer; bps: string; begin Result:= true; // задаем результат по умолчанию RegExp:= TRegExpr.Create; // инициализируем объекты для дальнейшей работы SL:= TStringList.Create; RegExp.Expression:= '(<a *(.+?)</a>)|(<button *(.+?)>)'; // задаем регэксп на поиск всех возможных bypass'ов if RegExp.Exec(Engine.DlgText) then // если нашлелся нужный шаблон, то repeat SL.Add(RegExp.Match[0]); // заполняем наш список такими совпадениями until (not RegExp.ExecNext); // пока не закончатся шаблоны for i:= 0 to SL.Count-1 do begin // теперь пробегаемся по нашему списку if (Pos(dlg, SL[ i ]) > 0) then begin // если в i-ой строке нашелся искомый текст, то RegExp.Expression:= '"bypass -h *(.+?)"'; // ищем шаблон текста c bypass'ом if RegExp.Exec(SL[ i ]) then // и если нашли, то копирем из него интересующий нас кусок bps:= TrimLeft(Copy(RegExp.Match[0], 12, Length(RegExp.Match[0])-12)); end; end; Print(bps); // распечатываем конечный вариант bypass'а if (Length(bps) > 0) then Engine.BypassToServer(bps); // если его длина > 0, то отправляем на сервер RegExp.Free; // не забываем освобождать память SL.Free; end; begin Bypass('Набор воина'); end.О правилах составления регулярных выражений полно инфы в инете, например тут
    Возможностей много, можете почитать исходники: RegExpr.txt
    Надеюсь, что распарсить полученные строчки не составит труда
    • 1 ответ
    • 1 512 просмотра
  4. farmwl добавил сообщение в теме Проблемы \ решения   

     > Бот не пакетный и не изменяет данные (c) http://asiwin.com/buy/adrenalin/
    Принцип работы бота иной, ему все равно на пакеты и изменение шифраций
  5. farmwl добавил тему в ArcheBox   

    Как запустить скрипт \ плагин в ASI WIN?
    Очень часто мне задают вопрос: "А как запустить скрипт?".
    Максимально наглядный ответ:

    • 2 ответа
    • 1 142 просмотра
  6. farmwl добавил тему в L2Adrenalin   

    Как запустить скрипт в Adrenaline bot без запуска клиента L2
    В Adrenaline для открытия \ редактирования \ запуска скрипта необходимо, чтобы в списке аккаунтов появился хотя бы 1 аккаунт.
    Как правило многие запускают клиент игры ради этого, но можно сделать проще. достаточно выделить поле редактирования скрипта и нажать сочетание Ctrl + P - появится "пустой" аккаунт. Теперь его можно выделить и работать со скриптами не прибегая к запуску игры.

    • 2 ответа
    • 527 просмотров
  7. farmwl добавил сообщение в теме Проблемы \ решения   

    конечно ведется, пока тестируем, еще немножко терпения)
  8. farmwl добавил тему в Настройки интерфейса   

    Список тем по настройке интерфейса L2 Adrenalin
    В данной теме будут собраны ответы на часто возникающие вопросы, которые можно решить с помощью интерфейса:
    Не забывайте, у нас есть подробнейшая инструкция по настройке интерфейса в текстовом формате
    Настройка кайта \ дистанционной атаки (для лучников и магов)Ребафф через Alt+B (работает не везде) Авто использование банок душ камаэлей \ камней зарядок гладов и тировНастройка спойла \ свипаНастройка крафта сосок \ ресурсовНастройка рыбалкиПример полной настройки коневода на АОЕ фармНастройка скилов пета \ сумонаНастройка реса в патиНастройка Toogle-скилов (Vicious Stance, Arcane Power и тд)
    • 0 ответов
    • 1 020 просмотров
  9. farmwl добавил тему в L2Adrenalin   

    Autorun script (Обновление от 11.02.2015)
    В обновлении от 11.02.2015 появилась новая функция - Автозапуск скрипта.
    Как работает:
    Задается 1 скрипт, который будет автоматически запускаться на любом новом аккаунте, в который заинжектится бот.

    Как настроить:
    Запускаете 1 любой акк. открываете нужный Вам скрипт () и затем нажимаете кнопку .
    Все, теперь все новые запускаемые аккаунты автоматически будут загружать этот скрипт при запуске

    • 0 ответов
    • 3 359 просмотров
  10. farmwl добавил тему в L2Adrenalin   

    Немного инфы об Engine.BypassToServer
    Вопросов поступает много и они, как правило, все однотипные, поэтому давайте прольем свет на команду Adrenalin'a Engine.BypassToServer
    Итак, для начала самый важный вопрос - зачем она нужна?
    Она нужна для выбора ответов во всевозможных диалогах (разговоры с NPC, Alt+B, ответы на некоторые капчи и тд). Более простая для использования функция Engine.DlgSel, куда мы подаем номер строки или текст - по сути своей просто враппер (обертка) над Engine.BypassToServer. Но Engine.DlgSel не ограничивается лишь функционалом Engine.BypassToServer !
    Следующий вопрос, который возникает - так почему тогда не использовать всегда Engine.DlgSel ?
    На некоторых фри серверах Engine.DlgSel может просто не работать в силу предпринятых администрацией мер. Так же Engine.BypassToServer необходим в случаях использования диалогов через Alt+B и ему подобных.
    Ну и наконец - как пользоваться Engine.BypassToServer ?
    Для начала немного теории: В Lineage II диалоги как правило представлены в формате html документов. Текст текущего открытого диалога можно узнать с помощью Engine.DlgText - его можно просто распечатать. Для простоты просмотра можно так же использовать готовый плагин Script Recorder. Ну а еще в самом Adrenalin'e есть снифер: https://youtu.be/qMHKAXsZsa8 (пример для бафа через Alt+B), но об этом чуть ниже
    Например диалог с ГК в Годдарте:
    <html>     <body>         Хранитель Портала Татьяна:<br>         Очень приятно. Татьяна, Хранитель Портала Годдарда. Портал позволяет перемещаться на большие расстояния за считанные мгновения. Но чтобы овладеть искусством управления порталом, нужно провести в Башне Слоновой Кости десятки лет. <br>         Ну же! Назовите место, куда Вы хотите отправиться!<br>         <a action="bypass -h teleport_request">Телепортироваться</a><br>         <a action="bypass -h menu_select?ask=-303&reply=518">Обменять Алмазы Иных Миров</a><br>         <a action="bypass -h menu_select?ask=-19&reply=0">[Для Дворян] Телепортироваться</a><br>         <a action="bypass -h menu_select?ask=255&reply=10" msg="811;Ипподром">Переместиться на Арену и Ипподром (Бесплатно)</a><br>         <a action="bypass -h menu_select?ask=-1816&reply=3" msg="811;Остров Грез">Переместиться на Остров Грез (Бесплатно)</a><br>         <a action="bypass -h menu_select?ask=20003&reply=1">Призвать Аллегрию</a><br>         <a action="bypass -h talk_select">Квест</a>     </body> </html> Обратим внимание на теги <a> внутри которых есть то самое слово bypass, остановимся на первой же строке: 
    <a action="bypass -h teleport_request">Телепортироваться</a><br>Данный диалог может быть выбран тремя различными способами:
    Engine.DlgSel(1); // по номеру строки Engine.DlgSel('Телепортироваться'); // по тексту в строке Engine.BypassToServer('teleport_request'); // с помощью bypassС первыми двумя надеюсь всем понятно, рассмотрим что же происходит в 3ем случае?
    <a action="bypass -h teleport_request"> - как видно, при выборе этой строки произойдет некоторое дейсвтие типа bypass, которое условно говоря "несет в себе суть" teleport_request.
    Рассмотрим еще случай, когда диалог представлен в виде кнопок, у нас будут строчки вида:
    <button action="bypass -h npc_268448112_Olympiad 1" value="Наблюдать" width=200 height=31 back="L2UI_CT1.OlympiadWnd_DF_Watch_Down" fore="L2UI_CT1.OlympiadWnd_DF_Watch">Несмотря на чуть более сложную структуру, суть абсолютно та же самая: есть некая кнопка (до этого была ссылка), которой приписано action="bypass -h npc_268448112_Olympiad 1". Название строки теперь хранится в свойстве value, собственно это единственное отличие. Забегая наперед, отмечу, что свойство action не всегда располагается левее свойства value.
     
    Таким образом, для того, чтобы использовать Engine.BypassToServer, нужно запомнить пару пунктов:
    для отправки подходят только сообщения, в которых есть слово bypass -h копировать не нужнокопировать нужно все что после -h и вплоть до закрывающей двойной кавычкиесли на конце bypass'а есть .htm, то необходимо вторым параметром подавать true:Engine.BypassToServer('Quest 621_EggDelivery 31521-1.htm', true);Как говорил выше, в самом боте есть снифер, на видео показано, как можно получать прям готовые значения подаваемых в функцию аргументов.
    Таким образом, для максимально эффективного использования данной функции будет полезно уметь парсить текст, возвращаемый в Engine.DlgText - так можно будет обойти проблемы и с динамически меняющимися диалогами и некоторыми капчами.
    • 2 ответа
    • 1 274 просмотра
  11. farmwl добавил тему в L2Adrenalin   

    Коротко о PostMessage \ SendMessage
    Вообще SendMessage и PostMessage - две Win API функции, которые доступны не только в скрипт движке бота.
    В нашем случае речь пойдет об их врапперах (обертках): Engine.SendMessage и Engine.PostMessage
    Начнем как обычно с вопроса - что они делают?
    Данные функции посылают некоторое сообщение одному или нескольким окнам. Важен тот факт, что отправлять сообщения можно и в свернутые окна! Разница между ними в том, что SendMessage отправляет сообщение и ждет, пока целевое окно это сообщение обработает, а PostMessage просто помещает сообщение в очередь и программа работает дальше. В случае, когда в сообщении задействованы указатели на динамически размещаемые данные, предпочтительно использовать SendMessage, т.к. иначе возможна ситуация, когда целевое окно начнет обрабатывать сообщение, указатели уже окажутся освобождены. Вообще, в обеих функциях требуется дескриптор (HWND) целевого окна, но т.к. у мы рассматриваем обертки в виде команд скрипт движка - то там автоматически будет указан дескриптор текущего окна с игрой.
    Что такое сообщение?
    Это информация о некотором изменении в пользовательском интерфейсе, например перемещение окна или нажатие клавиши на клавиатуре\мышке. Сообщения также уведомляют программу, что истек заданный отрезок времени. Сообщения используются для операций с совместным использованием данных. С точки зрения программирования, сообщение - это целое значение без знака (Cardinal).
    Сообщение можно представить следующей записью:
    Message = record msg : longint; // номер сообщения lParam : longint; // информационные wParam : longint; // поля end;В полях lParam и wParam содержится дополнительная информация о происшедшем событии, например, для сообщения wm_lbuttondown (нажатие ЛКМ) в lParam содержатся координаты указателя мыши момент нажатия кнопки мыши, в wParam содержатся сведения были ли нажаты клавиши Ctrl или Shift в момент нажатия кнопки мыши.
    Зачем это все нужно?
    С помощью этих команд можно реализовать свой кликер, например для заточки вещей и подобных задач. Кроме того можно вводить текст с клавиатуры, хотя для этого есть более удобная команда Engine.EnterText
    Как это использовать?
    Для того, чтобы послать сообщение, нужно знать что именно ты посылаешь, поэтому читаем документацию, гуглим и напрягаемся.
    Сразу стоит отметить, что в скрипте нужно будет указывать именно код сообщения, т.е. число:
    Engine.SendMessage($102, 65, 0);Здесь $102 - это WM_CHAR message, 65 - код кнопки A, 0 - в зависимости от значения третьего параметра, он может иметь разный смысл, об этом как правило пишут там же, где и описание сообщения
    • 0 ответов
    • 596 просмотров
  12. farmwl добавил сообщение в теме Проблемы \ решения   

    обычно, при установке новых хроник требуется чуть больше времени на обновление, больше ничего принципиального
  13. farmwl добавил сообщение в теме Проблемы \ решения   

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

    нет
  15. farmwl добавил сообщение в теме Проблемы \ решения   

    в чате на главной добавил
  16. farmwl добавил сообщение в теме Проблемы \ решения   

    Написал в чате же - проблемы с сервером обновлений, нужно потерпеть
  17. farmwl добавил тему в Настройки интерфейса   

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

    Сохраняя при этом возможность настроить требуемымые условия
    • 3 ответа
    • 422 просмотра
  18. farmwl добавил тему в Настройки интерфейса   

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

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

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

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

    Так же советую посмотреть видео с полной настройкой сумонера на АОЕ фарм: https://youtu.be/W96h-Ed3nek
    • 0 ответов
    • 250 просмотров
  19. farmwl добавил сообщение в теме Рес мемберов в пати   

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

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

  20. farmwl добавил тему в Настройки интерфейса   

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

    Интервал и кол-во душ, при котором использовать можно изменять по Вашему усмотрению
    • 0 ответов
    • 204 просмотра
  21. farmwl добавил файл в Скрипты \ Плагины [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:
    Особенности:
    Настройки производятся в простом и удобном интерфейсеМожно задать список покупок, для каждого товара указать свои параметрыЛогирование действий плагина в логи ботаИнструкции по запуску:
    Скачать с сайта последнюю версию скрипта (Auction_v***.bin) и Auc.dllЗакинуть эти 2 файла в отдельную папку, рекомендую: ..\Adrenalin\Scripts\Auction\..Запустить скрипт и в появившемся окне ввести ключ:
    • 65 скачиваний
    • 0 комментариев
    • 0 отзывов
  22. farmwl добавил сообщение в теме [Урок 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.Модули (юниты) должны находиться в той же папке что и главный скрипт
  23. farmwl добавил сообщение в теме многооконка бнс   

    она и так есть, в скайп пиши
  24. farmwl добавил сообщение в теме Запись видео с экрана   

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

    Ну тогда в догонку еще: https://getsharex.com/