Объясните как это работает - $.lastMatchN в макросе

Дополнения к OpenKore, расширяющиее её функциональность, называются плагинами.

Модератор: 4epT

Jacob
Новичок
Сообщения: 7
Зарегистрирован: Сб фев 10, 2007 11:59 am

Объясните как это работает - $.lastMatchN в макросе

Сообщение Jacob »

Везде где искал написано так(даже на этом форуме):

• $.lastMatchN – сопоставление последней инормации с ссылкой или сайтом regexp (неуверен что верно перевел и надо разобратся что это такое)

Ну, понятно, что переведено неправильно, ведь regexp это регулярное выражение.

А вопрос такой: Где храниться это regexp, и после какого события устанавливаются $.lastMatch1, $.lastMatch2, ....., $.lastMatchN ?

-----------

(pJ: исправил заголовок. афтар, это позор такие заголовки песать!)
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Исправь заголовок темы согласно вот этих рекомендаций: viewtopic.php?t=75
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

Пример:
console /Player (.*) \((\d+)\) uses Cloaking on himself/i
timeout 25
call { do sp 24 $.lastMatch2 }
от РО до шестой палаты - один шаг...
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Sauron
Слушай, Саурон, а поясни плз синтаксис этого "регулярного выражения", или как оно там... Грубо говоря, что из символов за что в нем отвечает?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

от РО до шестой палаты - один шаг...
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

Sauron
Та ну чо то мине доку читать обломно. ((((( Ну да ладно, зобей.
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

дока http://www.pcre.ru/docs/perl/text/intro/

...как бы там все ясно по регулярным выражениям.. так или иначе, создается условие при котором сработает автомакро..

Player Mоrphius (0) uses Hiding on himself : Lv 65535

console /Player (.*) \((\d+)\) uses Hiding on himself/i
call {
log $.lastMatch0 # (Player Mоrphius (0) uses Hiding on himself)
log $.lastMatch1 # (Mоrphius)
log $.lastMatch2 # (0)
}
от РО до шестой палаты - один шаг...
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

Sauron писал(а):Пример:
console /Player (.*) \((\d+)\) uses Cloaking on himself/i
1) Скоприровал к нам на форум памятку по регэкспам
viewtopic.php?t=1302

2) Как это разбирает

Player (.*) \((\d+)\) uses Cloaking on himself

Ищет строчку в которой написано:
"Player (любое количество любых символов) (одна или больще цифр в скобках) uses Cloaking on himself"

При этом то что в регэкспе в скобках - запоминается в переменных,
так что тут в скобках - имя игрока и номер - запомниться в $.lastMatch1 и $.lastMatch2
Sauron
Грамотный
Сообщения: 435
Зарегистрирован: Ср ноя 29, 2006 3:24 pm

Сообщение Sauron »

DInvalid, не плохо бы было, если б ты выложил ещё несколько примеров применения в коде $.lastMatch, пока я нашел только одно применение - получить имя игрока, когда его невозможно получить стандартными способами, такими как $.lastpub
от РО до шестой палаты - один шаг...
DInvalid
Грамотный
Сообщения: 368
Зарегистрирован: Вт ноя 14, 2006 4:54 pm

Сообщение DInvalid »

[quote]automacro test {
console /\[dist=(.*)\] (.*) \((\d+)\): \*(Wave|Fist|Peace)\*$/
class high priest
sp > 15%
timeout 3
call foo
}

macro foo {
$d = $.lastMatch1
if ($d > 6) goto stop
$i = $.lastMatch3
$g = @eval (exists $::players{$::playersID[$i]}->{guild} ? $::players{$::playersID[$i]}->{guild}{name} : 'null')
$y1 = G1
$y2 = G2
$y3 = G3
$y4 = G4
$e = $.lastmatch4
if ($g eq $y1) goto ok
if ($g eq $y2) goto ok
if ($g eq $y3) goto ok
if ($g eq $y4) goto ok
:stop
stop
:ok
if ($e = Wave) goto wave
if ($e = Peace) goto peace
if ($e = Fist) goto fist
:wave
do sp 34 $i 10
pause 1
do sp 29 $i 10
stop
:peace
do sp 28 $i 10
pause 1
do sp 28 $i 10
stop
:fist
do sp 361 $i 5
}

[/quote]
Nob
Новичок
Сообщения: 5
Зарегистрирован: Вс мар 23, 2008 2:22 pm

Re: Объясните как это работает - $.lastMatchN в макросе

Сообщение Nob »

Т.е. $.lastMatchN можно применять только в условии автомакроса, чтобы запомнить что-либо?

Столкнулся с такой проблемой: запущен макрос, бот разговариавет с нпц, он говорит цифру, мне надо её запомнить, не прерывая этот макрос другим, чтобы запомнить это число. Возможно запомнить его из запущенного автомакроса? :)
Ответить