角色铭牌光秃秃只有名字与行会,玩家的江湖态度无处安放;开放自定义文本又怕广告与违规内容。座右铭封装:角色可设置一句 20 字以内的铭牌签名,经长度与词库双闸过滤后展示——个性表达有出口,内容有闸门。
写入双闸。示例代码如下:
local BANNED = { "代练", "广告", "www", "http", "低价" }
local function setMotto(actor, text)
if #text > 60 then
sendmsg(actor, 1, "座右铭限 20 个字以内。")
return
end
for _, w in ipairs(BANNED) do
if string.find(text, w, 1, true) then
sendmsg(actor, 1, "内容包含受限词汇。")
return
end
end
setplayvar(actor, 1, "Motto", text, 1)
sendmsg(actor, 1, "座右铭已更新。")
end
查看展示。示例代码如下:
local function showMotto(actor, targetName)
local target = getplayerbyname(targetName)
if not target then
return
end
local motto = tostring(getplayvar(target, 1, "Motto") or "")
if motto == "" then
motto = "此人江湖路远,不置一言。"
end
sendmsg(actor, 1, targetName .. ":" .. motto)
end
setMotto 两道闸:60 字节长度闸(中文 20 字)与纯文本词库扫描(find 第四参数 true 免魔法字符干扰),双闸都过才 setplayvar 落盘(isSave=1 持久);词库 BANNED 表可活动期热更。showMotto 查看他人铭牌,组队面板与沙巴克报名页同步展示,空座右铭给默认文案——展示永远有内容,不露真空。
座右铭踩过三个坑:一是词库只拦明文,拆字与夹符号的变体绕过扫描,补"剔除符号后再扫一遍"的预处理层;二是内容里混入换行等控制字符把铭牌排版顶乱,写入前只保留可见文本;三是查看接口被脚本高频调用刷他人签名,加 1 秒查看冷却,同一查看者对同一目标 1 秒内只返回一次。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 任务链按 next 映射逐格跳转,怀疑某条链绕回了旧节点。用 visited 表记录走过的节点能判环…
【游戏】 一、业务场景 交易行里有人收了定金就消失,买家吃闷亏还没处查底细。信用分规则上线:每笔成交双方互评,好评加 2 分…
【语法】 一、隐蔽陷阱 运营报表里"截止第 3 关的最高分"显示 40,可那一批数据里确实出过 120。数据没丢,问题出在统…
【游戏】 一、业务场景 玩家反映:花 30 金锭重随一件武器,好不容易出了一条攻击加成,下一轮重随又把它洗没了,连洗 8 次…
【语法】 一、隐蔽陷阱 把 1000 个金币打包成不超过 25 个包裹,单包容量多大才够?从 1 开始逐个容量去试要跑上千次…
【游戏】 一、业务场景 帮会仓库积了 80 万资金,帮众修装备要借钱,之前的写法是谁申请谁直接扣款,一周被冒领 12 万。资…