Как в макросе заставить работать 'pause @rand (4, 8)' ?
Модератор: 4epT
Правила форума
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Все вопросы по OK не касающиеся плагинов и макросов публикуются в этом разделе.
Перед тем как что то писать, пожалуйста, удостоверьтесь что данная тема не поднималась, вы полностью изучили мануалы по конфигурационным файлам бота и не нашли там решения.
Как в макросе заставить работать 'pause @rand (4, 8)' ?
Как в макросе заставить работать "pause @rand (4, 8)".
И можно-ли чтобы @rand выдавала не только целые значения, но и значения с десятичной частью (к примеру 5.13, 6.28, 4.33, etc).
И можно-ли чтобы @rand выдавала не только целые значения, но и значения с десятичной частью (к примеру 5.13, 6.28, 4.33, etc).
Минуты две вникал и не понял как это поможет...
Дело в том что pause не работает с другими командами\переменными
Допустим возьмем следующее:
$i = 10
pause $i
log i$
через секунду получаем запись в консоле "10"
Берем значение 40, 100, тоже самое запись через секунду в консоль вылетает, т.е. паузы на 10, 40, 100 секунд нету.
Может конечно я туплю, но максимум до чего я додумался это вызывать другой макрос...
call rand_pause_4_8
Но как вернутся обратно?
Дело в том что 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
- Модератор
- Сообщения: 8205
- Зарегистрирован: Сб ноя 04, 2006 2:20 am
- Сервер RO:: localhost
- Откуда: Molvania
Плакалъ (изврат, но работает):
А вот это не работает. Почему?...Код: Выделить всё
macro izvrat { $i = 1 $maxi = @rand (4, 8) while ($i <= $maxi) as looop log shit! pause 1 $i++ end looop }

Код: Выделить всё
macro sss { $i = 15 log $i now pause... pause $i #^^^ don't worked pause @eval( $i ) #^^^ don't worked too log ...end pause $i }
Нашел решение.
Открываем plugins\macro\Script.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 @rand; pause $i - работает##########################################
# pause command
} elsif ($line =~ /^pause\s+/) {
my ($tmp) = $line =~ /^pause\s+(.*)/;
my $result = parseCmd($tmp);
if (defined $result) {$self->{timeout} = $result}
$self->{line}++;
времени до конца оттестить не было, так что могут выскочить баги...
Делал сам на основе других команд,
в перле тоже непонимаю ничего, но плагиат с других комманд рулит.
Взял команду лог и попытался разобратся почему она понимает переменные, а pause нет.
тут все пляшется от parseCmd
не уверен насчет того что выделено жирным, что это грамотно записано
приеду домой буду дальше тестить...
в перле тоже непонимаю ничего, но плагиат с других комманд рулит.
Взял команду лог и попытался разобратся почему она понимает переменные, а pause нет.
тут все пляшется от parseCmd
не уверен насчет того что выделено жирным, что это грамотно записано
но при тесте ранд и подстановке переменно все работает...} elsif ($line =~ /^pause\s+/) {
my ($tmp) = $line =~ /^pause\s+(.*)/;
приеду домой буду дальше тестить...