-- 世界BOSS争夺战系统 local this = {} WorldBoss = this -- 系统常量 WorldBossDefine = { STATUS = { NOT_STARTED = 0, -- 未开始 REGISTERING = 1, -- 报名中 FIGHTING = 2, -- 战斗中 FINISHED = 3, -- 已结束 AUCTION = 4 -- 拍卖中 }, BOSS_TYPE = { CHIYAN_MO = 1, -- 炽焰魔 ZHOUYUAN_MOWANG = 2 -- 咒怨魔王 }, ACTIVITY_CONFIG = { MIN_PLAYERS = 50, -- 最少报名人数 REGISTER_DURATION = 30, -- 报名持续时间(分钟) FIGHT_DURATION = 60, -- 战斗持续时间(分钟) AUCTION_DURATION = 30, -- 拍卖持续时间(分钟) WEEKLY_DAY = 7, -- 每周几开启(7=周日) WEEKLY_HOUR = 20, -- 每周几点开启(20=晚上8点) WEEKLY_MINUTE = 0 -- 每周几分开启 }, DB_KEYS = { ACTIVITY_STATUS = "G$WorldBoss_ActivityStatus", CURRENT_BOSS = "G$WorldBoss_CurrentBoss", ACTIVITY_START_TIME = "G$WorldBoss_ActivityStartTime", REGISTERED_PLAYERS = "G$WorldBoss_RegisteredPlayers", BOSS_HP = "G$WorldBoss_BossHP", BOSS_MAX_HP = "G$WorldBoss_BossMaxHP", PLAYER_DAMAGE = "G$WorldBoss_PlayerDamage", ALLIANCE_DAMAGE = "G$WorldBoss_AllianceDamage", AUCTION_ITEMS = "G$WorldBoss_AuctionItems", AUCTION_START_TIME = "G$WorldBoss_AuctionStartTime", PLAYER_REGISTER_TIME = "T$WorldBoss_RegisterTime", PLAYER_TOTAL_DAMAGE = "T$WorldBoss_TotalDamage", PLAYER_REVIVE_COUNT = "T$WorldBoss_ReviveCount" } } -- BOSS配置 local BOSS_CONFIG = { [WorldBossDefine.BOSS_TYPE.CHIYAN_MO] = { name = "炽焰魔", level = 380, baseHP = 100000000, baseDamage = 50000, hpMultiplier = 2.0, damageMultiplier = 0.5, dropConfig = { guaranteed = { {type = "equipment", count = 2, minAttrs = 3, maxAttrs = 4}, {type = "set", count = 1, minAttrs = 3, maxAttrs = 4} }, chance = { {type = "mount", itemId = "彩云兽", chance = 0.1}, {type = "necklace", minAttrs = 2, maxAttrs = 3, chance = 0.3} } } }, [WorldBossDefine.BOSS_TYPE.ZHOUYUAN_MOWANG] = { name = "咒怨魔王", level = 380, baseHP = 120000000, baseDamage = 60000, hpMultiplier = 2.5, damageMultiplier = 0.4, dropConfig = { guaranteed = { {type = "equipment", count = 2, minAttrs = 3, maxAttrs = 4}, {type = "set", count = 2, minAttrs = 3, maxAttrs = 4} }, chance = { {type = "mount", itemId = "1代坐骑", chance = 0.15}, {type = "pet", itemId = "1代宠物", chance = 0.15}, {type = "necklace", minAttrs = 2, maxAttrs = 3, chance = 0.4} } } } } -- 拍卖配置 local AUCTION_CONFIG = { STARTING_PRICES = { equipment = 300, mount = 2000, pet = 2000, necklace = 10000, special = 500 }, COMMISSION_RATE = 0.2, ALLIANCE_DISTRIBUTION = {[1] = 0.5, [2] = 0.3, [3] = 0.2}, PLAYER_DISTRIBUTION = {[1] = 0.30, [2] = 0.25, [3] = 0.20, [4] = 0.10, [5] = 0.05} } -- 初始化系统 function this.Init() -- info("世界BOSS争夺战系统初始化开始") this.CheckAndStartActivity() this.StartTimers() -- info("世界BOSS争夺战系统初始化完成") end -- 检查并启动活动 function this.CheckAndStartActivity() local now = os.time() local currentStatus = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS) or WorldBossDefine.STATUS.NOT_STARTED if currentStatus == WorldBossDefine.STATUS.NOT_STARTED and this.IsActivityTime(now) then this.StartActivity() elseif currentStatus == WorldBossDefine.STATUS.REGISTERING then local startTime = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_START_TIME) or 0 if now - startTime >= WorldBossDefine.ACTIVITY_CONFIG.REGISTER_DURATION * 60 then this.StartFighting() end elseif currentStatus == WorldBossDefine.STATUS.FIGHTING then local startTime = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_START_TIME) or 0 if now - startTime >= (WorldBossDefine.ACTIVITY_CONFIG.REGISTER_DURATION + WorldBossDefine.ACTIVITY_CONFIG.FIGHT_DURATION) * 60 then this.EndFighting() end elseif currentStatus == WorldBossDefine.STATUS.AUCTION then local auctionStartTime = getsysvar(WorldBossDefine.DB_KEYS.AUCTION_START_TIME) or 0 if now - auctionStartTime >= WorldBossDefine.ACTIVITY_CONFIG.AUCTION_DURATION * 60 then this.EndAuction() end end end -- 检查是否为活动时间 function this.IsActivityTime(now) local timeInfo = os.date("*t", now) return timeInfo.wday == WorldBossDefine.ACTIVITY_CONFIG.WEEKLY_DAY and timeInfo.hour == WorldBossDefine.ACTIVITY_CONFIG.WEEKLY_HOUR and timeInfo.min == WorldBossDefine.ACTIVITY_CONFIG.WEEKLY_MINUTE end -- 启动定时器 function this.StartTimers() setTimer(60000, function() this.CheckAndStartActivity() end) end -- 开始活动 function this.StartActivity() -- info("世界BOSS争夺战活动开始") local bossType = math.random(1, 2) local bossConfig = BOSS_CONFIG[bossType] setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.REGISTERING) setsysvar(WorldBossDefine.DB_KEYS.CURRENT_BOSS, bossType) setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_START_TIME, os.time()) setsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS, {}) setsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE, {}) setsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE, {}) local bossHP = math.floor(bossConfig.baseHP * bossConfig.hpMultiplier) setsysvar(WorldBossDefine.DB_KEYS.BOSS_HP, bossHP) setsysvar(WorldBossDefine.DB_KEYS.BOSS_MAX_HP, bossHP) this.SendWorldNotice("世界BOSS争夺战开始报名!BOSS:" .. bossConfig.name .. ",报名时间30分钟,战斗时间60分钟") -- info("世界BOSS争夺战活动启动完成,BOSS类型:", bossType, ",血量:", bossHP) end -- 开始战斗 function this.StartFighting() local registeredPlayers = getsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS) or {} if #registeredPlayers < WorldBossDefine.ACTIVITY_CONFIG.MIN_PLAYERS then this.CancelActivity("报名人数不足" .. WorldBossDefine.ACTIVITY_CONFIG.MIN_PLAYERS .. "人,活动取消") return end -- info("世界BOSS争夺战战斗开始,参与人数:", #registeredPlayers) setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.FIGHTING) this.SendWorldNotice("世界BOSS争夺战战斗开始!所有报名玩家可进入战场参与战斗") this.TeleportPlayersToBattlefield(registeredPlayers) end -- 结束战斗 function this.EndFighting() -- info("世界BOSS争夺战战斗结束") setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.FINISHED) this.CalculateAllianceRanking() this.GenerateDropItems() this.StartAuction() end -- 开始拍卖 function this.StartAuction() -- info("世界BOSS争夺战拍卖开始") setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.AUCTION) setsysvar(WorldBossDefine.DB_KEYS.AUCTION_START_TIME, os.time()) this.SendWorldNotice("世界BOSS争夺战拍卖开始!拍卖时间30分钟,所有参与战斗的玩家均可参与竞拍") this.NotifyClientAuctionStart() end -- 结束拍卖 function this.EndAuction() -- info("世界BOSS争夺战拍卖结束") setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.NOT_STARTED) this.ProcessAuctionResults() this.DistributeAuctionProfits() this.CleanupActivityData() this.SendWorldNotice("世界BOSS争夺战拍卖结束!收益已按规则分配") end -- 取消活动 function this.CancelActivity(reason) -- info("世界BOSS争夺战活动取消,原因:", reason) setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS, WorldBossDefine.STATUS.NOT_STARTED) this.CleanupActivityData() this.SendWorldNotice("世界BOSS争夺战活动取消:" .. reason) end -- 玩家报名 function this.PlayerRegister(actor) local currentStatus = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS) or WorldBossDefine.STATUS.NOT_STARTED if currentStatus ~= WorldBossDefine.STATUS.REGISTERING then tipinfo(actor, "当前不在报名时间") return false end local registeredPlayers = getsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS) or {} local playerId = actor:toString() for _, id in ipairs(registeredPlayers) do if id == playerId then tipinfo(actor, "您已经报名了") return false end end table.insert(registeredPlayers, playerId) setsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS, registeredPlayers) setplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_REGISTER_TIME, os.time()) setplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_TOTAL_DAMAGE, 0) setplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_REVIVE_COUNT, 0) tipinfo(actor, "报名成功!请等待战斗开始") -- info("玩家报名成功:", playerId, ",当前报名人数:", #registeredPlayers) return true end -- 记录玩家伤害 function this.RecordPlayerDamage(actor, damage) local currentStatus = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS) or WorldBossDefine.STATUS.NOT_STARTED if currentStatus ~= WorldBossDefine.STATUS.FIGHTING then return end local playerId = actor:toString() local playerDamage = getsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE) or {} local allianceDamage = getsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE) or {} playerDamage[playerId] = (playerDamage[playerId] or 0) + damage setsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE, playerDamage) local allianceId = getbaseinfo(actor, "guildid") if allianceId and allianceId > 0 then allianceDamage[allianceId] = (allianceDamage[allianceId] or 0) + damage setsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE, allianceDamage) end setplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_TOTAL_DAMAGE, playerDamage[playerId]) this.CheckBossDeath(damage) end -- 检查BOSS是否死亡 function this.CheckBossDeath(damage) local currentHP = getsysvar(WorldBossDefine.DB_KEYS.BOSS_HP) or 0 local newHP = math.max(0, currentHP - damage) setsysvar(WorldBossDefine.DB_KEYS.BOSS_HP, newHP) if newHP <= 0 then this.OnBossDeath() end end -- BOSS死亡处理 function this.OnBossDeath() -- info("世界BOSS死亡") local bossType = getsysvar(WorldBossDefine.DB_KEYS.CURRENT_BOSS) or 1 local bossConfig = BOSS_CONFIG[bossType] this.SendWorldNotice("世界BOSS " .. bossConfig.name .. " 已被击败!战斗结束,即将开始拍卖") setTimer(5000, function() this.EndFighting() end) end -- 计算战盟排名 function this.CalculateAllianceRanking() local allianceDamage = getsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE) or {} local allianceList = {} for allianceId, damage in pairs(allianceDamage) do table.insert(allianceList, {id = allianceId, damage = damage}) end table.sort(allianceList, function(a, b) return a.damage > b.damage end) setsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE, allianceList) -- info("战盟排名计算完成") end -- 生成掉落物品 function this.GenerateDropItems() local bossType = getsysvar(WorldBossDefine.DB_KEYS.CURRENT_BOSS) or 1 local bossConfig = BOSS_CONFIG[bossType] local dropItems = {} for _, dropConfig in ipairs(bossConfig.dropConfig.guaranteed) do for i = 1, dropConfig.count do local item = this.GenerateDropItem(dropConfig) if item then table.insert(dropItems, item) end end end for _, dropConfig in ipairs(bossConfig.dropConfig.chance) do if math.random() < dropConfig.chance then local item = this.GenerateDropItem(dropConfig) if item then table.insert(dropItems, item) end end end setsysvar(WorldBossDefine.DB_KEYS.AUCTION_ITEMS, dropItems) -- info("掉落物品生成完成,数量:", #dropItems) end -- 生成单个掉落物品 function this.GenerateDropItem(dropConfig) local item = { id = "WB_" .. os.time() .. "_" .. math.random(1000, 9999), type = dropConfig.type, name = this.GenerateItemName(dropConfig), attributes = this.GenerateItemAttributes(dropConfig), startingPrice = AUCTION_CONFIG.STARTING_PRICES[dropConfig.type] or 300 } return item end -- 生成物品名称 function this.GenerateItemName(dropConfig) if dropConfig.type == "equipment" then local equipmentTypes = {"红龙", "女神", "传说", "亚特兰蒂斯", "圣魂", "红翼"} return equipmentTypes[math.random(1, #equipmentTypes)] .. "装备" elseif dropConfig.type == "set" then return "卓越套装" elseif dropConfig.type == "mount" then return dropConfig.itemId or "坐骑" elseif dropConfig.type == "pet" then return dropConfig.itemId or "宠物" elseif dropConfig.type == "necklace" then return "卓越项链" end return "未知物品" end -- 生成物品属性 function this.GenerateItemAttributes(dropConfig) local attrCount = math.random(dropConfig.minAttrs or 2, dropConfig.maxAttrs or 3) local attributes = {} if dropConfig.type == "necklace" then table.insert(attributes, "卓越一击") attrCount = attrCount - 1 end local allAttributes = {"攻击力", "防御力", "生命值", "魔法值", "暴击率", "闪避率", "命中率", "韧性"} for i = 1, attrCount do local attr = allAttributes[math.random(1, #allAttributes)] if not table.contains(attributes, attr) then table.insert(attributes, attr) end end return attributes end -- 处理拍卖结果 function this.ProcessAuctionResults() local auctionItems = getsysvar(WorldBossDefine.DB_KEYS.AUCTION_ITEMS) or {} for _, item in ipairs(auctionItems) do if item.winner then this.ProcessSuccessfulAuction(item) else this.ProcessFailedAuction(item) end end end -- 处理成功拍卖 function this.ProcessSuccessfulAuction(item) local totalPrice = item.finalPrice local commission = math.floor(totalPrice * AUCTION_CONFIG.COMMISSION_RATE) local profit = totalPrice - commission -- info("物品拍卖成功:", item.name, ",最终价格:", totalPrice, ",手续费:", commission, ",收益:", profit) this.DistributeItemProfit(item, profit) end -- 处理流拍物品 function this.ProcessFailedAuction(item) -- info("物品流拍:", item.name) end -- 分配物品收益 function this.DistributeItemProfit(item, profit) local allianceDamage = getsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE) or {} for rank = 1, 3 do if allianceDamage[rank] then local allianceId = allianceDamage[rank].id local allianceShare = math.floor(profit * AUCTION_CONFIG.ALLIANCE_DISTRIBUTION[rank]) if allianceShare > 0 then this.DistributeAllianceProfit(allianceId, allianceShare, rank) end end end end -- 分配战盟收益 function this.DistributeAllianceProfit(allianceId, profit, rank) local playerDamage = getsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE) or {} local alliancePlayers = {} for playerId, damage in pairs(playerDamage) do local playerActor = getactor(tonumber(playerId)) if playerActor then local playerAllianceId = getbaseinfo(playerActor, "guildid") if playerAllianceId == allianceId then table.insert(alliancePlayers, {id = playerId, damage = damage}) end end end table.sort(alliancePlayers, function(a, b) return a.damage > b.damage end) local remainingProfit = profit local distributedCount = 0 for playerRank = 1, 5 do if alliancePlayers[playerRank] and remainingProfit > 0 then local playerShare = math.floor(profit * AUCTION_CONFIG.PLAYER_DISTRIBUTION[playerRank]) if playerShare > 0 then this.GivePlayerProfit(alliancePlayers[playerRank].id, playerShare) remainingProfit = remainingProfit - playerShare distributedCount = distributedCount + 1 end end end if remainingProfit > 0 and #alliancePlayers > distributedCount then local averageShare = math.floor(remainingProfit / (#alliancePlayers - distributedCount)) for i = distributedCount + 1, #alliancePlayers do if remainingProfit > 0 then this.GivePlayerProfit(alliancePlayers[i].id, averageShare) remainingProfit = remainingProfit - averageShare end end end -- info("战盟收益分配完成,战盟ID:", allianceId, ",排名:", rank, ",总收益:", profit) end -- 给予玩家收益 function this.GivePlayerProfit(playerId, amount) local playerActor = getactor(tonumber(playerId)) if playerActor then this.SendProfitMail(playerActor, amount) -- info("玩家获得分红:", playerId, ",金额:", amount) end end -- 发送分红邮件 function this.SendProfitMail(actor, amount) local mailData = { title = "世界BOSS拍卖分红", content = "恭喜您在世界BOSS争夺战中获得了拍卖分红!\n分红金额:" .. amount .. " 钻石", items = {}, diamonds = amount } end -- 分配拍卖收益 function this.DistributeAuctionProfits() -- info("拍卖收益分配完成") end -- 清理活动数据 function this.CleanupActivityData() setsysvar(WorldBossDefine.DB_KEYS.CURRENT_BOSS, nil) setsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_START_TIME, nil) setsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS, nil) setsysvar(WorldBossDefine.DB_KEYS.BOSS_HP, nil) setsysvar(WorldBossDefine.DB_KEYS.BOSS_MAX_HP, nil) setsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE, nil) setsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE, nil) setsysvar(WorldBossDefine.DB_KEYS.AUCTION_ITEMS, nil) setsysvar(WorldBossDefine.DB_KEYS.AUCTION_START_TIME, nil) -- info("活动数据清理完成") end -- 传送玩家到战场 function this.TeleportPlayersToBattlefield(players) -- info("传送玩家到战场,玩家数量:", #players) end -- 发送全服公告 function this.SendWorldNotice(message) -- info("全服公告:", message) end -- 通知客户端拍卖开始 function this.NotifyClientAuctionStart() -- info("通知客户端拍卖开始") end -- 获取活动状态 function this.GetActivityStatus() return getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_STATUS) or WorldBossDefine.STATUS.NOT_STARTED end -- 获取当前BOSS信息 function this.GetCurrentBoss() local bossType = getsysvar(WorldBossDefine.DB_KEYS.CURRENT_BOSS) if bossType then return BOSS_CONFIG[bossType] end return nil end -- 获取BOSS血量信息 function this.GetBossHPInfo() local currentHP = getsysvar(WorldBossDefine.DB_KEYS.BOSS_HP) or 0 local maxHP = getsysvar(WorldBossDefine.DB_KEYS.BOSS_MAX_HP) or 0 return { current = currentHP, max = maxHP, percentage = maxHP > 0 and (currentHP / maxHP * 100) or 0 } end -- 获取玩家伤害排名 function this.GetPlayerDamageRanking() local playerDamage = getsysvar(WorldBossDefine.DB_KEYS.PLAYER_DAMAGE) or {} local playerList = {} for playerId, damage in pairs(playerDamage) do table.insert(playerList, {id = playerId, damage = damage}) end table.sort(playerList, function(a, b) return a.damage > b.damage end) return playerList end -- 获取战盟伤害排名 function this.GetAllianceDamageRanking() return getsysvar(WorldBossDefine.DB_KEYS.ALLIANCE_DAMAGE) or {} end -- 获取拍卖物品列表 function this.GetAuctionItems() return getsysvar(WorldBossDefine.DB_KEYS.AUCTION_ITEMS) or {} end -- 获取活动剩余时间 function this.GetActivityRemainingTime() local currentStatus = this.GetActivityStatus() local startTime = getsysvar(WorldBossDefine.DB_KEYS.ACTIVITY_START_TIME) or 0 local now = os.time() if currentStatus == WorldBossDefine.STATUS.REGISTERING then return math.max(0, WorldBossDefine.ACTIVITY_CONFIG.REGISTER_DURATION * 60 - (now - startTime)) elseif currentStatus == WorldBossDefine.STATUS.FIGHTING then return math.max(0, (WorldBossDefine.ACTIVITY_CONFIG.REGISTER_DURATION + WorldBossDefine.ACTIVITY_CONFIG.FIGHT_DURATION) * 60 - (now - startTime)) elseif currentStatus == WorldBossDefine.STATUS.AUCTION then local auctionStartTime = getsysvar(WorldBossDefine.DB_KEYS.AUCTION_START_TIME) or 0 return math.max(0, WorldBossDefine.ACTIVITY_CONFIG.AUCTION_DURATION * 60 - (now - auctionStartTime)) end return 0 end -- 玩家复活 function this.PlayerRevive(actor, useDiamond) local currentStatus = this.GetActivityStatus() if currentStatus ~= WorldBossDefine.STATUS.FIGHTING then tipinfo(actor, "当前不在战斗时间") return false end if useDiamond then local diamondCount = getitemcount(actor, "diamond") if diamondCount < 100 then tipinfo(actor, "钻石不足,无法复活") return false end removeitemfrombag(actor, "diamond", 100, 0, 9999, '世界BOSS复活') this.RevivePlayerAtPosition(actor) else this.RevivePlayerAtSafeZone(actor) end local reviveCount = getplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_REVIVE_COUNT) or 0 setplaydef(actor, WorldBossDefine.DB_KEYS.PLAYER_REVIVE_COUNT, reviveCount + 1) return true end -- 原地复活玩家 function this.RevivePlayerAtPosition(actor) tipinfo(actor, "原地复活成功!") end -- 安全区复活玩家 function this.RevivePlayerAtSafeZone(actor) tipinfo(actor, "已回到安全区复活") end -- 检查玩家是否已报名 function this.IsPlayerRegistered(actor) local registeredPlayers = getsysvar(WorldBossDefine.DB_KEYS.REGISTERED_PLAYERS) or {} local playerId = actor:toString() for _, id in ipairs(registeredPlayers) do if id == playerId then return true end end return false end -- 检查玩家是否可参与活动 function this.CanPlayerParticipate(actor) local currentStatus = this.GetActivityStatus() if currentStatus == WorldBossDefine.STATUS.NOT_STARTED then return false, "活动未开始" elseif currentStatus == WorldBossDefine.STATUS.REGISTERING then return this.IsPlayerRegistered(actor), "请先报名参加活动" elseif currentStatus == WorldBossDefine.STATUS.FIGHTING then return this.IsPlayerRegistered(actor), "请先报名参加活动" elseif currentStatus == WorldBossDefine.STATUS.AUCTION then return this.IsPlayerRegistered(actor), "请先报名参加活动" end return false, "活动状态异常" end return this