名片是玩家的社交卡片:展示角色信息、自定义签名、成就展示与联系方式。名片的自定义字段让玩家表达个性,系统字段的自动填充让信息的准确有保障。名片的设计要点是自定义与系统的边界划分——哪些让玩家自由填写、哪些由系统自动同步。
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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…
实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…
实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…
实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…
实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…
实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…