名片是玩家的社交卡片:展示角色信息、自定义签名、成就展示与联系方式。名片的自定义字段让玩家表达个性,系统字段的自动填充让信息的准确有保障。名片的设计要点是自定义与系统的边界划分——哪些让玩家自由填写、哪些由系统自动同步。
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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…