Вопросов поступает много и они, как правило, все однотипные, поэтому давайте прольем свет на команду 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, нужно запомнить пару пунктов:

  1. для отправки подходят только сообщения, в которых есть слово bypass 
  2. -h копировать не нужно
  3. копировать нужно все что после -h и вплоть до закрывающей двойной кавычки
  4. если на конце bypass'а есть .htm, то необходимо вторым параметром подавать true:
Engine.BypassToServer('Quest 621_EggDelivery 31521-1.htm', true);

Как говорил выше, в самом боте есть снифер, на видео показано, как можно получать прям готовые значения подаваемых в функцию аргументов.

Таким образом, для максимально эффективного использования данной функции будет полезно уметь парсить текст, возвращаемый в Engine.DlgText - так можно будет обойти проблемы и с динамически меняющимися диалогами и некоторыми капчами.