EasyUniversal / DocsДокументация · SDK 0.3Подписка Universal ↗
Easy Universal / Начало работы

Установка и запуск

AngelScript · native runtime · локальная сборка

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. Первый пример

  1. Новая установка открывает пустой каталог scripts. Добавьте свой файл через

Add .as. Для примеров комплекта разработчика откройте каталог examples командой
bin/EasyUniversal.exe client ./examples.

  1. В каталоге examples выберите Interactive SDK demo. В Details проверьте автора, права и файлы.
  2. Нажмите Load script. Откроется отдельное собственное окно вывода.
  3. Кнопка Add one увеличивает счётчик, Show circle переключает круг.
  4. 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).

Easy Universal — отдельный проект. Easy External не изменён.