Project Clickable
документация

Шаги сценария

Описание всех типов блоков визуального редактора: параметры, значения по умолчанию и выходы.

Общие параметры. У каждого шага есть поле Описание (комментарий для себя) и опция Продолжить при ошибке — сценарий не остановится, если шаг завершится неудачей.
изображения

Поиск на экране

Ждать

WaitImage основной

Ожидает появления изображения на экране. Программа периодически делает скриншот и сравнивает его с шаблоном. Когда изображение найдено — сохраняет координаты центра для последующего клика.

ИзображениеКартинка для поиска из реестра проекта
Порог (0–1)Минимальный процент совпадения0.8
Таймаут (сек)Максимальное время ожидания30
ПодтвержденийСколько раз подряд нужно найти3
Сохранить XY вПеременная для координат найденного
Клик по найденномуСразу кликнуть по картинке, как только она появилась — отдельный шаг «Клик» не нужен
Ч/Б поискИгнорировать цвет при сравнении, искать только по форме — один шаблон ловит объекты разного цвета
trueизображение найдено falseтаймаут

Исчезновение

WaitDisappear

Ожидает исчезновения изображения с экрана. Полезно для ожидания закрытия окон и завершения загрузки. Исчезновение подтверждается несколькими проверками подряд.

ИзображениеКартинка для отслеживания
Порог (0–1)Минимальный процент совпадения0.8
Таймаут (сек)Максимальное время ожидания30
ПодтвержденийСколько раз подряд не найти3
Ч/Б поискИгнорировать цвет при сравнении, искать только по форме

Ждать любую

WaitAny

Ожидает появления любого изображения из списка. Полезно, когда экран может оказаться в разных состояниях. Сохраняет номер найденной картинки.

ИзображенияСписок картинок для поиска
Порог (0–1)Минимальный процент совпадения0.8
Таймаут (сек)Максимальное время ожидания30
Сохранить вПеременная для номера найденной картинки (1, 2, 3…)
По порядку в спискеВзять первую картинку из списка, что превысила порог, а не лучшее совпадение среди всех
Ч/Б поискИгнорировать цвет при сравнении, искать только по форме
Клик по найденнойСразу кликнуть по картинке, как только она появилась
LastFoundPointкоординаты LastFoundKeyключ картинки Переменнаяномер в списке

Найти все

FindAllImages

Находит все вхождения изображения на экране и возвращает список координат. Полезно для подсчёта объектов или перебора их по очереди (вместе с шагом «Перебор точек»).

ИзображениеКартинка для поиска
Порог (0–1)Минимальный процент совпадения0.8
СортировкаСортировать найденное сверху внизвыкл
Сохранить вПеременная для количества найденных
Ч/Б поискИгнорировать цвет при сравнении, искать только по форме
Переменнаяколичество найденных Переменная[0], [1]…координаты каждого

Прокрутка до

ScrollUntilFound

Прокручивает экран, пока не найдёт изображение. После каждой прокрутки делает паузу и проверяет снова. Полезно для поиска в длинных списках.

ИзображениеКартинка для поиска
Порог (0–1)Минимальный процент совпадения0.8
НаправлениеВверх или внизвниз
ЩелчковКоличество щелчков колеса за одну прокрутку3
Между щелчкамиПауза между отдельными щелчками колеса внутри одной прокрутки10 мс
Макс. попытокСколько раз прокрутить, прежде чем сдаться10
Задержка (мс)Пауза между прокрутками500
ПозицияТекущее место курсора, координаты вручную или из переменной
Клик по найденномуСразу кликнуть по картинке, докрутив до неё
Foundизображение найдено NotFoundлимит попыток исчерпан

Пока не найдёт

RepeatUntilFound

Периодически проверяет наличие изображения с заданным интервалом. Между проверками выполняет действия из ветки NotFound и автоматически возвращается к началу — стрелку возврата рисовать не нужно.

ИзображениеКартинка для поиска
Порог (0–1)Минимальный процент совпадения0.8
Макс. попытокМаксимум итераций; 0 — без ограничения10
Ожидание (сек)Сколько ждать появления на каждой попытке, прежде чем перейти по ветке NotFound5
Клик по найденномуСразу кликнуть по картинке, как только она появилась
Foundизображение найдено NotFoundпопытки исчерпаны

Найти объекты

DetectObjects

Ищет на заданном участке экрана контрастные объекты без шаблона — по цветовому/яркостному выделению (HSV), а не сравнением с картинкой. Полезно там, где заранее неизвестно, как именно выглядит объект (разномастные предметы, иконки с разной раскраской), но он заметно выделяется на фоне. Возвращает список точек — как «Найти все», их можно перебрать шагом «Перебор точек».

