Entities
Varion exposes server-authoritative players и world entities через SDK. Сервер создает и владеет network entities; client scripts получают streamed snapshots и могут выполнять local visual/native operations там, где это разрешено.
Server entity types
| Type | Server creation/API |
|---|---|
| Player | Created by connection pipeline; exposed as IPlayer |
| Vehicle | varion.CreateVehicle, varion.CreateVehicleEntity |
| Ped | varion.CreatePed, varion.CreatePedEntity |
| Object | varion.CreateObject, varion.CreateObjectEntity |
| Virtual entity | varion.CreateVirtualEntityGroup, varion.CreateVirtualEntity |
| Colshape | varion.CreateColShapeSphere, Box, Cylinder, Circle, Rectangle, Polygon |
| Checkpoint | varion.CreateCheckpoint |
| Blip | varion.CreateBlip, CreateBlipRadius, CreateBlipArea |
| Marker | varion.CreateMarker |
| Text label | varion.CreateTextLabel |
| Voice channel | varion.CreateVoiceChannel |
C# player surface
IPlayer включает connection data, lifecycle, health, armor, model, appearance, weapons, vehicle seat control, events, date/time, weather, streaming checks и data/meta storage.
player.Spawn(new Vector3(215.76f, -810.12f, 30.73f));
player.Kick("reason");
player.GiveWeapon(0x1B06D571, 100, true);
player.Emit("hud:show", true);
player.SetWeather(WeatherType.Clear);Server world creation
var vehicle = varion.CreateVehicleEntity(
"adder",
new Vector3(220, -805, 30),
new Vector3(0, 0, 0));
var label = varion.CreateTextLabel(
"Garage",
new Vector3(220, -805, 31),
scale: 1.0f);Server JS (JavaScript)
В серверном JS-ресурсе varion.createVehicle, varion.createPed и varion.createObject асинхронны и возвращают Promise: сетевой id выделяет сервер, поэтому дождитесь Promise, чтобы получить proxy сущности.
const car = await varion.createVehicle(varion.hash('adder'),
{ x: 220, y: -805, z: 30 });
car.setStreamSyncedMeta('plate', 'VARION');Полный серверный JS API (сущности, world-визуалы, colshapes, voice, metadata, таймеры) — Server JavaScript API.
Virtual entities
Virtual entities — server-side objects без GTA handle. Они stream по group distance и могут иметь synced или stream-synced metadata.
var group = varion.CreateVirtualEntityGroup(400, 128);
var marker = varion.CreateVirtualEntity(new Vector3(100, 100, 30), group.Id);
marker.SetStreamSyncedMetaData("label", "pickup");Client entity snapshots
const local = varion.Player.local;
const players = varion.Player.all;
const streamedVehicles = varion.Vehicle.streamedIn;
const entity = varion.Entity.getByScriptID(scriptId);Client entity wrappers expose IDs, script IDs, model data, position/rotation snapshots, validity и local helper methods. Remote player transforms остаются server-authoritative.
Source backing
Страница основана на sdk/Varion.SDK/varion.cs, sdk/Varion.SDK/IPlayer.cs, sdk/Varion.SDK/Vehicle.cs, sdk/Varion.SDK/ServerEntity.cs, sdk/Varion.SDK/VirtualEntity.cs, sdk/server-js-host/varion-entities.cjs и sdk/client-js-runtime/injected/entities-bootstrap.js.