Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: SimplY on February 09, 2023, 01:35:29 PM
-
Всем добрый день!
Не могу выстроить код.
Задача: Нужно, чтобы кликер в рандомном варианте проиграл звуковые файлы wav, но столько раз, сколько этих файлов и каждый файл только один раз!
SOUND("Молоко.wav")
SOUND("Сметана.wav")
SOUND("Творог.wav")
SOUND("Хлеб.wav")
SOUND("Сливки.wav")
Например:
Сметана, Хлеб, Сливки, Творог, Молоко
Второй запуск:
Сливки, Творог, Сметана, Хлеб, Молоко
И прочее...
Строго 5 раз (коли их 5) и Сметана нигде дважды не повторяется. Как и хлеб и прочее.
Пробовал методом, когда создается текстовый файл, затем удаляется строка, которая проиграла и так, пока не закончатся строки. Не получилось.
Может как-то по-другому надо?
Помимо проигрывания wav файлов, может дополниться скриптом. Например, сначала рандомно одна часть скрипта, затем вторая и прочее.
Заранее спасибо!
-
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 0.1 (19.01.2021)
// Скрипт для Clickermann v4.13.014
STRSEPARATE("1,три,четыреста четыре,8,9,15", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
$ind = RND(0, ARRSIZE($data)-1)
$result = $data[$ind]
LOGWRITE("Выбранный элемент: ", $result)
// делаешь с элементом $result то, что тебе нужно
$data[$ind] = $data[ARRSIZE($data) - 1]
$temp = ARRPOP($data)
END_CYC
Подстраивай под свои соунды.
-
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 0.1 (19.01.2021)
// Скрипт для Clickermann v4.13.014
STRSEPARATE("1,три,четыреста четыре,8,9,15", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
$ind = RND(0, ARRSIZE($data)-1)
$result = $data[$ind]
LOGWRITE("Выбранный элемент: ", $result)
// делаешь с элементом $result то, что тебе нужно
$data[$ind] = $data[ARRSIZE($data) - 1]
$temp = ARRPOP($data)
END_CYC
Подстраивай под свои соунды.
Спасибо!!!
-
Друзья, Не могу понять!
Должно быть так:
Кликер производит Хлеб или Сметана или Молоко, дальше я либо нажимаю на Ctrl, тогда повторяется с записью в текстовый файл, либо на ALT, тогда следующий вариант.
На практике после нажатия на ALT слова иногда повторяются.
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 0.1 (19.01.2021)
// Скрипт для Clickermann v4.13.014
WAITMS(500)
THREAD(sec, 0)
WAIT(3)
BEEP(700,100)
WAIT(1000)
END_THREAD
WAITMS(20)
STRSEPARATE("1,2,3", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
$ind = RND(0, ARRSIZE($data)-1)
$result = $data[$ind]
$data[$ind] = $data[ARRSIZE($data) - 1]
$temp = ARRPOP($data)
END_CYC
WAITMS(500)
skip:
WAITMS(20)
$ress = ARRPOP($result)
LOGWRITE ($ress)
IF($ress = 1)
FOR($a=0,$a<15)
WAITMS(200)
SOUND("Сметана.wav")
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Сметана")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_CYC
END_IF
IF($ress = 2)
FOR($a=0,$a<15)
WAITMS(200)
SOUND("Хлеб.wav")
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Хлеб")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_CYC
END_IF
IF($ress = 3)
$varr = RND(1,5)
FOR($a=0,$a<15)
WAITMS(200)
IF($varr = 1)
SOUND("Молоко2.wav")
END_IF
IF($varr = 2)
SOUND("Молоко.wav")
END_IF
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Молоко")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_CYC
END_IF
IF($ress = "")
$fin_oth = TFCOUNT("input.txt")
$th = $_time_h
$tm = $_time_m
$ts = $_time_s
$dd = $_date_d
$dm = $_date_m
$dy = $_date_y
IF(STRLEN($th)<2)
$th = STRCONCAT ("0", $th)
END_IF
IF(STRLEN($tm)<2)
$tm = STRCONCAT ("0", $tm)
END_IF
IF(STRLEN($ts)<2)
$ts = STRCONCAT ("0", $ts)
END_IF
IF(STRLEN($dd)<2)
$dd = STRCONCAT ("0", $dd)
END_IF
IF(STRLEN($dm)<2)
$dm = STRCONCAT ("0", $dm)
END_IF
IF(STRLEN($dy)<2)
$dy = STRCONCAT ("0", $dy)
END_IF
#DEFINE @CRLF: CHAR(13), CHAR(10)
#DEFINE @TAB: CHAR(9)
$fin = STRCONCAT($dd,".",$dm,".",$dy, @TAB, $th,":",$tm, @TAB, $fin_oth)
WAITMS(20)
TFWRITE("Результаты.txt", $fin)
WAITMS(200)
SOUND("Концовка.wav")
WAIT
ELSE
WAITMS(20)
GOTO(skip)
END_IF
В чем я недоглядел?
Подозреваю, что не там стоит метка SKIP, но я менял ее местами и не получается.
-
Вы из цикла выходите без завершения его работы, переходя к метке.
Именно, как описываете и должна проявляться такая ошибка.
-
Вы из цикла выходите без завершения его работы, переходя к метке.
Именно, как описываете и должна проявляться такая ошибка.
В других скриптах с этим проблем не было.
Как тогда завершить цикл, чтобы при нажатии на клавишу вернуться в нужное место?
-
#name "Случайные элементы без повторений"
// Author: Vint
// Version: 2.1 (14.02.2023)
// Скрипт для Clickermann v4.13.014
WAITMS(500)
THREAD(sec, 0)
WAIT(3)
BEEP(700,100)
WAIT(1000)
END_THREAD
WAITMS(20)
STRSEPARATE("1,2,3", ",", $data) // список значений для выбора
WHILE(ARRSIZE($data) > 0)
$ind = RND(0, ARRSIZE($data)-1)
$result = $data[$ind]
$data[$ind] = $data[ARRSIZE($data) - 1]
$temp = ARRPOP($data)
END_CYC
WAITMS(500)
skip:
WAITMS(20)
$ress = ARRPOP($result)
LOGWRITE ($ress)
IF($ress = 1)
FOR($a=0,$a<15)
WAITMS(200)
SOUND("Сметана.wav")
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
$a=20
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
$a=20
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Сметана")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_IF
IF($ress = 2)
FOR($a=0,$a<15)
WAITMS(200)
SOUND("Хлеб.wav")
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
$a=20
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
$a=20
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Хлеб")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_IF
IF($ress = 3)
$varr = RND(1,5)
FOR($a=0,$a<15)
WAITMS(200)
IF($varr = 1)
SOUND("Молоко2.wav")
END_IF
IF($varr = 2)
SOUND("Молоко.wav")
END_IF
SETTHREAD (sec, 1)
$check = 0
WHILE($check = 0)
IF(ISKEYDOWN(#CTRL)=1)
WHILE(ISKEYDOWN(#CTRL)=1)
END_CYC
$check = 1
$a=20
ELSE
IF(ISKEYDOWN(#ALT)=1)
WHILE(ISKEYDOWN(#ALT)=1)
END_CYC
$check = 2
$a=20
ELSE
WAITMS(20)
END_IF
END_IF
END_CYC
END_CYC
IF($check = 1) // Продолжение скрипта (вариант 1)
WAITMS(20)
TFWRITE("input.txt", "Молоко")
WAITMS(20)
SETTHREAD (sec, 2)
END_IF
IF($check = 2) // Продолжение скрипта (вариант 2)
WAITMS(20)
SETTHREAD (sec, 2)
WAITMS(20)
GOTO(skip)
END_IF
END_IF
IF($ress = "")
$fin_oth = TFCOUNT("input.txt")
$th = $_time_h
$tm = $_time_m
$ts = $_time_s
$dd = $_date_d
$dm = $_date_m
$dy = $_date_y
IF(STRLEN($th)<2)
$th = STRCONCAT ("0", $th)
END_IF
IF(STRLEN($tm)<2)
$tm = STRCONCAT ("0", $tm)
END_IF
IF(STRLEN($ts)<2)
$ts = STRCONCAT ("0", $ts)
END_IF
IF(STRLEN($dd)<2)
$dd = STRCONCAT ("0", $dd)
END_IF
IF(STRLEN($dm)<2)
$dm = STRCONCAT ("0", $dm)
END_IF
IF(STRLEN($dy)<2)
$dy = STRCONCAT ("0", $dy)
END_IF
#DEFINE @CRLF: CHAR(13), CHAR(10)
#DEFINE @TAB: CHAR(9)
$fin = STRCONCAT($dd,".",$dm,".",$dy, @TAB, $th,":",$tm, @TAB, $fin_oth)
WAITMS(20)
TFWRITE("Результаты.txt", $fin)
WAITMS(200)
SOUND("Концовка.wav")
WAIT
ELSE
WAITMS(20)
GOTO(skip)
END_IF