Локальный игрок и транспорт
Vector3 = { x = number, y = number, z = number }Методы Handle вызываются через двоеточие. Handle нельзя сохранять после смерти, респавна, отключения или смены сессии.
samp.player.local_player()
Требует game.player.read. Возвращает nil, если игрок недоступен, иначе Player Handle с полями type="player", poolId, generation, sessionId.
| Метод | Разрешение | Результат / диапазон |
|---|---|---|
player:is_valid() | game.player.read | boolean, безопасен для устаревшего Handle. |
player:position() | game.player.read | Vector3. |
player:health() | game.player.read | number. |
player:armor() | game.player.read | number. |
player:velocity() | game.player.read | Vector3. |
player:vehicle() | game.vehicle.read | Vehicle Handle или nil. |
player:set_health(value) | game.player.write | Конечное 0..1000. |
player:set_armor(value) | game.player.write | Конечное 0..1000. |
player:set_position(vector) | game.player.write | Компоненты -100000..100000. |
player:set_velocity(vector) | game.player.write | Компоненты -1000..1000. |
Методы записи ничего не возвращают и разрешены только в управляемом callback: событии, таймере, задаче или callback меню. Они запрещены при вычислении entry. draw.hud является управляемым событием, но запись игрового состояния в этом горячем callback настоятельно не рекомендуется. Все методы, кроме is_valid(), дают ошибку для устаревшего Handle.
Vehicle Handle
player:vehicle() представляет только текущую машину локального игрока. Поля: type="vehicle", poolId, generation, sessionId. Handle устаревает при выходе/смене транспорта или поколения игрока.
| Метод | Разрешение | Результат / диапазон |
|---|---|---|
vehicle:is_valid() | game.vehicle.read | boolean. |
vehicle:position() | game.vehicle.read | Vector3. |
vehicle:health() | game.vehicle.read | number. |
vehicle:velocity() | game.vehicle.read | Vector3. |
vehicle:set_health(value) | game.vehicle.write | Конечное 0..10000. |
vehicle:set_position(vector) | game.vehicle.write | Компоненты -100000..100000. |
vehicle:set_velocity(vector) | game.vehicle.write | Компоненты -1000..1000. |
Снимки API 1.1
Player Handle добавляет read-only snapshots:
| Метод | Результат |
|---|---|
player:weapon() | { id, ammo, clipAmmo, state }; state: ready, firing, reloading, out_of_ammo или melee_contact. |
player:aim() | { active, cameraMode, direction, position, aimZ, zoom }, либо nil без конечного снимка прицеливания. |
player:motion() | { activity, moveState, onGround, inAir, aiming, firing }. |
player:skin() | Текущий ID модели. |
player:animation() | Код текущей синхронизируемой анимации; 0 означает отсутствие. |
player:task() | { category, nativeType, nativeName, type, name }; category: none, driving, combat, movement, animation, interaction, other. |
Изменения сообщаются соответствующими событиями.
player:set_skin(id), player:set_weapon(id, ammo) и player:set_ammo(id, ammo) требуют game.player.write и разрешены только в управляемом callback. Это одноразовые локальные операции, которые сервер или respawn может перезаписать.
Vehicle Handle добавляет vehicle:state(), vehicle:seat() и vehicle:occupants() с разрешением game.vehicle.read; occupants сообщает только количество и вместимость, а не объекты пассажиров.
vehicle:state() возвращает { model, heading, engineOn, lightsOn, sirenOn }; heading равен nil, если нет конечного значения. vehicle:seat() возвращает 0 для водителя, 1..n для пассажиров или nil, если игрок уже вышел. vehicle:occupants() возвращает { driver, passengers, capacity, total } и не раскрывает другие объекты игроков.