Author Topic: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )  (Read 3593 times)

0 Members and 1 Guest are viewing this topic.

LipsInc

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« 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

« Last Edit: June 03, 2014, 08:08:19 PM by LipsInc »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #1 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

комб()

LipsInc

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #2 on: June 03, 2014, 09:42:48 PM »
Oraven, огромное вам спасибо)
когда то делал подобное, но уже забыл как

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

апд. создал
http://crapware.aidf.org/forum/index.php?topic=1233.0
« Last Edit: June 03, 2014, 09:46:32 PM by LipsInc »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #3 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")
Возможно ошибаюсь, нужно пробовать. Тем более на древней версии.
« Last Edit: June 03, 2014, 10:15:24 PM by Vint »


LipsInc

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #4 on: June 03, 2014, 11:41:59 PM »
Vint, спасибо, но я уже переделал в условия, это несложно
позже проверю вариант с " "

LipsInc

  • Освоившийся
  • **
  • Posts: 21
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #5 on: June 04, 2014, 12:07:01 AM »
нет, " " не помогают
не работает ни
$var5 = RNDFROM ( "11", "15", "19", "23", "27")
ни
GOTO(RNDFROM ( "11", "15", "19", "23", "27"))

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Не работает GOTO(RNDFROM ( 11, 15, 19, 23, 27) )
« Reply #6 on: June 04, 2014, 08:13:08 AM »
Точно, в GOTO метка же без кавычек указывается.