Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: LipsInc on June 03, 2014, 07:43:59 PM
-
Не могу понять, почему не работает этот скрипт ((
Задумка - переход к рандомно выбранной строке, на деле выполняет только строку с меткой 11: хотя $var5 = RNDFROM ( 11, 15, 19, 23, 27) работает и приваивает переменной рандомные значения
Кликерман версия: 4.5.
пробовал GOTO( RNDFROM ( 11, 15, 19, 23, 27) ) - не работает тоже ((
WAIT(1)
GOSUB(комб)
SUB(комб)
$var5 = RNDFROM ( 11, 15, 19, 23, 27)
LOGWRITE("$var: ", $var5)
GOTO($var5)
11: // 53,49, 55,56
LOGWRITE("Ходим: ", 11)
GOTO(30)
15: // 53,49, 55,56
LOGWRITE("Ходим: ", 15)
GOTO(30)
19: // 53,49, 55,56
LOGWRITE("Ходим: ", 19)
GOTO(30)
23: // 53,49, 55,56
LOGWRITE("Ходим: ", 23)
GOTO(30)
27: // 53,49, 55,56
LOGWRITE("Ходим: ", 27)
30:
END_SUB
лог
20:07:21 $var: 11
20:07:21 Ходим: 11
20:07:22 $var: 11
20:07:22 Ходим: 11
20:07:23 $var: 15
20:07:23 Ходим: 11
20:07:24 $var: 15
20:07:24 Ходим: 11
20:07:25 $var: 15
20:07:25 Ходим: 11
20:07:26 $var: 27
20:07:26 Ходим: 11
20:07:27 $var: 11
20:07:27 Ходим: 11
20:07:28 $var: 15
20:07:28 Ходим: 11
20:07:29 $var: 27
20:07:29 Ходим: 11
20:07:30 $var: 19
20:07:30 Ходим: 11
-
Очевидно GOTO не поддерживает подстановку имени через переменную. Нужно использовать условия
WAIT(1)
GOSUB(комб)
SUB(комб)
$var5 = RNDFROM ( 11, 15, 19, 23, 27)
LOGWRITE("$var: ", $var5)
IF($var5 = 11)
LOGWRITE("Ходим: ", 417)
END_IF
IF($var5 = 15)
LOGWRITE("Ходим: ", 417)
END_IF
IF($var5 = 19)
LOGWRITE("Ходим: ", 417)
END_IF
IF($var5 = 23)
LOGWRITE("Ходим: ", 417)
END_IF
IF($var5 = 27)
LOGWRITE("Ходим: ", 417)
END_IF
END_SUB
В последних версиях 4.9-4.10 с функцией SWITCH это стало еще компактнее и проще.
WAIT(1)
SUB(комб)
$var5 = RNDFROM ( 11, 15, 19, 23, 27)
LOGWRITE("$var: ", $var5)
SWITCH($var5)
CASE(11)
LOGWRITE("Ходим: ", 417)
CASE(15)
LOGWRITE("Ходим: ", 417)
CASE(19)
LOGWRITE("Ходим: ", 417)
CASE(23)
LOGWRITE("Ходим: ", 417)
CASE(27)
LOGWRITE("Ходим: ", 417)
DEFAULT
END_SWITCH
END_SUB
комб()
-
Oraven, огромное вам спасибо)
когда то делал подобное, но уже забыл как
кстати, неплохо бы попросить Джанни, чтобы GOTO поддерживало подстановку имени через переменную, пойду создам тему
апд. создал
http://crapware.aidf.org/forum/index.php?topic=1233.0
-
с условием и свитчем всё правильно и незачем делать не нужный функционал.
Тем более в данном примере вариантов масса. Начиная с того, что GOTO совсем не нужен:
$var5 = RNDFROM ( 11, 15, 19, 23, 27)
LOGWRITE("Ходим: ", $var5)
Если это просто пример, то условия рулят.
Не делаю так, поэтому не помню, но кажется работает даже так, как ты хочешь. Только одно но: ты в переменную заносишь число, а метка всегда текст. Даже если выглядит числом. Нужно выбирать так:
$var5 = RNDFROM ("11","15","19", "23", "27")
Возможно ошибаюсь, нужно пробовать. Тем более на древней версии.
-
Vint, спасибо, но я уже переделал в условия, это несложно
позже проверю вариант с " "
-
нет, " " не помогают
не работает ни
$var5 = RNDFROM ( "11", "15", "19", "23", "27")
ни
GOTO(RNDFROM ( "11", "15", "19", "23", "27"))
-
Точно, в GOTO метка же без кавычек указывается.