Skip to content

受控写入与 Effect ​

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

玩家与载具写入 ​

game.player.write 和 game.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 都不能复用。

API 1.1 还提供高风险的 camera.follow Effect。它只接受当前流送的远程玩家 Handle,并绑定会话和流送世代;目标或会话失效时会自动释放。