CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
引擎触发

【引擎触发】成就系统:成就点数与成就勋章的引擎实现

2026-09-21 11:15 作者:996 技术组 0 阅读 引擎触发

实战应用:用在哪里

成就系统是玩家荣耀的档案馆:击杀成就、收集成就、社交成就、探索成就四大类几十项,每项成就给成就点数,点数兑换成就勋章。成就的实现要点是成就的触发监听、点数的累计与勋章的兑换体系。

成就触发监听

lua

local ACHIEVEMENTS = {
    kill_1000 = { name = "千军斩", cond = { type = "kill", target = 1000 }, points = 10 },
    rich_man = { name = "富甲一方", cond = { type = "gold", target = 10000000 }, points = 15 },
    couple = { name = "神仙眷侣", cond = { type = "marry" }, points = 20 },
}
function QF.AchieveCheck(plr, eventType, value)
    for id, ach in pairs(ACHIEVEMENTS) do
        if ach.cond.type == eventType and not plr:HasAchievement(id) then
            local progress = plr:AchieveProgress(id, value)
            if progress >= ach.cond.target then
                plr:GrantAchievement(id)
                plr.achievePoints = (plr.achievePoints or 0) + ach.points
                QF_SendMsg(plr, "成就达成【" .. ach.name .. "】+" .. ach.points .. " 点")
            end
        end
    end
end

成就的条件由事件类型与目标值定义:击杀类听击杀事件、财富类听金币事件、社交类听婚姻事件。达成即发放点数并通知,成就的达成瞬间是玩家的高光时刻,通知的弹窗仪式感必须有。

勋章兑换

lua

function QF.MedalExchange(plr, medalId)
    local medal = MEDALS[medalId]
    if (plr.achievePoints or 0) < medal.cost then
        return false, "成就点数不足"
    end
    plr.achievePoints = plr.achievePoints - medal.cost
    plr:EquipMedal(medalId)
    QF_Broadcast(plr.name .. " 佩戴了成就勋章【" .. medal.name .. "】")
    return true
end

成就勋章用点数兑换佩戴:铜勋章 50 点、银勋章 150 点、金勋章 400 点,勋章佩戴在名片上展示,点数的消费出口让成就的收集有终极目标。成就的分类页签与进度条让玩家随时知道自己离下一个成就有多远,收集进度的可视化是成就系统的发动机。稀有成就(首个满级、首杀 BOSS)的全服播报让成就的稀缺被看见。

验证与监控

成就的达成率分布统计,全员达成的成就缺乏区分度,达成率低于百分之一的成就检查是否门槛过高。

踩坑记录

成就监听的事件曾经轮询全表,每帧遍历几十个成就的性能开销在低端机可见,事件订阅制改造让成就只听相关事件。成就点数的兑换曾经支持倒扣,点数不够可以负数兑换的漏洞被滥用,兑换的前置校验与数值下限校验补上。

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

前端接口任务手册

【前端接口】主线任务回顾手册:重点回顾的界面实现

实战应用:用在哪里 三个月的主线剧情跨度太长,老玩家回坑记不住剧情走向。回顾手册把每个章节的关键节点做成时间线卡片:章节名、…

2026-09-22 17:15 996 技术组 · 0 阅读
网络通信热更差分

【网络通信】差分包分发:热更差分的下发设计

实战应用:用在哪里 每次全量更新包两百兆,玩家在流量下望而却步。差分分发只下发新旧版本的差异块:一兆的全量更新压成八十兆差分…

2026-09-22 17:15 996 技术组 · 0 阅读
运维发布灰度指标

【运维发布】灰度观察指标清单:新玩法的观察期指标设计

实战应用:用在哪里 新玩法灰度上线后“观察一下”是最模糊的指令。观察指标清单把观察期变成可执行的检查表:参与率、异常率、资源…

2026-09-22 17:15 996 技术组 · 0 阅读
案例复盘义卖审计

【案例复盘】流拍义卖审计:公益金流向的核查复盘

实战应用:用在哪里 行会义卖活动把流拍装备低价义卖,宣称收益全捐新手基金,活动结束后玩家质疑“钱去哪了”。复盘把公益金流向做…

2026-09-22 17:15 996 技术组 · 0 阅读
界面UI技能试算

【界面UI】技能升级试算面板:模拟试算的界面实现

实战应用:用在哪里 技能升级要消耗技能书与金币,升完才发现收益不如预期是常见的挫败。试算面板在升级前模拟展示升级后的属性变化…

2026-09-22 17:15 996 技术组 · 0 阅读
引擎触发道士群体治疗

【引擎触发】道士群体治疗:治疗量衰减的触发结算设计

实战应用:用在哪里 道士的群体治疗一次奶全队,无衰减的群体治疗会让治疗量溢出成无敌盾。治疗量衰减机制:每多一名目标,单体治疗…

2026-09-22 17:15 996 技术组 · 0 阅读