【游戏】
一、业务场景:称号条件(金币存量达 10 万)达成后要找 NPC 手动领取,玩家经常忘记;条件检测器——达标即自动授予并全服播报,漏领归零。
二、实现方案:
错误写法。示例代码如下:
local function onTick(actor)
-- 条件达成了也没人管,称号永远领不到
end
正确写法。示例代码如下:
local RULES = {
{title = "富豪", key = "GOLD", need = 100000},
{title = "屠龙者", key = "KILL_BOSS", need = 50},
}
local function checkTitles(actor)
for _, r in ipairs(RULES) do
if (tonumber(getplayvar(actor, r.key)) or 0) >= r.need
and getplayvar(actor, "T_" .. r.title) ~= 1 then
setplayvar(actor, "T_" .. r.title, 1)
sendcentermsg(getplayvar(actor, "NAME")
.. " 获得称号[" .. r.title .. "]")
end
end
end
三、边界处理:T_前缀标记防重复授予,条件数值回退不回收已发称号。
四、引擎验证:金币冲上 10 万触发富豪称号 1 次并播报,重复检测 0 重发;50 个屠龙达标全授予。
五、FAQ:问:称号会被回收吗?答:已授予不回收,条件回退只影响未发放的新称号。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、规则机制 隐蔽的坑:折叠列表收起分组时只把子项 setVisible(false),占位还留在原地,列表下半截…
【语法】 一、机制原理 一行代码拆解:a, b = b, a % b。最大公约数的辗转相除法:两数相除取余数,余数再与除数继…
【游戏】 一、规则机制 线上事故:聊天里 @ 了某人,消息混在普通流水里,对方根本没注意,集合迟到的锅全甩给没提醒。点名提醒…
【游戏】 一、规则机制 一行定骨架:text = LANG[cur][key] or LANG.zh[key]。多语言文案的…
【语法】 一、机制原理 抛个坑:模板"$(name),您的$(item)已到账"这种带命名槽位的文案怎么填值?string.…
【游戏】 一、规则机制 抛个坑:横屏竖屏一切界面,控件坐标全按竖屏摆,一旋转错位满屏——适配该怎么做?两条策略配合:界面元素…