头像框是社交展示的入门级外观商品:一张贴图的成本撑起一个付费品类,成就赠送、活动兑换、商城购买三条获取渠道。头像框的展示覆盖聊天、好友、排行三处界面,佩戴的一致性由系统统一管理。
local FRAME_SOURCES = {
{ id = 1, name = "初心者之框", source = "achievement", cond = "reach_lv_10" },
{ id = 2, name = "沙城荣框", source = "siege_win", cond = "win_siege" },
{ id = 3, name = "周年庆框", source = "shop", price = 6 },
}
function Frame.obtain(actor, frameId)
local def = FRAME_SOURCES[frameId]
if not def then return false end
if def.source == "achievement" and not Achievement.done(actor, def.cond) then
return false, "成就条件未达成"
end
if def.source == "shop" then
if not actor:TakeVoucher(def.price) then return false, "点券不足" end
end
setplayvar(actor, "HUMAN", "owned_frame_" .. frameId, 1, 1)
sendmsg(actor, 1, "获得头像框:" .. def.name)
return true
end
框体的获取分成就与购买两条线:成就框不可购买、购买框不可通过成就获得,两条获取线互不干涉。框体的图鉴页面展示全部框体与获取方式,收集的目标可视化。
function Frame.equip(actor, frameId)
if not getplayvar(actor, "HUMAN", "owned_frame_" .. frameId) then
return false, "未拥有该头像框"
end
setplayvar(actor, "HUMAN", "frame_id", frameId, 1)
sendluamsg(actor, 7501, frameId, 0, 0, FRAME_RES[frameId])
return true
end
佩戴写进持久变量并推送前端更新,聊天、好友、排行三处同步刷新。框体的贴图路径按 ID 格式化,新增框体只加贴图与配置。头像框的品质框以金色与银色区分,品质的视觉语言与装备一致。
框体的佩戴率与获取率的比值监控,佩戴率低的框体检查获取难度是否过高。
框体的展示曾经在三处界面使用了不同尺寸的贴图,低分辨率下模糊,统一使用高清贴图的缩放版本修复。框体的佩戴曾经与 VIP 徽章的展示位置冲突,两者的 Z 轴层级错开配置解决重叠。
框体的上架节奏与节日绑定,春节框、周年框的限时限量让框体有收藏价值。框体的价格带从 6 元到 30 元分五档,低价档走量、高价档做稀缺。框体的展示位与 VIP 徽章的优先级约定:荣誉类框体的展示优先级高于付费类徽章。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 跨服开放后,各服的世界频道各自为政,热门话题被服务器墙分隔。话题聚合方案:带话题标签的消息汇聚到跨服频道…
实战应用:用在哪里 运营要的是“这周谁打了副本、谁在挂机、谁在交易”,不是每天几万条的原始行为流。周报摘要方案:行为流水按玩…
实战应用:用在哪里 战斗中打字报点来不及,快捷短语轮盘让玩家按住轮盘键滑向常用语松手即发:集合、撤退、求奶、集火左,八条槽位…
实战应用:用在哪里 部分玩家用手柄玩传奇,键位习惯各不相同。按键映射方案:手柄的摇杆、十字键、肩键映射到游戏动作,映射表玩家…
实战应用:用在哪里 模块级的计数器、限流器都面临一个问题:状态存全局容易被别的代码改坏。闭包把状态封在函数的作用域里,外部只…
实战应用:用在哪里 师门任务的日常共同任务做成师徒双人副本:师父带徒弟进入专属关卡,关卡机制要求两人配合——师父扛伤开门、徒…