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

Основной раздел => Общие вопросы => Topic started by: zmrvyuls on January 14, 2021, 03:36:15 PM

Title: Повторение скрипта
Post by: zmrvyuls on January 14, 2021, 03:36:15 PM
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.
Title: Re: Повторение скрипта
Post by: dramster on January 14, 2021, 03:59:41 PM
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.

Code: (clickermann) [Select]
inc($var) //наращиваем переменную
SWITCH($var)
CASE(1)
// случай 1
   print("нажатие А")
CASE(2)
// случай 2
   print("Б")
CASE(3)
// случай 3
   print("В")
CASE(4)
// случай 4
   print("Г")
   $var = 0   //обнуляем переменную
END_SWITCH
Title: Re: Повторение скрипта
Post by: zmrvyuls on January 14, 2021, 04:22:46 PM
Спасибо, то что нужно
Title: Re: Повторение скрипта
Post by: zmrvyuls on January 24, 2021, 03:11:16 PM
Подскажите, как сделать так, чтобы скрипт при повторении выполнял поочередно одно из 4 действий? Например, 1ый раз - нажатие А, 2ой - Б, 3ий - В и 4ый - Г. И так по кругу.

Code: (clickermann) [Select]
inc($var) //наращиваем переменную
SWITCH($var)
CASE(1)
// случай 1
   print("нажатие А")
CASE(2)
// случай 2
   print("Б")
CASE(3)
// случай 3
   print("В")
CASE(4)
// случай 4
   print("Г")
   $var = 0   //обнуляем переменную
END_SWITCH

Можно ли добавить какой-то параметр отвечающий за количество CASE и то, какой из них будет стартовым?
Что-то вроде "Стартовый CASE" = 3, "Количество CASE"  = 3
и скрипт уже бы работал в режиме В, А, Б, В, А, Б, В, А, Б...
Title: Re: Повторение скрипта
Post by: Космич on January 24, 2021, 06:55:51 PM
Можно ли добавить какой-то параметр отвечающий за количество CASE

Зачем? :D
Title: Re: Повторение скрипта
Post by: zmrvyuls on January 24, 2021, 07:27:23 PM
Можно ли добавить какой-то параметр отвечающий за количество CASE

Зачем? :D

Хочу вывести эти два параметра в Окно ввода через inputbox, чтобы каждый раз не редактировать скрипт
Title: Re: Повторение скрипта
Post by: Космич on January 24, 2021, 10:06:50 PM
Допустим ты их вывел, а дальше что? Сами по себе кейсы ничего делать не будут
Title: Re: Повторение скрипта
Post by: dramster on January 25, 2021, 12:10:27 AM
Можно ли добавить какой-то параметр отвечающий за количество CASE и то, какой из них будет стартовым?
Что-то вроде "Стартовый CASE" = 3, "Количество CASE"  = 3
и скрипт уже бы работал в режиме В, А, Б, В, А, Б, В, А, Б...
Хочу вывести эти два параметра в Окно ввода через inputbox, чтобы каждый раз не редактировать скрипт

Code: (clickermann) [Select]
IF($start_CASE = 0)  //начальные параметры
   $start_CASE = inputbox("Стартовый CASE", 1, 10)
   $amount_CASE = inputbox("Количество CASE", 4, 10)
END_IF

SWITCH($start_CASE)
   CASE(1)
      // случай 1
      print("А")
   CASE(2)
      // случай 2
      print("Б")
   CASE(3)
      // случай 3
      print("В")
   CASE(4)
      // случай 4
      print("Г")
   DEFAULT
      print("Недопустимые начальные параметры.")
      halt
END_SWITCH

IF($amount_CASE = $start_CASE) //возврат к началу, если параметр кол-ва кейсов сровнялся с последним в переключателе
   $start_CASE = 0
END_IF

inc($start_CASE) //наращиваем переменную



А теперь вопрос у меня:
Справка -  "DEFINE ($var, [value] ), инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется."
Почему DEFINE ($start_CASE, inputbox("Стартовый CASE", 1, 10)) каждый раз вызывает inputbox?
Естественно это не критично, просто без лишних мыслей сперва написал именно так... не прокатило.
Title: Re: Повторение скрипта
Post by: Vint on January 25, 2021, 01:13:41 PM
А теперь вопрос у меня:
Справка -  "DEFINE ($var, [value] ), инструкция сработает только если переменная не была объявлена раньше. В противном случае инструкция игнорируется."
Почему DEFINE ($start_CASE, inputbox("Стартовый CASE", 1, 10)) каждый раз вызывает inputbox?
Естественно это не критично, просто без лишних мыслей сперва написал именно так... не прокатило.
Вызывается то inputbox каждый раз, но значение не присваивается.
Видимо проверка производится после синтаксического разбора. Т.е. разбираем DEFINE получаем имя переменной и параметр и тут загвоздка, параметр состоит из функции, нужно вызвать функцию. Потом проверяем что переменная существует и не присваиваем значение, если да.
Проверка должна стоять после считывания имени переменной и до чтения параметра (и его разбора).
Боюсь Джонни не до таких мелких фиксов. Напиши на всякий случай в ошибки.
Title: Re: Повторение скрипта
Post by: Vint on January 25, 2021, 06:03:31 PM
Ну почему же? Ведь после обнуления $start_CASE = 0 она сразу наращивается inc($start_CASE). Значит IF($start_CASE = 0) сработает только один раз при запуске скрипта.
Недоглядел  :-\

До последней строки не домотал чуть, а про case подумал что с нуля.