В программе практически с самого ее появления присутствовала возможность писать произвольный код на языке 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
И программа, и API построены на такой штуке как Dependency Injection. Если человеческим языком, то программа нарезана на маленькие кусочки, каждый из которых отвечает за что-то свое. Как в большом доме, кто-то умеет варить кашу, кто-то шить носки, а кто-то не умеет ничего, но так уж вышло, что он все еще существует.
У каждого в этом доме есть имя, к примеру, если хочется двинуть мышку, то нужно обратиться к ISendInputUnstableScriptingApi и вызвать MouseMoveTo. Если хочется проиграть звук, то это нам к IPlaySoundScriptingApi. Ответственности всех разные и, как и в жизни, чтобы все получалось очень важно знать правильные имена
В этой документации будут перечислены основные и наиболее полезные, однако полный спектр перечислять смысла нет - в NuGet пакете EyeAuras.SDK перечислено абсолютно все, что можно использовать и что будет доступно вашим скриптам.
Если бы каждый программист писал все с нуля, мы бы до сих пор коллективно переизобретали колесо. Поэтому в скриптах есть полная поддержка внешних пакетов. В инфраструктуре .NET почти все хранится в NuGet'e, как официальные библиотеки, так и неофициальные. Есть десятки списков полезных пакетов, начать можно с этого.
В скриптах можно подключить практически любые из них. Пока что есть исключения, но я работаю над их устранением.
20 февраля 2024
На данный момент поддержка внешних библиотек включена только для alpha-тестеров. Как только этот функционал стабилизируется, он будет включен для всех остальных. я думаю в начале-середине марта эти ограничения будут сняты.