Эффекты и физика
Эффекты — обратимые 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" поддерживается:
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.