Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: LipsInc on June 03, 2014, 07:43:59 PM

Title: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post 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) ) - не работает тоже ((

Code: [Select]
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

лог
Code: [Select]
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

Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: Oraven on June 03, 2014, 08:09:14 PM
Очевидно GOTO не поддерживает подстановку имени через переменную. Нужно использовать условия

Code: (clickermann) [Select]
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 это стало еще компактнее и проще.

Code: (clickermann) [Select]
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

комб()
Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: LipsInc on June 03, 2014, 09:42:48 PM
Oraven, огромное вам спасибо)
когда то делал подобное, но уже забыл как

кстати, неплохо бы попросить Джанни, чтобы GOTO поддерживало подстановку имени через переменную, пойду создам тему

апд. создал
http://crapware.aidf.org/forum/index.php?topic=1233.0
Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: Vint on June 03, 2014, 10:12:51 PM
с условием и свитчем всё правильно и незачем делать не нужный функционал.
Тем более в данном примере вариантов масса. Начиная с того, что GOTO совсем не нужен:
$var5 = RNDFROM ( 11, 15, 19, 23, 27)
LOGWRITE("Ходим: ",  $var5)
Если это просто пример, то условия рулят.
Не делаю так, поэтому не помню, но кажется работает даже так, как ты хочешь. Только одно но: ты в переменную заносишь число, а метка всегда текст. Даже если выглядит числом. Нужно выбирать так:
$var5 = RNDFROM ("11","15","19", "23", "27")
Возможно ошибаюсь, нужно пробовать. Тем более на древней версии.
Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: LipsInc on June 03, 2014, 11:41:59 PM
Vint, спасибо, но я уже переделал в условия, это несложно
позже проверю вариант с " "
Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: LipsInc on June 04, 2014, 12:07:01 AM
нет, " " не помогают
не работает ни
$var5 = RNDFROM ( "11", "15", "19", "23", "27")
ни
GOTO(RNDFROM ( "11", "15", "19", "23", "27"))
Title: Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
Post by: Vint on June 04, 2014, 08:13:08 AM
Точно, в GOTO метка же без кавычек указывается.