Область обнаруженияПрямоугольник X, Y, W, H относительно окна процесса
Порог контрастаЧувствительность выделения объекта от фона25
Насыщенность ≥Мин. насыщенность цвета; 0 — фильтр по цвету выключен
Мин. / Макс. площадьОтсекает слишком мелкие/крупные контуры100 / без ограничения
СклейкаЯдро склейки близких областей — меньше значение лучше разделяет соседние объекты9
ДетализацияМасштаб деталей: меньше — тонкие края, больше — крупные однородные пятна31
Результат вПеременная для количества найденных объектов
Переменнаяколичество найденных Переменная[0], [1]…координаты каждого
Совет: кнопка «Превью детекции» в редакторе шага сразу показывает, что найдётся с текущими настройками — подбирайте параметры по ней, не запуская сценарий.

Распознать текст

RecognizeText

Считывает текст или цифры с участка экрана через OCR (Tesseract) — уровни, ресурсы, энергию, таймеры. Результат кладётся в переменную и работает в условиях («если энергия < 200 → …»). Требует папку tessdata рядом с exe с файлами вида eng.traineddata — скачиваются отдельно, в комплект не входят.

Область распознаванияПрямоугольник X, Y, W, H относительно окна процесса
ЯзыкКод tessdata-модели, можно несколько через «+»eng
Масштаб, %Увеличение области перед распознаванием — мелкий текст читается лучше100
Бинаризация / ИнверсияПеревод в ч/б и инверсия цветов — для текста на пёстром или тёмном фоне
ПорогПорог бинаризации; 0 — подбирается автоматически (Otsu)
Только цифры / СимволыОграничить распознавание цифрами или своим набором символов
Одна строкаРаспознавать как одну строку, а не блок текста
Извлечь числоЧасть строки до разделителя, только цифры — убирает мусор вида «1,153/1,500» → «1153»
Результат вПеременная для распознанного текста
Тест: кнопка «Тест распознавания» в редакторе шага показывает, что видит OCR с текущими настройками, без запуска сценария.
действия

Мышь, клавиатура, паузы

Клик

Click основной

Клик мышью по последней найденной позиции. Обычно ставится после «Ждать», «Ждать любую» или «Если найдено».

Сохранить позициюЗапомнить координаты клика
В переменнуюИмя переменной для координат

Клик XY

ClickCoords

Клик по заданным координатам. Координаты можно указать вручную или взять из переменной. Есть режим «только переместить» — курсор двигается без клика.

X, YКоординаты для клика
Из переменнойИли переменная с координатами вида «X,Y»

Текст

Text

Вводит текст с клавиатуры. Текст задаётся напрямую или берётся из переменной.

Текст для вводаСтрока, которую нужно ввести
Из переменнойИли взять текст из переменной

Клавиша

KeyPress

Нажимает клавишу: Enter, Space, Tab, Escape, стрелки, F1–F12 и другие.

КлавишаEnter, Space, Tab, Escape, Up, Down, F1–F12…
ПроцессАктивировать окно перед нажатием (опционально)

Прокрутка

Scroll

Прокручивает колесо мыши вверх или вниз на указанное количество щелчков.

НаправлениеВверх или внизвниз
ЩелчковКоличество щелчков колеса3
Задержка (мс)Пауза между щелчками10
ПозицияТекущее место курсора, координаты вручную или из переменной

Пауза

Delay

Простая пауза на указанное время — для ожидания анимаций и загрузки.

Задержка (мс)Время паузы в миллисекундах1000
Случайное времяВместо фиксированного значения — случайное число из диапазона «От — До» на каждый запуск шага
логика и циклы

Ветвления и повторы

Если найдено

IfFound ветвление

Проверяет, есть ли изображение на экране прямо сейчас, без ожидания. При нахождении сохраняет координаты — можно сразу кликнуть.

ИзображениеКартинка для проверки
Порог (0–1)Минимальный процент совпадения0.8
Клик по найденномуСразу кликнуть по картинке, если она найдена
Ч/Б поискИгнорировать цвет при сравнении, искать только по форме
Foundизображение найдено NotFoundне найдено

Условие ==

IfVariableEquals ветвление

Сравнивает переменную со значением на равенство. Можно указать несколько значений через точку с запятой — сработает, если совпадёт любое (например «1;6»).

ПеременнаяИмя проверяемой переменной
Сравнить сЗначение, список значений через «;» или имя другой переменной
Trueравны Falseне равны

Условие >

IfVariableGreater ветвление

Проверяет, больше ли числовая переменная указанного значения. Дробные числа можно вводить и с точкой, и с запятой.

ПеременнаяИмя переменной (число)
Сравнить сЧисло для сравнения
Trueпеременная больше Falseменьше или равна

Условие <

IfVariableLess ветвление

Проверяет, меньше ли числовая переменная указанного значения.

ПеременнаяИмя переменной (число)
Сравнить сЧисло для сравнения
Trueпеременная меньше Falseбольше или равна

