Перейти к содержимому

Фотография
* * * * * 3 Голосов

Подробно об Engine.BypassToServer

bypass байпасс

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 13

#1
farmwl

farmwl

*
Популярное сообщение!

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

Спойлер (+/-)

 
Ну а теперь к практике:
Скрытый текст
Нажать кнопку "Like" (Доступно, если у Вас более 3-х сообщений)

 


  • 60

#2
Krickt

Krickt

Пора отдельный раздел для гайдов.


  • 0

#3
Ivanius

Ivanius

Как раз занимаюсь работой над выводом команд и текста Alt+B можно будет теперь парсить и Их, а то столько тем уже развелось по этому поводу и с НЕХ редакторами и т.д.

П.С. делаю пока только специально для ПентаВара.

ВОт команды основные для Пента вара к стати: _bbshome,_bbsgetfav,_bbsloc,_bbsclan,_bbsmemo,_maillist_0_1_0_,_friendlist_0_


Сообщение отредактировал Ivanius: 18 Июнь 2016 - 11:05

  • 0
Участник разработки бота Adrenalin, администратор официального форума.
 

#4
Krickt

Krickt

Ivanius , Альт+Б и так можно было парсить, HEX вроде юзался только для интерлюда.

Основные команды такие везде, разве нет? 


  • 0

#5
Ivanius

Ivanius

Krickt, Нет команды не везде одинаковые, Можно было парсить или использовать запись альтб? Я говорю именно о функциях как  dlgSel, dlgtext. 


  • 0
Участник разработки бота Adrenalin, администратор официального форума.
 

#6
farmwl

farmwl

Ivanius , Аналог DlgText для Alt+B диалогов была бы полезна, но ведь если адрик в принципе способен на сервере парсить bypass'ы, то можно просто снифать конкретные выборы диалогов:

 

2016-06-18_23-16-03.gif

либо использовать встроенный снифер для бафов

 

Не понимаю, что даст DlgSel ?


  • 0

#7
Ivanius

Ivanius

farmwl, Я и говорю, о том что много где НЕ РАБОТАЕТ парсинг байпасов, в пример привел популярный нынче ПентаВар. А как-то записывать их нужно.


  • 0
Участник разработки бота Adrenalin, администратор официального форума.
 

#8
BreadfanLock

BreadfanLock
Engine.DlgSel - судя по всему метод работает лишь с данными полученными из NpcHtmlMessage, и абсолютно бессилен перед ExNpcQuestHtmlMessage. Для этого случая и следует использовать именно Engine.BypassToServer
  • 0
Не изготавливаю готовый код...

#9
danil123

danil123
  • 7
    0
    Не выбрано
    • Lvl 5
    • Пользователь

что делать если команда engine.dlgtext не видит диалог?


  • 0

#10
farmwl

farmwl

danil123, попробовать распечатать Engine.CBText

begin
  Print(Engine.DlgText);   // распечатать текст диалогового окна
  Print(Engine.CBText);    // распечатать текст "Alt + B" окна
end.

  • 0

#11
flybee

flybee
  • 1
    0
    Чертик
    • Гремлин

Добрый день.

На интерлюде, как писали выше, не работает строенный сниффер. Поскажите, пожалуйста, как распарсить диалог с НПС на примере скрипта. В АДР message/sys не влазит вся строка с выводом. есть ли возможность её вывести в отдельное сообщение или мб есть какой-то более простой способ?


  • 0

#12
Lannar

Lannar
  • 28
    6
    А что, если...
    • Lvl 18
    • Пользователь

flybee,

procedure NPCDLGBPS;
var
  DLG,Rez,D1,D2: string;
begin

      DLG := Engine.DlgText;
      D1 := 'Спросить'; // До этого символа мы будем потом вырезать
      D2 := 'исследованиях.';// обрезаем все что идет дальше
      Rez :=Copy(DLG,Pos(D1,DLG)+1,Pos(D2,DLG)-Pos(D1,DLG)-1) ;// вычисляем количество символов
      print(D1+Rez+D2); // Выводим результат
      Engine.ByPAssToServer('D1+Rez+D2',True); // составляем байпас

end;

 begin
 NPCDLGBPS;
 end.

  • 0

#13
Lannar

Lannar
  • 28
    6
    А что, если...
    • Lvl 18
    • Пользователь

flybee,

Вариант Сейва диалога 

uses SysUtils, Classes;
var L:TStringList;


Begin


  print(Engine.DlgText);
  L := TStringList.Create;          //Создаем объект (спсиок для строк)
  L.Add(Engine.DlgText);                 //Добавляем в спиок строку
  L.SaveToFile('C:/1.html');  //Сохраняем список в фаил
  L.Free; 


end.

Потом просто на диске С открываешь данный файл блокнотом и смотришь !


  • 0

#14
Naoko

Naoko
  • 20
    0
    Кривляюсь
    • Lvl 14
    • Пользователь
    Город
    Киев

Мне как человеку, который никогда раньше не сталкивался с подобными  вещами,- сперва ничего не понятно было, а благодаря таким статьям все начинает понемногу прояснятся.


  • 0



Темы с аналогичным тегами bypass, байпасс

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Rawr.su - Сделано с для игроков.