存储、定时器与任务
私有存储
声明 plugin.storage 后,可以保存有界的布尔、数字和字符串:
lua
local enabled = samp.storage.get("enabled", true)
samp.storage.set("enabled", not enabled)
samp.storage.remove("obsolete_key")写入是原子的,但仍然涉及 I/O,不应每帧写入。
定时器与任务
samp.timer.after(milliseconds, callback) 创建一次性受保护回调。samp.task.spawn() 创建受控 Lua 任务,只有 samp.task.sleep() 可以使它 yield;零延迟也至少让出到下一帧。
lua
local launches = samp.storage.get("launches", 0) + 1
samp.storage.set("launches", launches)
samp.timer.after(1000, function()
samp.log.info("one second elapsed")
end)
local task = samp.task.spawn(function()
samp.task.sleep(500)
samp.log.info("task resumed")
end)
-- Safe even when the task has already completed.
-- task:cancel()插件卸载或会话结束会取消任务。每次恢复仍受普通回调相同的指令与时间预算保护。