名片是玩家的社交卡片:展示角色信息、自定义签名、成就展示与联系方式。名片的自定义字段让玩家表达个性,系统字段的自动填充让信息的准确有保障。名片的设计要点是自定义与系统的边界划分——哪些让玩家自由填写、哪些由系统自动同步。
function ProfileCard.get(actor)
local card = {
name = actor:GetName(),
level = actor:GetLevel(),
job = actor:GetJob(),
guild = getmyguild(actor) or "无行会",
signature = getplayvar(actor, "HUMAN", "card_sign") or "这个玩家很懒",
achievements = Achievement.top(actor, 3),
frameId = getplayvar(actor, "HUMAN", "frame_id") or 0,
}
return card
end
名片的数据分两段:系统自动填充的字段(名字、等级、职业、行会)与玩家自定义的字段(签名、头像框、展示成就)。系统字段的实时性由引擎保证,自定义字段的修改走独立的编辑入口。
function ProfileCard.setSignature(actor, text)
if #text > 30 then return false, "签名限 30 字" end
if ChatFilter.check(text) then return false, "签名含违规内容" end
setplayvar(actor, "HUMAN", "card_sign", text, 1)
return true
end
签名限 30 字,敏感词过滤与聊天同源。签名的修改频率不限但每次修改进日志,频繁修改签名(一天超过 5 次)进风控观察。名片的展示入口:点击玩家头像弹出名片浮窗,名片的内容按分区块排列。成就的展示选玩家自行勾选的三项,成就的挑选是自我表达的方式。
名片的查看频次与签名的修改频率统计,查看率高的名片设计元素是优化的参考。
签名的 XSS 注入曾经让名片浮窗执行了恶意脚本,文本的 HTML 转义在展示前统一处理。名片的成就展示曾经硬编码了成就 ID,成就系统重构后 ID 变化导致展示空白,成就的读取改为动态查询。
名片的编辑入口从好友列表与聊天头像两处可达,入口的便利性影响自定义的使用率。签名的字数限制与敏感词的规则与聊天同步,社交内容的规范全站统一。名片的缓存按玩家隔离,查看他人的名片不发额外的查询请求。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 单抽与十连卖的是一个奖池,买的是两种心情:单抽是概率的刺激,十连是确定的体面。数值设计要回答三问:十连的保底值多少…
设计初衷 裁决之杖能走三条养成线:强化加攻击、精炼加防御、铭刻加特殊词条。玩家资源有限,三线齐开的结果是每条都浅、战力密度稀…
底层原理 缓存的两难:无上限则内存失控,弱引用交给 GC 又没有容量语义(上轮弱表方案的短板正是无法承诺"最多占多少")。L…
底层原理 固定周期刷新(祖玛教主每 14400 秒一只)有个致命副作用:全程可预测。蹲点脚本掐着表守在刷新点,普通人永远抢不…
设计初衷 挂机与副本的产出没有天花板时,肝帝一天刷出普通人一周的产能,经济投放失控、玩家差距撕开。疲劳值的立场不是禁止而是衰…
业务场景 活动发"沙巴克功勋"称号,7 天有效。散装写法只发不收,到期后称号属性一直挂着,白嫖队列越排越长;补收又靠每日扫描…