В программе практически с самого ее появления присутствовала возможность писать произвольный код на языке C#. В первых версиях (~весна 2021) это было очень больно, очень неудобно, но все равно возможно. Вторая версия вышла весной 2023 и содержала в себе такие штуки как возможность использования внешней IDE для написания программ и значиетельно большие возможности у самих скриптов, к примеру, написание полноценного пользовательского интерфейса с использованием Blazor. По сути, это разблокировало возможность писать действительно мощные скрипты, однако количество препятствий и "особенностей" все еще было слишком велико.
И сейчас, весной 2024, потихоньку появляется новая версия скриптов. В этом, уже третьем, поколении, возможности самой скриптовой системы огромны - доступно практически все, что сама программма может делать, с возможностью подключения сторонних nuget пакетов, с защитой от крашей и типовых ошибок и многим-многим другим. Входной порог также значительно снижена - добавлены новые API, улучшено диагностирование и т.п.
Сама программа построена на платформе .NET. Это очень динамично развивающаяся платформа,крайне гибкая и при этом эффективная. В качестве скриптового языка используется C# 12.
Каждый скрипт, который вы пишете, будет скомпилирован с использованием Roslyn. Большая часть головной боли, связанной с тем, как подключать файлы, что можно делать, а что нельзя и тому подобные вещи уже решены в самой программе, так что вам остается только сосредоточиться на работе с самим скриптом.
В программе есть аж 3 способа, как вы можете запустить свой код. Все они будут запущены внутри песочницы.
Самый простой вариант. Вам всего лишь нужно добавить действие "C# Script". Оно (действие) подчиняется всем тем же правилам, что и любые другие, соответственно для того, чтобы запустить его, нужно добавить какой-то триггер. К примеру, можно добавить Hotkey Is Active, повесить его на какую-нибудь кнопку и активировать скрипт при нажатии/зажатии.
Более сложный вариант - ваш скрипт будет исполняться через определенные интервалы времени. При этом ожидается, что в каком-то месте кода вы вернете true/false или null, что приведет к активации и деактивации триггера. Дальше уже на триггер можно навесить действия, в том числе и действия-скрипты. Увеличенная сложность заключается в том, что ваш скрипт запускается постоянно и контролируется только с помощью Enabling Conditions, а значит и писать код нужно более аккуратно, иначе можно оказаться в ситуации, когда скрипт с ошибкой будет постоянно забирать контроль над мышкой/клавиатурой или съест всю доступную память на компьютере.
Самый продвинутый вариант скриптов. Помимо всего, что доступно в действиях/триггерах, WebUI позволяет вам написать кастомный пользовательский интерфейс с кнопками, рычажками и полями ввода. UI технология, которая используется для отрисовки называется Blazor и на 2024 год это лучшее, что инфраструктура .NET может предложить. У самой технологии есть несколько проблем, так как идеала не существует, но EyeAuras предлагает несколько решений, который сглаживают эти проблемы и, в конечном счете, ваши возможности ограничены лишь фантазией. Ниже несколько примеров разных форм, которые собраны на WebUI
20 февраля 2024
на момент написания статьи WebUI пока что использует более старую версию скриптов, это будет исправлено в ближайшие недели.
И программа, и API построены на такой штуке как Dependency Injection. Если человеческим языком, то программа нарезана на маленькие кусочки, каждый из которых отвечает за что-то свое. Как в большом доме, кто-то умеет варить кашу, кто-то шить носки, а кто-то не умеет ничего, но так уж вышло, что он все еще существует.
У каждого в этом доме есть имя, к примеру, если хочется двинуть мышку, то нужно обратиться к ISendInputUnstableScriptingApi и вызвать MouseMoveTo. Если хочется проиграть звук, то это нам к IPlaySoundScriptingApi. Ответственности всех разные и, как и в жизни, чтобы все получалось очень важно знать правильные имена
В этой документации будут перечислены основные и наиболее полезные, однако полный спектр перечислять смысла нет - в NuGet пакете EyeAuras.SDK перечислено абсолютно все, что можно использовать и что будет доступно вашим скриптам.
Если бы каждый программист писал все с нуля, мы бы до сих пор коллективно переизобретали колесо. Поэтому в скриптах есть полная поддержка внешних пакетов. В инфраструктуре .NET почти все хранится в NuGet'e, как официальные библиотеки, так и неофициальные. Есть десятки списков полезных пакетов, начать можно с этого.
В скриптах можно подключить практически любые из них. Пока что есть исключения, но я работаю над их устранением.
20 февраля 2024
На данный момент поддержка внешних библиотек включена только для alpha-тестеров. Как только этот функционал стабилизируется, он будет включен для всех остальных. я думаю в начале-середине марта эти ограничения будут сняты.