Вопрос по "console //"

Всё, что касается макро-плагина.

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

Правила форума
В форуме макросы "Макросы" разрешено только задавать вопросы по уже существующим макросам и просить помощь по недоработанным своим. При этом таким считается тот макрос который готов не менее чем на 2/3.
Если вы хотите попросить участников сообщества написать вам макрос, это можно сделать в разделе "сервис".
Intercept
Новичок
Сообщения: 6
Зарегистрирован: Вт май 17, 2011 1:25 pm

Вопрос по "console //"

Сообщение Intercept »

Какой символ(или набор) RegExp использовать в команде "console //" для обозначения разрыва строки (внутри сообщения от NPC|между сообщениями в консоли вообще) чтобы поиск охватывал сообщения такого типа:
NPC: 0 prontera
1 morocc
2 geffen
и т.д. и понимал примерно, как:
NPC: 0 prontera1 morocc2 geffen
Использовал конструктор регулярных выражений для проверки, прочитал статьи по RegExp'ам... Вроде они есть:
\s \f \n \r \t
Но у меня не работают... или я что то не понял?
Помогите пожалуйста.
manticora
Грамотный
Сообщения: 436
Зарегистрирован: Ср авг 29, 2007 12:45 pm

Re: Вопрос по "console //"

Сообщение manticora »

По-моему это невозможно. Что ты хочешь сделать?
# Гурнин: Неплохо! Пришло время научить вас умению 'Скидка', но мы займемся этим позже.
русская вики по OpenKore, редактор макросов с подсветкой и справкой по Ctrl+F1
openkore.collectskin.com - всегда свежая svn-версия OpenKore!
Видео-гайд по установке и настройке OpenKore
Intercept
Новичок
Сообщения: 6
Зарегистрирован: Вт май 17, 2011 1:25 pm

Re: Вопрос по "console //"

Сообщение Intercept »

[Aug 12 06:32:26 2011.74] Minerals#005: [ИмяПерса]
[Aug 12 06:32:26 2011.80] Minerals#005: Слабое место: [/\] верх
[Aug 12 06:32:26 2011.97] Minerals#005: > Камни:
[Aug 12 06:32:26 2011.10] Minerals#005: [¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤]
[Aug 12 06:32:26 2011.12] Minerals#005: > Old Pick:
[Aug 12 06:32:26 2011.13] Minerals#005: [¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤]
[Aug 12 06:32:26 2011.15] Minerals#005: Auto-continuing talking
[Aug 12 06:32:26 2011.26] ----------Responses-----------
# Response
0 [\/] низ
1 [/\] верх
2 [>] право
3 [<] лево
4 [</] лев. низ
5 [/>] прав. верх
6 [\>] прав. низ
7 [O] центр
8 [<\] лев. верх
9 Exit
10 Cancel Chat
-------------------------------
[Aug 12 06:32:26 2011.29] Minerals#005: Type 'talk resp #' to choose a response.
Лог консоли. У НПС есть слабое место, после нахождения слабого места нужно бить в него, Response'ы рандомно меняются после каждого ответа. Хотел через РегЕксп выловить "Слабое место" найти его в "Responce" и получить номер ответа. Как то так. С перлом не знаком, есть вариант логического И в команде console //, или только ИЛИ есть "(a|b|c)"?
В команде "macro" можно поставить функцию "call", но нельзя поставить проверку её выполнения? Пробовал как в "automacro" вставить условие "console //"- ругается, пробовал "if(console //)"- ругается... как то не удобно сделано. Самому залезть в "macro.pl" и по аналогии с "automacro" воткнуть функцию проверки в "macro" реально?
manticora
Грамотный
Сообщения: 436
Зарегистрирован: Ср авг 29, 2007 12:45 pm

Re: Вопрос по "console //"

Сообщение manticora »

Я думаю, что можно сделать примерно так:
1. Есть первый автомакрос, он отлавливает строку

Код: Выделить всё

[Aug 12 06:32:26 2011.80] Minerals#005: Слабое место: [/\] верх
и запоминает обозначение слабого места [/\].

2. Второй автомакрос отлавливает строки с вариантами ответа, которые выглядят так:

Код: Выделить всё

0 [\/] низ
автомакрос выдергивает при этом номер варианта ответа 0 и условное обозначение Ну и собственно дальше возможны варианты, что ты будешь делать с этими данными.
Можно, например, записать все варианты ответа в строку типа:
0[\/]1[/\]2[>]3[<]4[</]5[/>]6[\>]7[O]8[<\]
Находишь обозначение, слева от него стоит цифра, цифру используешь в ответе неписи. И дальше по кругу.
# Гурнин: Неплохо! Пришло время научить вас умению 'Скидка', но мы займемся этим позже.
русская вики по OpenKore, редактор макросов с подсветкой и справкой по Ctrl+F1
openkore.collectskin.com - всегда свежая svn-версия OpenKore!
Видео-гайд по установке и настройке OpenKore
Intercept
Новичок
Сообщения: 6
Зарегистрирован: Вт май 17, 2011 1:25 pm

Re: Вопрос по "console //"

Сообщение Intercept »

Стоило спросить и сам решил, как обычно, но всеравно спасибо... Можно тему удалить, а то тут и так мусора много?
manticora
Грамотный
Сообщения: 436
Зарегистрирован: Ср авг 29, 2007 12:45 pm

Re: Вопрос по "console //"

Сообщение manticora »

