Как в макросе заставить работать 'pause @rand (4, 8)' ?

Общие вопросы по OpenKore обсуждаются здесь. Можно сказать, что это - основной раздел форума.
Возник вопрос? Вам сюда.

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

Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Как в макросе заставить работать 'pause @rand (4, 8)' ?

Сообщение demm » Пн дек 04, 2006 1:38 pm

Как в макросе заставить работать "pause @rand (4, 8)".
И можно-ли чтобы @rand выдавала не только целые значения, но и значения с десятичной частью (к примеру 5.13, 6.28, 4.33, etc).

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

Сообщение piroJOKE » Пн дек 04, 2006 2:57 pm

А ты значала разберись, работает ли pause с дробными значениями!
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Пн дек 04, 2006 3:11 pm

Кора далеко, проверить не могу работатет pause с дробными или нет.
Если пауза не работает с дробными, то второй вопрос снимается, но остается открытым первый...

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

Сообщение piroJOKE » Пн дек 04, 2006 3:17 pm

Ну... как насчет взять скажем числа 400...800 и поделить на 100? 8)
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Пн дек 04, 2006 3:30 pm

Минуты две вникал и не понял как это поможет...
Дело в том что pause не работает с другими командами\переменными
Допустим возьмем следующее:
$i = 10
pause $i
log i$

через секунду получаем запись в консоле "10"
Берем значение 40, 100, тоже самое запись через секунду в консоль вылетает, т.е. паузы на 10, 40, 100 секунд нету.

Может конечно я туплю, но максимум до чего я додумался это вызывать другой макрос...
call rand_pause_4_8

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

macro rand_pause_4_8 {

$i = @random ("4", "5", "6", "7", "8")
if ($i == 4) goto four
if ($i == 5) goto five
if ($i == 6) goto six
if ($i == 7) goto seven
if ($i == 8) goto eight
pause 8
goto end
:four
pause 4
goto end
:five
pause 5
goto end
:six
pause 6
goto end
:seven
pause 7
:end
}
Но как вернутся обратно?

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

Сообщение piroJOKE » Пн дек 04, 2006 3:41 pm

@eval вообще видел когда-нибудь?
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Пн дек 04, 2006 3:54 pm

@eval (<аргумент>)
оценивает данный <параметр>

@eval (<argument>)
evaluates the given <argument>

что там, что там - непонятно что делает...
смотрю примеры макросов,
примерно такое должно работать?
pause @eval (@rand (4,8))

зачем тогда @eval, почему @rand напрямую не может сообщить время паузы?

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

Сообщение piroJOKE » Пн дек 04, 2006 4:09 pm

...а вообще что-то и у меня не выходит...

"eval" все пучком вычисляет, но... пауза не меняется. О_о
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

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

Сообщение piroJOKE » Пн дек 04, 2006 4:15 pm

Плакалъ (изврат, но работает):

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

macro izvrat {
	$i = 1
	$maxi = @rand (4, 8)
	while ($i <= $maxi) as looop
		log shit!
		pause 1
		$i++
	end looop
}
А вот это не работает. Почему?... :shock:

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

macro sss {
	$i = 15
	log $i now pause...
	pause $i
	#^^^ don't worked
	pause @eval( $i )
	#^^^ don't worked too
	log ...end pause $i
}
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Вт дек 05, 2006 7:12 pm

Нашел решение.
Открываем plugins\macro\Script.pm

находим
##########################################
# pause command
} elsif ($line =~ /^pause/) {
my ($tmp) = $line =~ /^pause\s+(\d+)/;
if (defined $tmp) {$self->{timeout} = $tmp}
$self->{line}++;
меняем на
##########################################
# pause command
} elsif ($line =~ /^pause\s+/) {
my ($tmp) = $line =~ /^pause\s+(.*)/;
my $result = parseCmd($tmp);
if (defined $result) {$self->{timeout} = $result}
$self->{line}++;
всё: pause @rand; pause $i - работает
времени до конца оттестить не было, так что могут выскочить баги...

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

Сообщение piroJOKE » Вт дек 05, 2006 7:22 pm

Еррр, чувак, мне как челу не понимающему перловские разборки, поясни плз смысл изменения!

(Или - не сам делал?)

ЗЗЫ: На будущее, плззззз, сначал тесть, патом выкладуй! :wink:
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Вт дек 05, 2006 7:31 pm

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

тут все пляшется от parseCmd

не уверен насчет того что выделено жирным, что это грамотно записано
} elsif ($line =~ /^pause\s+/) {
my ($tmp) = $line =~ /^pause\s+(.*)/;
но при тесте ранд и подстановке переменно все работает...
приеду домой буду дальше тестить...

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

Сообщение piroJOKE » Вт дек 05, 2006 7:35 pm

Если запашет успешно, пиши телегу Анарчо (автору макро-плагина), пусть правит! ;)
Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download

demm
Энтузиаст
Сообщения: 63
Зарегистрирован: Ср ноя 22, 2006 1:51 pm

Сообщение demm » Вт дек 05, 2006 7:39 pm

Хотелось бы чтоб знающие перл описали правильно я сделал то что выделил или нет?

Аватара пользователя
kLabMouse
Профессионал
Сообщения: 4776
Зарегистрирован: Вс ноя 05, 2006 4:32 pm

Сообщение kLabMouse » Вт дек 05, 2006 9:32 pm

demm
ЫЫ. Как знающий слегка перл. Скажу. ПРАВИЛЬНО. И даже стоит телегу автору написать чтоб доделал.

Ответить