世界BOSS争夺战系统设计文档
系统概述
本系统实现了三个主要活动模块:
- 世界BOSS争夺战 - 每周日晚8点开启,玩家争夺BOSS掉落物品
- 攻城战 - 开服2周后开启,战盟争夺城堡控制权
- 怪物军团 - 每周三、周五晚上7点开启,抵御怪物入侵
系统架构
模块结构
ActivityManager.lua # 活动管理器(主控制器)
├── WorldBoss.lua # 世界BOSS争夺战系统
├── WorldBossAuction.lua # 世界BOSS拍卖系统
├── SiegeWar.lua # 攻城战系统
└── MonsterLegion.lua # 怪物军团系统
数据持久化
系统使用Lua内置的持久化API:
setsysvar() / getsysvar() - 系统级全局变量
setplaydef() / getplaydef() - 玩家级变量
setguilddef() / getguilddef() - 战盟级变量
世界BOSS争夺战系统
活动流程
报名阶段(30分钟)
- 玩家个人报名
- 最少50人报名才开启战斗
- 强制战盟模式
战斗阶段(60分钟)
- 所有报名玩家进入战场
- PK不红名,死亡可钻石复活
- 按个人和战盟统计伤害
拍卖阶段(30分钟)
- 所有参与战斗的玩家可参与
- 装备起拍价300钻石
- 彩云兽起拍价500钻石
- 一代坐骑/宠物起拍价2000钻石
- 项链起拍价10000钻石
BOSS配置
炽焰魔
- 血量:基础血量 × 2.0
- 伤害:基础伤害 × 0.5
- 必定掉落:
- 卓越装备2件(3-4属性)
- 卓越套装1件(3-4属性)
- 概率掉落:
- 彩云兽(10%)
- 卓越项链(30%,2-3属性,必带卓越一击)
咒怨魔王
- 血量:基础血量 × 2.5
- 伤害:基础伤害 × 0.4
- 必定掉落:
- 卓越装备2件(3-4属性)
- 卓越套装2件(3-4属性)
- 概率掉落:
- 1代坐骑(15%)
- 1代宠物(15%)
- 卓越项链(40%,2-3属性,必带卓越一击)
拍卖收益分配
战盟分配(按总伤害排名)
战盟内玩家分配(按BOSS伤害排名)
- 第1名:30%
- 第2名:25%
- 第3名:20%
- 第4名:10%
- 第5名:5%
- 剩余:平均分配
攻城战系统
活动流程
准备阶段(30分钟)
攻击阶段(60分钟)
防守阶段(30分钟)
城堡配置
- 最大血量:1,000,000
- 占领阈值:剩余血量10%
- 奖励倍数:获胜战盟2.0倍
怪物军团系统
活动流程
准备阶段(15分钟)
入侵阶段(5波怪物)
- 第1波:小怪入侵(50只,100级)
- 第2波:精英怪(30只,150级)
- 第3波:混合部队(40只,200级)
- 第4波:强力精英(25只,250级)
- 第5波:军团BOSS(1只,300级)
奖励系统
- 基础分数:100分
- 击杀倍数:10倍
- BOSS击杀奖励:1000分
- 波次完成奖励:500分
- 战盟加成:1.2倍
技术特性
数据持久化
- 所有活动数据自动保存到数据库
- 服务器重启后数据不丢失
- 支持系统级、玩家级、战盟级数据存储
定时器系统
- 自动检查活动状态
- 自动切换活动阶段
- 自动结束和清理活动
错误处理
- 使用pcall保护关键函数调用
- 详细的错误日志记录
- 优雅的异常恢复机制
模块化设计
- 每个活动系统独立运行
- 统一的接口规范
- 易于扩展和维护
使用方法
初始化系统
local ActivityManager = require("ActivityManager")
ActivityManager.Init()
获取活动信息
local activities = ActivityManager.GetAllActivitiesInfo()
for _, activity in ipairs(activities) do
print(activity.name, activity.status, activity.timeRemaining)
end
玩家参与活动
local success, message = ActivityManager.PlayerJoinActivity(actor, 1) -- 1=世界BOSS
if success then
print("报名成功")
else
print("报名失败:", message)
end
获取排行榜
local playerRanking = ActivityManager.GetActivityRanking(1, "player") -- 世界BOSS玩家排名
local allianceRanking = ActivityManager.GetActivityRanking(1, "alliance") -- 世界BOSS战盟排名
配置说明
时间配置
- 世界BOSS:每周日晚8点
- 攻城战:开服2周后,每周六晚8点
- 怪物军团:每周三、周五晚上7点
人数限制
- 世界BOSS:最少50人报名
- 攻城战:无人数限制
- 怪物军团:最少20人报名
奖励配置
- 拍卖手续费:20%
- 战盟分配比例:50%、30%、20%
- 玩家分配比例:30%、25%、20%、10%、5%
扩展建议
新增活动类型
- 在
ActivityManager.lua中添加新的活动类型
- 创建对应的活动模块
- 实现统一的接口函数
自定义配置
- 修改各模块中的配置常量
- 支持从配置文件读取
- 支持运行时动态调整
客户端集成
- 实现客户端通知接口
- 添加UI界面支持
- 实现实时数据同步
注意事项
- 数据一致性:确保所有数据操作都使用持久化API
- 性能优化:避免频繁的数据库操作,合理使用缓存
- 错误处理:所有关键操作都要有错误处理机制
- 日志记录:重要事件要记录详细日志
- 测试验证:在测试环境充分验证后再部署到生产环境
版本历史
- v1.0.0 - 初始版本,包含三个主要活动系统
- 支持完整的数据持久化
- 模块化设计,易于维护和扩展
- 完整的错误处理和日志记录