На самом деле не тему надо в мусор сносить, а выложить получившийся у тебя макрос. Для истории. Было бы неплохо.
# Гурнин: Неплохо! Пришло время научить вас умению 'Скидка', но мы займемся этим позже.
русская вики по OpenKore, редактор макросов с подсветкой и справкой по Ctrl+F1
openkore.collectskin.com - всегда свежая svn-версия OpenKore!
Видео-гайд по установке и настройке OpenKore
Аватара пользователя
AndreyLun
Грамотный
Сообщения: 280
Зарегистрирован: Пн фев 05, 2007 5:55 pm

Re: Вопрос по "console //"

Сообщение AndreyLun »

+1 хочется посмотреть что получилось у автора :)
Intercept
Новичок
Сообщения: 6
Зарегистрирован: Вт май 17, 2011 1:25 pm

Re: Вопрос по "console //"

Сообщение Intercept »

Финальный вариант... Вроде работает на 100%. Больше мыслей пока нет. Посмотрите, может быть подскажете, можно ли оптимизировать или что исправить? С макросами пару дней знаком, еще трудно все в голове объединить.
Для чего сделано:
http://betaro.ru/index.php?showtopic=99
Код:

Код: Выделить всё

#

#############################
##### Mine Macros begin #####
#############################

##### поиск слабого места #####
automacro Find0 {
	console /Minerals#\d\d\d:\sИщем\sслабое\sместо/
	call F0
}

##### слабое место найдено - варианты #####
automacro Find/\ {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sверх/
	call F/\
}

automacro Find/> {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sправ\.\sверх/
	call F/>
}

automacro Find> {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W.\sправо/
	call F>
}

automacro Find\> {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sправ\.\sниз/
	call F\>
}

automacro Find\/ {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sниз/
	call F\/
}

automacro Find</ {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sлев\.\sниз/
	call F</
}

automacro Find< {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W.\sлево/
	call F<
}

automacro Find<\ {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\W\W.\sлев\.\sверх/
	call F<\
}

automacro FindO {
	console /Minerals#\d\d\d:\sСлабое\sместо:\s.\w.\s.*/
	call FO
}

##### распределение #####
##### поиск слабого места #####
macro F0 {
	release 0
}
##### слабое место найдено #####
macro F/\ {
	release Up
}

macro F/> {
	release UpRight
}

macro F> {
	release Right
}

macro F\> {
	release DownRight
}

macro F\/ {
	release Down
}

macro F</ {
	release DownLeft
}

macro F< {
	release Left
}

macro F<\ {
	release UpLeft
}

macro FO {
	release Centr
}

##### сбор вариантов ответов #####
automacro 0 {
	run-once 1
	console /(0)\s\s....*/
	call NumberOfAnswer
}


automacro Up {
	run-once 1
	console /(\d)\s\s....\sверх/
	call NumberOfAnswer
}

automacro UpRight {
	run-once 1
	console /(\d)\s\s....\sправ\.\sверх/
	call NumberOfAnswer
}

automacro Right {
	run-once 1
	console /(\d)\s\s...\sправо/
	call NumberOfAnswer
}

automacro DownRight {
	run-once 1
	console /(\d)\s\s....\sправ\.\sниз/
	call NumberOfAnswer
}

automacro Down {
	run-once 1
	console /(\d)\s\s....\sниз/
	call NumberOfAnswer
}

automacro DownLeft {
	run-once 1
	console /(\d)\s\s....\sлев\.\sниз/
	call NumberOfAnswer
}

automacro Left {
	run-once 1
	console /(\d)\s\s...\sлево/
	call NumberOfAnswer
}

automacro UpLeft {
	run-once 1
	console /(\d)\s\s....\sлев\.\sверх/
	call NumberOfAnswer
}

automacro Centr {
	run-once 1
	console /(\d)\s\s...\sцентр/
	call NumberOfAnswer
}

##### ответ #####
macro NumberOfAnswer {
	$f = $.lastMatch1
	if ($f = 0) goto zero
	if ($f = 1) goto one
	if ($f = 2) goto two
	if ($f = 3) goto three
	if ($f = 4) goto four
	if ($f = 5) goto five
	if ($f = 6) goto six
	if ($f = 7) goto seven
	if ($f = 8) goto eight
	goto end
	:zero
	do talk resp 0
	goto end
	:one
	do talk resp 1
	goto end
	:two
	do talk resp 2
	goto end
	:three
	do talk resp 3
	goto end
	:four
	do talk resp 4
	goto end
	:five
	do talk resp 5
	goto end
	:six
	do talk resp 6
	goto end
	:seven
	do talk resp 7
	goto end
	:eight
	do talk resp 8
	goto end
	:end
}
###########################
##### Mine Macros end #####
###########################
Аватара пользователя
4epT
macro-маньячина
Сообщения: 2792
Зарегистрирован: Чт дек 21, 2006 1:23 pm
Сервер RO:: 4game
Discord: ya4ept#8494
Контактная информация:

Re: Вопрос по "console //"

Сообщение 4epT »

для начала предлагаю уменьшить число макросов для удобочитаемости:

вот это:

Код: Выделить всё

automacro Find0 {
   console /Minerals#\d\d\d:\sИщем\sслабое\sместо/
   call F0
}
macro FO {
   release Centr
}
превратить в вот это:

Код: Выделить всё

automacro Find0 {
   console /Minerals#\d\d\d:\sИщем\sслабое\sместо/
   call {
   release Centr
}
}
Быстро и качественно напишу конфиг (макрос)! Стучи!
¤ Свежий бот ¤ Config checker ¤ Manual ¤
Изображение
Изображение
Ответить