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

SDK 0.3 / совместимость API

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

Easy Universal SDK 0.3 (API 0.1/0.2 compatible)

GUI 0.3 adds the gui namespace for consent-gated separate GUI state,
plus ui.theme/ui.keybind and optional Tabs/CheckboxGroup/HSV/Theme/BoxLayout/
ScrollPanel helpers. See GUI_03_RU.md and RELEASE_03_STATUS_RU.md. The public schema
remains additive. A separate source namespace exposes local telemetry IPC,
not a remote memory backend. See EXTERNAL_SOURCE_RU.md.

Process API byte reads can explicitly use the Easy driver with the selected PID
and existing process_read/process.scan permission. Settings: Read through driver;
CLI: --allow-process PID --process-backend driver. This retains Windows VM_READ
rights/quotas and fails when the READ-capable driver is absent. Live kernel read
remains unverified; see PROCESS_API_RU.md and driver/VERIFICATION.md.

Manifest api 0.1, 0.2 and 0.3 are accepted. Permissions process.handles_threads,
process.write and process.scan require api 0.2 or newer. Their exact contracts, explicit
PID/write consent, quotas, profiles and diagnostics are in PROCESS_API_RU.md.
IPC/report/delivery api remains 0.1; sdk-schema reports sdk_version 0.3.
SDK 0.3 additionally supports ordinary foreground input with declared permission and a selected GUI PID grant:
input namespace / input permission / --allow-input. See INPUT_RU.md.
Experimental CS2 package and auto-offset boundaries: CS2_TOOLS_RU.md.
source.read/source.write and external_source require manifest api 0.3.

Language: AngelScript. One .as entrypoint per package. The host registers the
standard string type. Optional manifest modules adds up to 8 declared .as
sections to the same compiled module; script includes/imports are not implemented.
RC20 adds process::enumerate_memory_regions(pid) and native memory_region snapshots.
It requires independent process.memory_map permission and explicit consent to the selected PID.
See PROCESS_API_RU.md for region states, types, effective R/W/X and limits.
RC21 adds enumerate_modules(pid, source) (system/peb) and diff_modules(pid),
using process_read and explicit PID consent. Native x64 targets only; details in PROCESS_API_RU.md.
Each file is at most 128 KiB; combined source is at most 256 KiB.
Optional adapter contract and pure geometry helpers are documented in ADAPTERS.md.
RC11 adds vec2/vec3/matrix4, projection helpers, immutable memory_buffer,
four additional typed reads, sliders/cycle selectors and filled primitives.
Full bounds and examples: EXTENSIONS_RU.md. Existing API 0.1 remains compatible.
RC12 adds permission-gated asynchronous-for-script GET requests; exact declared
origins plus explicit session consent, bounded queue/response and poll/release.
See HTTP_RU.md. The namespace http is now reserved by the host SDK.
RC15 adds typed config getters/setters and bounded pure background jobs.
Optional .as helper modules provide dropdown/color/layout/freshness/orientation.
See PLATFORM_RU.md. The namespace jobs is reserved; helpers are NOT registered
automatically and must be declared as package modules.
RC17 adds ui::textbox for bounded single-line text input in the own preview;
see GUI.md and sdk/templates/text-form. Additive API 0.1, no new permissions.
RC18 adds ui::scroll, render::push_clip and render::pop_clip; see SCROLL_RU.md.
The first-final preparation adds bounded http::post with separate http_post
declaration and reviewed network consent; see HTTP_RU.md. Flow menu helpers
automatically wrap rows and support collapsed sections; see FLOW_RU.md.

Manifest example:

{
  "id": "my-demo",
  "name": "My demo",
  "author": "Author",
  "version": "0.1.0",
  "api": "0.1",
  "entry": "main.as",
  "permissions": ["render", "demo"],
  "resources": ["greeting.txt"]
}

Unknown fields, permissions and API versions are rejected. Metadata version
is a bounded string, not yet a validated semantic version. IDs use lowercase
ASCII letters, digits, hyphen and underscore (1–64 characters); Windows device
names are rejected. Paths must be existing package-relative files without
traversal or detected reparse points.

