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

Основной раздел => Общие вопросы => Topic started by: LLlteйn on February 18, 2018, 09:35:36 PM

Title: потоки
Post by: LLlteйn on February 18, 2018, 09:35:36 PM
Здравствуйте, скажите пожалуйста:
1. можно свои шаблоны добавить в кликер, если да то как?
2. могли бы вы мне подсказать про потоки в кликере как они устроены и как их правильно использовать (на сколько я понимаю кликер может выполнять основной скрипт (находящийся в первом потоке), а если появится один из заданных параметров второго потока он может приостановить первый, выполнить заданное условие и возобновить работу первого патока) верно?
Title: Re: потоки
Post by: Oraven on February 19, 2018, 08:23:26 AM
1. Можно. Файл "\data\lang\ru\qinsert_menu.txt" отвечает за меню команд. А в папке "\data\lang\ru\templates\" собраны шаблоны скриптов в обычном txt формате. Ты можешь добавить свои скрипты, только не забудь перезапустить кликер.

2. В кликере есть основной поток, его нельзя остановить командами кликера.
Дополнительные потоки создаются функцией THREAD. Описание потока не может быть никуда вложено. Из потока нельзя выпрыгнуть через ГОТО. Если в потоке используется подпрограмма то описание подпрограммы должно быть включено в поток. При этом GETSCREEN и переменные являются общими для всех потоках, изоляции для них нет.
Code: (clickermann) [Select]
THREAD(name, 1)
   // тело
END_THREAD

Управлять потоком можно командой SETTHREAD.
Code: (clickermann) [Select]
SETTHREAD (name, 0) // 0 - Пауза, 1 - Старт, 2 - Стоп
Вжно! В 4.12 версии кликера есть бог потока, если остановить поток SETTHREAD (name, 2) а потом запустить его SETTHREAD (name, 1) то в этом потоке перестает воспроизводиться первая строка. Лечится вписыванием первой строкой какой нибудь команды, например WAIT(0). В последней 4.13 бета версии это исправлено.

Можно протестировать таким скриптом
Code: (clickermann) [Select]
THREAD(name, 1)
   LOGWRITE ("1")
   LOGWRITE ("2")
   LOGWRITE ("3")
   WAIT(1)
END_THREAD

LOGSHOW (1)
WAIT(2)
SETTHREAD (name, 2) // останавливаем
WAIT(3)
SETTHREAD (name, 1) // запускаем (поток начнется сначала)
WAIT(3)

Видел скрипты состоящие только из потоков, это не правильно в основном потоке должна быть пауза, ведь он тоже крутится.