Цвет пикселя

IfPixelColor ветвление

Проверяет, совпадает ли цвет в точке экрана с заданным RGB (с допуском) — самая дешёвая проверка состояния (полоска здоровья, активность кнопки, готовность скилла), без template matching. Читает усреднённый цвет области 3×3 вокруг точки — устойчиво к шуму. Координаты — относительно окна процесса, как у «Клик XY».

Точка X/YГде проверять цвет; пипетка выбирает прямо на экране
Цвет RGBЭталон; кнопка «Взять цвет в точке» берёт его прямо с экрана
ДопускОтклонение по каждому каналу RGB (0–255)10
Игнорировать яркостьСравнивать только тон — пульсация/затемнение интерфейса не ломает проверку
Допуск яркостиОтдельный допуск на общий сдвиг яркости при «Игнорировать яркость»60
Ждать совпаденияНе проверять один раз, а ждать нужный цвет до таймаута
Таймаут / ИнтервалСколько ждать и как часто проверять (при «Ждать совпадения»)30 с / 200 мс
Trueцвет совпал Falseне совпал / таймаут

Повтор

Repeat цикл

Цикл, который выполняется указанное количество раз. Счётчик сбрасывается при выходе.

ПовторитьКоличество повторений1
Loopочередная итерация Exitвыход из цикла
Как соединять: выход «Loop» → первый шаг тела цикла → … → обратно к «Повтору». Выход «Exit» → следующий шаг после цикла.

Для каждого

ForEachSequence цикл

Перебирает значения последовательности (например «1,2,3,4») и выполняет действия для каждого элемента. После тела цикла автоматически возвращается к началу — стрелку возврата рисовать не нужно.

ПоследовательностьИмя параметра или переменной с последовательностью
Текущий элементПеременная, куда записывается текущее значение
Loopдействия для текущего элемента Exitвсе элементы обработаны
Пример: параметр action_sequence = «1,2,3,4». На каждой итерации переменная current_action получает «1», «2», «3», «4» — внутри цикла ветвимся условием «если current_action == 1 → …».

Перебор точек

ForEachFoundPoint цикл

Перебирает координаты, которые нашёл предыдущий шаг «Найти все» или «Найти объекты» — на каждой итерации ставит текущую точку как последнюю найденную, так что обычный «Клик» сразу кликает по ней. После тела цикла автоматически возвращается к началу — стрелку возврата рисовать не нужно.

Loopтекущая точка, есть ещё Exitвсе точки перебраны
Как соединять: сначала «Найти все» или «Найти объекты», затем «Перебор точек» → выход «Loop» → «Клик» (и что нужно сделать с точкой) → обратно к «Перебору точек».

Стоп

StopScenario

Принудительно останавливает выполнение сценария в этой точке графа — сразу, без дальнейших шагов и без циклов. Параметров не имеет: перетащили на холст, соединили — и блок готов, отдельного редактора у него нет.

переменные

Счётчики и значения

Установить

SetVariable

Устанавливает значение переменной. Тип определяется автоматически: число, логическое значение или строка.

ДействиеУстановить значение / Прибавить 1 / Убавить 1
ИмяИмя переменной — новое или из списка
ЗначениеЧисло, текст или true/false
Примеры: counter = 0 → число · name = "player1" → строка · enabled = true → логическое

Увеличить

IncrementVariable

Увеличивает числовую переменную на 1. Тот же редактор, что и у «Установить», с действием «Прибавить 1».

ИмяИмя переменной

Уменьшить

DecrementVariable

Уменьшает числовую переменную на 1. Тот же редактор, что и у «Установить», с действием «Убавить 1».

ИмяИмя переменной
окна

Работа с окнами

Активировать

BringWindowToFront

Выводит окно целевого процесса на передний план; свёрнутое окно автоматически восстанавливается из панели задач. Процесс берётся из настроек сценария.

trueокно активировано falseокно не найдено

Клик в центр

ClickWindowCenter

Клик по центру окна целевого процесса. Если процесс не указан — кликает по центру экрана.

След. окно

SwitchWindow

Точка передачи управления следующему окну — работает только в мультиоконном режиме (несколько окон одного процесса игры). В одиночном режиме шаг просто пропускается, как будто его нет. Позволяет точно расставить, где именно в графе программа должна переключаться на другое окно, вместо автоматического чередования после каждого действия. Параметров не имеет, отдельного редактора у него нет.

скрипты

Произвольный код

JS код

Script

Кусок произвольного JavaScript вместо цепочки кубиков — логика, переменные, условия одним узлом. Движок — Jint (JS на чистом C#, встроен в программу, отдельно ставить ничего не нужно). Внутри доступен объект ctx: переменные, поиск и клик по картинке, клавиатура, лог.

Полное описание API — на отдельной странице: JS-скрипты.