Read-only process access (local development)

War Thunder instruments are a separate permission: wt_telemetry plus explicit
automatic declared WT telemetry on client launch or explicit CLI --allow-wt-telemetry. The fixed loopback-only,
read-only own-vehicle source exposes wt::enabled(), wt::available() and
wt::read_number(endpoint,key,value). No arbitrary network URLs or enemy data
are exposed. See WAR_THUNDER.md for bounds, stale-data handling and setup.

Declare process_read in the manifest. Access is denied by default: the host
must separately grant one explicit PID using --allow-process PID, or its
PID field and read-access checkbox. Use only processes you are authorized to
inspect. Windows access restrictions still apply; this API does not bypass
protected processes or anti-cheat protections. Administrator rights are not
a guarantee of access.

The grant is bound to a process handle for the session, including reloads.
Scripts cannot open another process, change the PID or elevate privileges.
SDK 0.2 optionally allows writes with a separate permission and explicit write
consent; read-only grants alone never enable writes. A terminated target is not
automatically reattached.

bool process::attached();
bool process::alive();
uint process::pid();
string process::name();
uint64 process::module_base(const string &in name);
string process::last_error();
bool process::read_u32(uint64 address, uint &out value);
bool process::read_u64(uint64 address, uint64 &out value);
bool process::read_float(uint64 address, float &out value);
bool process::read_bytes(uint64 address, uint count, string &out bytes);

attached() can be queried without a grant. Other functions require both
manifest permission and host consent. Failed reads clear their output; byte
reads are all-or-nothing. Each read is limited to 64 KiB. Each callback has a
budget of 256 read/module operations and 1 MiB of requested bytes. This is a
trusted-local scripting runtime, not a security sandbox for hostile scripts.

Callback declarations

void on_load();
void on_frame();
void on_event(const string &in event);
void on_timer(uint tick);
void on_unload();

All callbacks execute sequentially in the worker. In the batch demo,
demo.ready is delivered on the first frame, then timers every three frames.
Reload preserves the outer frame index and does not replay demo.ready.
In stream, host snapshot events are delivered before the frame callback.
screen, demo and time read the current host snapshot instead of fixed
fixture values. Timer ticks remain every three frames (not real-time timers).

Functions

NamespaceFunctionsPermission / phase
runtime`log(string)`Any callback; bounded output
screen`width()`, `height()`Fixed demo dimensions
time`seconds()`, `delta()`Fixed demo clock
demo`x()`, `y()``demo`
render`text(x,y,string,color)`, `line(x,y,x2,y2,color,thickness)`, `circle(x,y,radius,color)``render`, only `on_frame`
ui`label(string)`, `button(id,label,x,y,w,h)`, `checkbox(id,label,value,x,y,w,h)``render`, only `on_frame`; see GUI.md
resources`text(relativePath)`Resource must be declared
config`get(key,fallback)`, `set(key,value)``storage` + host `--allow-storage`
json`valid(source)`, `get_string(source,key,fallback)`Bounded JSON input

The fixed demo values in the table refer to run; streaming supplies current
viewport, coordinates and clock. The first streaming delta is the first
timestamp relative to session zero; later deltas are differences between
snapshots. See STREAM.md for the wire contract. preview supplies actual
logical client dimensions and draws the commands described in RENDERER.md.

Graphics colors are 0xRRGGBBAA integers. Default white is 0xffffffff.
Line thickness defaults to 1 (allowed 0.5–8), circle radius 0.5–2048;
coordinates must be finite and within ±100000. Text is limited to 512 bytes.
Config supports at most 64 string values, each up to 1024 bytes. Keys use the
same ID restrictions. Missing config/JSON string fields return the supplied
fallback (default empty string). See declarations.as for editor reference.

Подключение собственного совместимого драйвера, выбор провайдера и автоматические
разрешения клиента: sdk/CUSTOM_PROVIDERS_RU.md (в SDK — CUSTOM_PROVIDERS_RU.md).

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