Skip to content

受控写入与 Effect

写 API 需要明确权限和 managed 回调阶段,并检查 Handle、会话、有限数值和值域。

玩家与载具写入

game.player.writegame.vehicle.write 可修改受支持的生命值、护甲、位置和速度:

lua
samp.events.on("player.spawned", function()
    local player = samp.player.local_player()
    if player == nil or not player:is_valid() then
        return
    end

    player:set_health(100)
    player:set_armor(100)
end)

服务器拥有的状态可能被后续同步覆盖,客户端写入不代表获得服务器权限。

Effect 租约

Effect 是可恢复的宿主管理覆盖。多个插件可以通过优先级申请字段;释放或卸载某个租约后,会恢复剩余请求合并后的状态。

lua
local flags

samp.events.on("player.spawned", function()
    flags = samp.effects.acquire(
        "player.physics_flags",
        {
            onSolidSurface = true,
            isStanding = true,
            priority = 50
        }
    )
end)

samp.events.on("session.ended", function()
    if flags ~= nil then
        flags:release()
        flags = nil
    end
end)

game.physics.override 是高风险权限。只申请必要字段,及时释放,并测试卸载、死亡、重连与会话结束。已经释放或失效的 Surface、Effect 和 Handle 都不能复用。