Easy Universal — SDK 0.3
Начните с sdk/START_03_RU.md. GUI/темы: sdk/GUI_03_RU.md. Внешняя скалярная
телеметрия и reference provider: sdk/EXTERNAL_SOURCE_RU.md. PID провайдера и
разрешения выбираются в Settings. Это не внешний backend Process API.
Новый Process toolkit описан в sdk/PROCESS_API_RU.md: потоки/handles,
запись с отдельным согласием, сигнатуры/RIP, JSON-профили и диагностика.
Новые process permissions требуют api 0.2 или новее. Пакеты 0.1/0.2 совместимы.
Вкладка Details показывает разрешения; запись выключена по умолчанию.
Новые функции SDK описаны в sdk/EXTENSIONS_RU.md. Для первого знакомства
откройте каталог examples командой bin/EasyUniversal.exe client ./examples,
выберите SDK workbench · math / buffers / UI и нажмите Load script.
Пример использует только собственные синтетические данные: PID и доступ к игре
не требуются. Поиграйте с Radius, Motion mode и Show synthetic point; затем
откройте его Source, чтобы увидеть вызовы новых функций.
Это кандидат первого локального релиза SDK для доверенных AngelScript-пакетов.
Не коммерческий релиз и не готовая поддержка игр. Easy External не изменяется.
SDK версии 0.3; IPC/выдача используют api=0.1; язык — AngelScript, не Lua.
Версия приложения и манифеста выдачи — отдельный номер исправлений.
1. Распаковать и запустить
Откройте постоянный каталог dist/EasyUniversal либо скачайте личный загрузчик
из раздела «Моя подписка» после покупки Easy Universal. Документация на сайте
доступна всем. Комплект обновляется на месте, без нового архива.
Не переносите только EXE: runtime и данные находятся рядом.
Установка дополнительных программ для запуска не нужна. Компиляция скриптов
встроена в клиент. Нужна Windows x64; другие ОС не поддерживаются этой сборкой.
- Обычный запуск:
bin/EasyUniversal.exe. - Один файл открывает клиент без консоли и запускает его скрытые worker-процессы.
- Запуск администратором:
EasyUniversal-Admin.exeв корне комплекта.
Этот файл автоматически вызывает стандартный запрос UAC, если Windows его
требует. Нажмите «Да» только при доверии к комплекту. Отмена не запускает клиент.
Администраторский режим не нужен текущим функциям и не даёт доступ ко всему.
Процессы скриптов наследуют повышенные права клиента. Job Object ограничивает
сбои/время/память, но не заменяет полноценную песочницу. Не запускайте неизвестные
скрипты с повышенными правами. Подписи издателя и установки в автозапуск нет.
Реальный диалог UAC требует подтверждения человеком; автоматические тесты его
не подтверждают. Если Windows блокирует запуск, не отключайте защиту вслепую.
2. Первый пример
- Новая установка открывает пустой каталог scripts. Добавьте свой файл через
Add .as. Для примеров комплекта разработчика откройте каталог examples командой
bin/EasyUniversal.exe client ./examples.
- В каталоге examples выберите Interactive SDK demo. В Details проверьте автора, права и файлы.
- Нажмите Load script. Откроется отдельное собственное окно вывода.
- Кнопка Add one увеличивает счётчик, Show circle переключает круг.
- Stop, закрытие окна вывода или клиента завершают сессию.
Одновременно работает один пакет. Launch всегда ручной. Fingerprint показывает
изменение содержимого, но не доказывает доверие к автору. Ошибочные пакеты и
повторяющиеся IDs нельзя запустить из списка. Refresh обновляет список без запуска.
HTTP demo: прочитайте адрес в Details, нажмите Load script, затем кнопку
GET в preview: указанные GET origins разрешаются автоматически.
Сам пример отправляет запрос после кнопки GET; POST требует отдельного разрешения.
Контракты и ограничения — sdk/HTTP_RU.md.
Synthetic visualization demo показывает боксы, скелеты и подписи трёх
синтетических фигур; можно переключать Labels/Skeleton. Это проверка
визуализации, не VH для CS2: данные игры не читаются.
Заголовок, кнопки окна, вертикальная прокрутка и подтверждение сохранения
оформлены средствами клиента. Длинные строки редактора по-прежнему прокручиваются
по горизонтали при перемещении курсора клавишами; системной горизонтальной
полосы больше нет. UAC Windows остаётся системным диалогом.
3. Редактирование
Выберите пакет → Source. Исходник редактируется внутри клиента.
- Save / Ctrl+S: сохранить файл, без исполнения и проверки компиляцией.
- Save + Reload / Ctrl+Shift+S: сохранить и перезагрузить активный пакет.
- Reload либо F5 в окне вывода: перечитать уже сохранённый файл.
- Reopen: перечитать файл с диска; сначала сохраните или скопируйте правки.
- Go to error: перейти к строке последней ошибки активного исходника.
- Ctrl+F, F3: поиск текста и следующее совпадение с возвратом к началу.
Поиск учитывает регистр. Enter в поле поиска также находит следующее совпадение.
- Ctrl+L: ввести номер строки; Enter / Go line переводит курсор.
Справа указаны строка и колонка курсора. F4 — переход к ошибке.
При несохранённых изменениях клиент спрашивает Save / Discard / Cancel. Если
файл изменён другой программой, сохранение блокируется: сначала скопируйте
свои правки, затем Reopen и объедините изменения самостоятельно. Автоматического
слияния и истории резервных копий нет. Ошибка Reload останавливает пакет;
автоматического отката нет. Редактор подсвечивает AngelScript и показывает
подсказки известных деклараций из API_SCHEMA; семантического автодополнения
и анализа типов пока нет.
4. Добавить собственный пакет
Создайте новую папку непосредственно внутри examples, например my-demo.
В ней нужны два UTF-8 файла. Имя id должно быть уникальным.
package.json:
{
"id": "my-demo",
"name": "My first package",
"author": "Your name",
"version": "0.1.0",
"api": "0.1",
"entry": "main.as",
"permissions": ["render"],
"resources": []
}
main.as:
uint clicks = 0;
void on_frame() {
render::text(24, 24, "Hello from my package", 0xff994dff);
if (ui::button("counter", "Add one", 24, 60, 180, 36)) clicks++;
render::text(24, 116, "Clicks: " + clicks);
}
Нажмите Refresh, выберите новый пакет и Launch. Цвета имеют формат0xRRGGBBAA: последние два символа — прозрачность. Рисование выполняется только
в on_frame. Доступны текст, линии, окружности, label, button, checkbox.
Объявления функций и ограничения — в sdk/API.md и sdk/declarations.as.
Ресурсы нужно перечислять в manifest; произвольного доступа к файлам нет.
5. Сохранение данных пакета
Пакету нужно разрешение storage в manifest, а пользователь должен отдельно
разрешить сохранение перед Launch. Оно по умолчанию выключено. Скрипт используетconfig::get / config::set; строки сохраняются при штатном завершении/Reload
в data/<package-id>/config.json. Аварийное завершение не гарантирует сохранение.
При работающей сессии нельзя незаметно добавить разрешения через Reload.
6. Настройки клиента
Settings: акцент Orange/Green/Blue, счётчики сессии и Target framerate
30–240. Нажатие на значение переключает следующий вариант. Это ограничение
частоты запросов: время скрипта и отрисовки входит в интервал между кадрами.
При задержке следующий кадр запускается без серии догоняющих кадров. Фактическая
частота зависит от нагрузки. CLI stream/preview также принимает --fps 30..240.
Подробнее: sdk/FRAME_TIMING_RU.md. Настройки клиента пока
действуют только до закрытия; хранилище пакета — отдельная возможность.
7. GUI и документация
Из корня распакованного комплекта:
./bin/EasyUniversal.exe client ./examples
Свой каталог передаётся вместо ./examples. В меню выберите пакет, откройте
Details или Source и нажмите Load script. Дополнительный CLI-файл не требуется.
Сведения о протоколе/рендерере/GUI/каталоге/редакторе — в папке sdk.SHA256SUMS.txt перечисляет хэши файлов комплекта. Хэши не являются цифровой
подписью: сравнивайте их только с доверенной копией. Собственные изменения
примеров естественно меняют хэши.
Что ещё не входит в эту поставку
Текущий SDK включает Process toolkit с отдельно разрешаемой записью, ограниченный
Windows-ввод, асинхронный HTTP GET/POST, слайдеры, списки, цветовые helpers,
вкладки, темы и GUI-конфиги. Контракты: PROCESS_API_RU.md, INPUT_RU.md,
HTTP_RU.md и GUI_03_RU.md. Защищённая выдача сайта проверяет активную подписку
или роль администратора;
комплект разработчика и выдаваемая защищённая сборка различаются.
Автоматическая поддержка любой игры, Discord Overlay, cloud-каталог,
полноценный редактор раскладки и гарантированный exclusive fullscreen ещё
не реализованы. Многочасовая эксплуатация и чистая машина требуют проверки.
Базовый драйвер находится отдельно в исходниках driver; его SYS ещё не собран
и он не включён в runtime или загрузку с сайта. Актуальный статус:
sdk/RELEASE_03_STATUS_RU.md и sdk/NEXT_STEPS_RU.md.
Read-only Process API
Добавление одного .as файла
В клиенте нажмите Add .as, выберите UTF-8 файл и проверьте его во вкладке
Source. Нажмите Load script для запуска в отдельном preview. Клиент сам
создаёт пакет и копирует код: исходный файл не меняется. Правки в Source
сохраняются в локальную копию; повторный импорт создаёт новый пакет.
Поддерживаются callbacks Easy API, а не произвольный код чужого runtime.
Импортированный пакет декларирует render/demo/process_read/storage, но
обе выдачи доступа выключены. Для работы с выбранным процессом отдельно
введите PID и включите Read selected process; для config отдельно разрешите
хранение настроек. Импорт не копирует соседние ресурсы и не запускает код.
Ошибки компиляции покажутся при Load script. Не импортируйте неизвестный код.
Разрешение чтения
Для собственного тестового приложения добавьте process_read в permissions
пакета. Выберите пакет в клиенте, нажмите Select... рядом с PID и найдите
приложение по имени или номеру (ручной ввод тоже доступен). Затем отдельно разрешите
чтение кнопкой Read selected process. По умолчанию доступа нет. Не запускайте
недоверенные пакеты: чтение может раскрыть данные выбранного приложения.
В командной строке используется `EasyUniversal.exe run <пакет>
--allow-process <PID>`. Разрешение действует только в этой сессии. API не
пишет память, не переключается на другой процесс и не обходит ограничения
Windows или античита. После завершения приложения запустите новую сессию
с новым явно выбранным PID. Декларации и ограничения находятся в sdk/API.md.
Выбор процесса не открывает его память. Смена PID сбрасывает разрешения чтения
и оверлея; список обновляется при каждом открытии Select. Несколько процессов
с одинаковым именем различаются PID. Для процесса, который завершился, выберите
новый PID: клиент не переключается автоматически на новый экземпляр.
Подробный нейтральный пример и устранение ошибок: sdk/QUICKSTART_RU.md.
War Thunder: собственные приборы
Выберите пакет War Thunder instruments, нажмите
Load script. Запустите тест-драйв в War Thunder. При доступной локальной
телеметрии пакет показывает приборы собственного транспорта в отдельном окне.
PID, чтение памяти и администратор не нужны. Отсутствующие данные показаны --.
Подробности и ограничения — sdk/WAR_THUNDER.md. Проверены офлайн-тесты адаптера,
но работа с реально запущенной игрой пока не подтверждена.
SDK адаптеров
Выберите Adapter SDK demo (synthetic) → Load script: это демонстрация
общего источника и потребителя сущностей, без запущенной игры или доступа к памяти.
Чтобы написать адаптер, скопируйте папку examples/adapter-demo, измените ID
пакета и реализацию source.as. Контракт и пошаговая схема — sdk/ADAPTERS.md.main.as редактируется в Source; дополнительные файлы пока внешним редактором.
После их изменения используйте Refresh/Reopen и явную перезагрузку.
Новый пакет не требует пересборки ядра, если использует существующие функции API.
Произвольная игра не становится поддерживаемой только от записи её имени.
Прокрутка и подсказки (RC13)
В Source код можно прокручивать колёсиком прямо над текстом, а также полосой
справа. Это работает и для Details и списка скриптов. Положение курсора и
выделение при прокрутке не меняются.
Наведите мышь на настройку или кнопку на две секунды: появится небольшая
тёмная подсказка. Например, Allow package settings storage разрешает пакету
сохранять собственные настройки локально; это не доступ к произвольным файлам.
Подсказка не забирает фокус и исчезает при уходе мыши или взаимодействии.
Подключение собственного совместимого драйвера, выбор провайдера и автоматические
разрешения клиента: sdk/CUSTOM_PROVIDERS_RU.md (в SDK — CUSTOM_PROVIDERS_RU.md).