Skip to content

Эффекты и физика ​

Эффекты — обратимые leases, связанные с плагином, сессией и поколением игрока. Создание, изменение и освобождение доступны только в управляемом callback. Ресурсы инвалидируются при выгрузке, очистке после ошибки, отключении, смерти или респавне.

samp.effects.acquire(name, options) ​

Возвращает Effect Handle с идемпотентным release(). Необязательный priority — целое -1000..1000, по умолчанию 0; максимум 64 эффекта на плагин.

Для "player.physics_flags" требуется game.physics.override и хотя бы один boolean-флаг: usesCollision, collidable, disableCollisionForce, applyGravity, onSolidSurface, isStanding, wasStanding. Каждый флаг разрешается отдельно: больший priority побеждает, при равенстве — более ранний lease.

Для "player.collision_filter" поддерживается:

lua
local lease = samp.effects.acquire("player.collision_filter", {
    priority = 0,
    mode = "only_surface",
    surface = surface
})

Surface должен быть действующим и принадлежать тому же плагину.

Группы ​

samp.effects.group(handles) принимает 1–64 действующих уникальных Effect Handle плагина и возвращает { release }. Групповой release идемпотентно освобождает все элементы.

Local Surface ​

samp.physics.create_surface({ position = Vector3 }) требует game.physics.override и доступного игрока. x/y находятся в -2500..2500, z — в -100000..100000; максимум 16 поверхностей на плагин.

МетодФазаРезультат
surface:is_valid()любаяboolean.
surface:set_position(vector)managedТе же пределы, без результата.
surface:release()managedИдемпотентный, без результата.

Не сохраняйте Handle; создавайте ресурсы заново после player.spawned.

Следование камерой ​

samp.effects.acquire("camera.follow", options) требует высокорисковое game.camera.control и game.entity.read для текущего удалённого игрока. target — актуальный Entity Handle; аренда создаётся только в управляемом callback, таймере или задаче. При выгрузке, смене поколения/сессии, выходе цели из stream или сбросе камеры аренда освобождается автоматически.