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

Фотография
- - - - -

Парсинг байпассов

l2elixir

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

#1
DimaMPEI

DimaMPEI
  • 18
    2
    Убит
    • Lvl 13
    • Пользователь

Добрый день! На сервере нубибафер неприятно настроен:

fo1RvdX.png

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

После процедуры PrintAllTags имеет следующую картину:

fRyPBN2.png

Хотелось бы дальше вырезать нужный текст (между <-h> и <">) и Engine.Bypasstoserver передать команды на сервер.

Есть люди кто поможет написать данную процедуру?


Сообщение отредактировал DimaMPEI: 31 Май 2019 - 19:11

  • 0

#2
SoundShocking

SoundShocking
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                          // теперь пробегаемся по нашему списку
      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;

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


  • 1

#3
ScythLab

ScythLab

bps:= TrimLeft(Copy(RegExp.Match[0], 12, Length(RegExp.Match[0])-12));

или заменить на 

bps := RegExp.Match[1];

Сообщение отредактировал ScythLab: 01 Июнь 2019 - 00:20

  • 2

Хобби: разработка непубличного бота для Lineage


#4
DimaMPEI

DimaMPEI
  • 18
    2
    Убит
    • Lvl 13
    • Пользователь

Спасибо. Попробую через массив. Но геморой, конечно, еще тот.

Пока удалось только первый баф выдернуть в процессе экспериментов. По образу и подобию данной процедуры из скрипта на ТТ. Но тут он даст только первый баф в списке.

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(Rez,True); // составляем байпас

end;

begin
NPCDLGBPS;
end.

  • 0


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

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

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