local XNieRChapter = require("XEntity/XNieR/XNieRChapter") local XNieRCharacter = require("XEntity/XNieR/XNieRCharacter") local XNieRRepeat = require("XEntity/XNieR/XNieRRepeat") local XNieRBoss = require("XEntity/XNieR/XNieRBoss") local XNierPOD = require("XEntity/XNieR/XNierPOD") --尼尔玩法管理器 XNieRManagerCreator = function() local XNieRManager = {} local NieRRepeatPOIndex = 3--复刷权限关在主线关卡位置 local ActivityId = XNieRConfigs.GetDefaultActivityId() local CurActivityConfig = {} local ChapterDataList = {} local ChapterDataDic = {} local RepeatDataList = {} local RepeatDataDic = {} local BossStageIdToChapterId = {} local IsActivityEnd = true local PassMainStageCount = 0 local AllMainStageCount = 0 local NieRCharacterDic = {} local NieRRobotIdToCharacterIdDic = {} local SelCharacterId = 0 local NieRBossDic = {} local NieRMainLineStageDic = {} local NieRMainLineBossStageDic = {} local NieRRepeatMainStage = {} local NieRRepeatStage = {} local NieREasterEggStage = {} local NieRTeachingStage = {} local SaveRepeatConsumCount = 0 local NierPODData = nil local BeginNieRData = {} local PlayerTeamData = {} local TypeId = CS.XGame.Config:GetInt("TypeIdNieR") local RepeatTypeId = CS.XGame.Config:GetInt("TypeIdNieRRepeat") local DefaultTeam = { CaptainPos = 1, FirstFightPos = 1, TeamData = { 0, 0, 0 }, } local IsRegisterEditBattleProxy = false local NierFubenPassed = false local NieREasterEggData = {} local IsNieREasterEggDataRealPass = false local CurSelEasterEggDataIndex = 0 local LastSelEasterEggDataIndex = 0 local NieRRpc = { NieRCharacterChangeFashion = "NieRCharacterChangeFashionRequest", --更换涂装请求 NieRUpdateBossScore = "NieRUpdateBossScoreRequest", --保存BOSS分数 NieRUpgradeSupportSkill = "NieRUpgradeSupportSkillRequest", --辅助机技能升级 NieRSelectSupportSkill = "NieRSelectSupportSkillRequest", --选择辅助机技能 NieREasterEggLeaveMessage = "NieREasterEggLeaveMessageRequest", --尼尔彩蛋关留言请求 } local NieREasterEggStageShow = false local NierCharacterAbilityDicInit = false local NieRCharacterAbilityDic = {} local NieRRepeatExStagePass = false local NieRMainLineUITipsInfoInit = false local NieRCharacterOpenDic = {} local NieRRepeatPoStageOpenDic = {} local NieRBossStageOpenDic = {} local NierMainLineStagePass = false function XNieRManager.RegisterEditBattleProxy() if IsRegisterEditBattleProxy then return end IsRegisterEditBattleProxy = true XUiNewRoomSingleProxy.RegisterProxy(XDataCenter.FubenManager.StageType.NieR, require("XUi/XUiNieR/XUiNieRNewRoomSingle")) end -- 初始化副本info function XNieRManager.InitStageInfo() local nieRType = XDataCenter.FubenManager.StageType.NieR local nierChapterCfgs = XNieRConfigs.GetAllChapterConfig() local nierCharacterCfgs = XNieRConfigs.GetAllCharacterConfig() --主线剧情关 for _, chapterCfg in pairs(nierChapterCfgs) do for index, stageId in ipairs(chapterCfg.StageIds) do local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有找到StageInfo,stageId:%s", stageId)) end NieRMainLineStageDic[stageId] = chapterCfg.ChapterId end local stageInfo = XDataCenter.FubenManager.GetStageInfo(chapterCfg.BossStageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有找到StageInfo,stageId:%s", chapterCfg.BossStageId)) end NieRMainLineBossStageDic[chapterCfg.BossStageId] = chapterCfg.ChapterId end -- --教学关 for _, characterCfg in pairs(nierCharacterCfgs) do for _, stageId in pairs(characterCfg.TeachingStageIds) do local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有%s", stageId)) end NieRTeachingStage[stageId] = characterCfg.CharacterId end end --复刷关 local repeatableCfgs = XNieRConfigs.GetRepeatableStageConfig() for _, repeatableCfg in pairs(repeatableCfgs) do for _, stageId in pairs(repeatableCfg.ExStageIds) do local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有找到StageInfo,stageId:%s", stageId)) end NieRRepeatStage[stageId] = repeatableCfg.RepeatableStageId end local stageInfo = XDataCenter.FubenManager.GetStageInfo(repeatableCfg.RepeatableStageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有找到StageInfo,stageId:%s", repeatableCfg.RepeatableStageId)) end NieRRepeatMainStage[repeatableCfg.RepeatableStageId] = repeatableCfg.RepeatableStageId end --彩蛋关 local nieRActivityConfigs = XNieRConfigs.GetAllActivityConfig() for _, nieRActiveityCfg in pairs(nieRActivityConfigs) do local stageInfo = XDataCenter.FubenManager.GetStageInfo(nieRActiveityCfg.EasterEggStageId) if stageInfo then if stageInfo.Type and stageInfo.Type ~= nieRType then XLog.Error(string.format("%s已设置了Type", stageId)) end stageInfo.Type = nieRType else XLog.Error(string.format("没有找到StageInfo,stageId:%s", stageId)) end NieREasterEggStage[nieRActiveityCfg.EasterEggStageId] = nieRActiveityCfg.EasterEggStageId end for _, nieRCharacter in pairs(NieRCharacterDic) do nieRCharacter:ResetNeedUpdateNieRCharAbility() end end function XNieRManager.CheckPreFight(stage, challengeCount) local stageId = stage.StageId if NieRRepeatMainStage[stageId] then local repeatData = XNieRManager.GetRepeatDataById(stageId) local itemId, count = XDataCenter.NieRManager.GetRepeatStageConsumeId(), repeatData:GetNierRepeatStageConsumeCount() local itemCount = XDataCenter.ItemManager.GetCount(itemId) if not XDataCenter.ItemManager.DoNotEnoughBuyAsset(itemId, count, 1, nil, "NieRRepeatTickNotEnough") then return false end elseif NieRRepeatStage[stageId] then local repeatData = XNieRManager.GetRepeatDataById(NieRRepeatStage[stageId]) local itemId, count = repeatData:GetExConsumIdAndCount(stageId) if not XDataCenter.ItemManager.DoNotEnoughBuyAsset(itemId, count, 1, nil, "NieRRepeatTickNotEnough") then return false end end return true end --战斗开始前记录一部分数据 function XNieRManager.OpenFightLoading(stageId) if NieRRepeatMainStage[stageId] or NieRRepeatStage[stageId] then for _, nierCharcter in pairs(XNieRManager.GetNieRCharacterDic()) do local tmpCharacter = {} tmpCharacter.Id = nierCharcter:GetNieRCharacterId() tmpCharacter.OldLevel = nierCharcter:GetNieRCharacterLevel() tmpCharacter.OldExp = nierCharcter:GetNieRCharacterExp() tmpCharacter.OldMaxExp = nierCharcter:GetNieRCharacterMaxExp() tmpCharacter.IsOldMaxLevel = nierCharcter:CheckNieRCharacterMaxLevel() BeginNieRData.NierCharacter = BeginNieRData.NierCharacter or {} BeginNieRData.NierCharacter[nierCharcter:GetNieRCharacterUpLevelItemId()] = tmpCharacter end if NierPODData then local tmpNieRPOD = {} tmpNieRPOD.Id = NierPODData:GetNieRPODId() tmpNieRPOD.OldLevel = NierPODData:GetNieRPODLevel() tmpNieRPOD.OldExp = NierPODData:GetNieRPODExp() tmpNieRPOD.IsOldMaxLevel = NierPODData:CheckNieRPODMaxLevel() tmpNieRPOD.OldMaxExp = NierPODData:GetNieRPODMaxExp() BeginNieRData.NierPOD = BeginNieRData.NierPOD or {} BeginNieRData.NierPOD[NierPODData:GetNieRPODUpLevelItemId()] = tmpNieRPOD end end NierFubenPassed = XDataCenter.FubenManager.CheckStageIsPass(stageId) XDataCenter.FubenManager.OpenFightLoading(stageId) end function XNieRManager.ShowReward(winData) if not winData then return end if NierFubenPassed then XEventManager.DispatchEvent(XEventId.EVENT_FUBEN_NIER_STAGE_REWARD) NierFubenPassed = false end if winData.SettleData.NieRBossFightResult then XLuaUiManager.Open("UiNieRBossFightResult", winData) return end if NieREasterEggStage[winData.StageId] then XLuaUiManager.Open("UiNieREasterEgg", true, false) return end if NieRRepeatStage[winData.StageId] then NieRRepeatExStagePass = true end if NieRMainLineStageDic[winData.StageId] then NierMainLineStagePass = true end local closeCb = function() local stageId = winData.StageId if (NieRRepeatMainStage[stageId] or NieRRepeatStage[stageId]) and next(BeginNieRData) ~= nil then local showList = {} local podInfo for _, item in pairs(winData.SettleData.RewardGoodsList) do local nierCharacterData = BeginNieRData.NierCharacter[item.TemplateId] if nierCharacterData then -- local nierCharacterId = nierCharacterData.id -- local nierCharcter = XNieRManager.GetNieRCharacterByCharacterId(nierCharacterId) -- nierCharacterData.NewLevel = nierCharcter:GetNieRCharacterLevel() -- nierCharacterData.NewExp = nierCharcter:GetNieRCharacterExp() nierCharacterData.Item = item table.insert(showList, nierCharacterData) end if not podInfo and BeginNieRData.NierPOD[item.TemplateId] then podInfo = BeginNieRData.NierPOD[item.TemplateId] if podInfo then podInfo.Item = item end end end if #showList > 0 or podInfo then local donotShow = true if #showList > 0 then for _, info in ipairs(showList) do if not info.IsOldMaxLevel then donotShow = false break end end end if donotShow and podInfo and not podInfo.IsOldMaxLevel then donotShow = false end if donotShow then else XLuaUiManager.Open("UiFubenNierShengji", showList, podInfo) end end elseif (NieRMainLineStageDic[stageId] or NieRMainLineBossStageDic[stageId]) then local nieRChapterId = NieRMainLineStageDic[stageId] or NieRMainLineBossStageDic[stageId] local nieRChapter = XNieRManager.GetChapterDataById(nieRChapterId) if not nieRChapter:CheckNieRChapterUnLock() then XUiManager.TipText("NieRActivityChapterEnd") XLuaUiManager.RunMain() end end BeginNieRData = {} end XLuaUiManager.Open("UiSettleWin", winData, nil, closeCb, true) end --判断活动是否开启 function XNieRManager.GetIsActivityEnd() local timeNow = XTime.GetServerNowTimestamp() local isEnd = timeNow >= XNieRManager.GetEndTime() local isStart = timeNow >= XNieRManager.GetStartTime() local inActivity = (not isEnd) and (isStart) return IsActivityEnd or not inActivity, timeNow < XNieRManager.GetStartTime() end --获取本轮开始时间 function XNieRManager.GetStartTime() if not CurActivityConfig then return 0 end return XFunctionManager.GetStartTimeByTimeId(CurActivityConfig.TimeId) or 0 end --获取本轮结束时间 function XNieRManager.GetEndTime() if not CurActivityConfig then return 0 end return XFunctionManager.GetEndTimeByTimeId(CurActivityConfig.TimeId) or 0 end --=================== --获取活动配置简表 --=================== function XNieRManager.GetActivityChapters() local chapters = {} if CurActivityConfig and not XNieRManager.GetIsActivityEnd() then local tempChapter = {} tempChapter.Id = CurActivityConfig.Id tempChapter.Name = XNieRManager.GetActivityName() tempChapter.Type = XDataCenter.FubenManager.ChapterType.NieR tempChapter.BannerBg = CurActivityConfig.BannerBg table.insert(chapters, tempChapter) -- else -- local nieRActivityConfigs = XNieRConfigs.GetAllActivityConfig() -- if nieRActivityConfigs then -- for _, cfg in pairs(nieRActivityConfigs) do -- local startTime = XFunctionManager.GetStartTimeByTimeId(cfg.TimeId) -- local endTime = XFunctionManager.GetEndTimeByTimeId(cfg.TimeId) -- local timeNow = XTime.GetServerNowTimestamp() -- XLog.Debug(".GetActivityChapters..",startTime,endTime,timeNow) -- if timeNow >= startTime and timeNow < endTime then -- local tempChapter = {} -- tempChapter.Id = cfg.Id -- tempChapter.Name = cfg.Name or "" -- tempChapter.Type = XDataCenter.FubenManager.ChapterType.NieR -- tempChapter.BannerBg = cfg.BannerBg -- table.insert(chapters, tempChapter) -- break -- end -- end -- end end return chapters end --获取当前已通过的关卡数 function XNieRManager.GetPassMainStageCount() PassMainStageCount = 0 if not CurActivityConfig then return 0 end for index, chapterId in ipairs(CurActivityConfig.ChapterIds) do local chapterConfig = XNieRConfigs.GetChapterConfigById(chapterId) for __, stageId in ipairs(chapterConfig.StageIds) do if XDataCenter.FubenManager.CheckStageIsPass(stageId) then PassMainStageCount = PassMainStageCount + 1 end end if chapterConfig.BossStageId ~= 0 then if XDataCenter.FubenManager.CheckStageIsPass(chapterConfig.BossStageId) then PassMainStageCount = PassMainStageCount + 1 end end end return PassMainStageCount end --获取所有的关卡数 function XNieRManager.GetAllMainStageCount() return AllMainStageCount end --获取当前通关情况的字符串 function XNieRManager.GetChapterProgressStr() return CS.XTextManager.GetText("NieRChapterProgressStr", XNieRManager.GetPassMainStageCount(), XNieRManager.GetAllMainStageCount()) end --获得活动名字 function XNieRManager.GetActivityName() if not CurActivityConfig then return "" end return CurActivityConfig.Name or "" end --处理当前活动状态改变的方法 function XNieRManager.CurActivtityConfigChange() PassMainStageCount = 0 AllMainStageCount = 0 ChapterDataList = {} ChapterDataDic = {} RepeatDataList = {} RepeatDataDic = {} BossStageIdToChapterId = {} NierCharacterAbilityDicInit = false NieRCharacterAbilityDic = {} NieRRepeatExStagePass = false NieRMainLineUITipsInfoInit = false NieRCharacterOpenDic = {} NieRRepeatPoStageOpenDic = {} NieRBossStageOpenDic = {} NierMainLineStagePass = false if ActivityId == 0 then return end CurActivityConfig = XNieRConfigs.GetActivityConfigById(ActivityId) if not CurActivityConfig then return end for index, chapterId in ipairs(CurActivityConfig.ChapterIds) do local chapterConfig = XNieRConfigs.GetChapterConfigById(chapterId) for __, stageId in ipairs(chapterConfig.StageIds) do AllMainStageCount = AllMainStageCount + 1 end if chapterConfig.BossStageId ~= 0 then AllMainStageCount = AllMainStageCount + 1 end BossStageIdToChapterId[chapterConfig.BossStageId] = chapterId XNieRManager.InitChapterEntity(chapterId, index) end for index, repeatId in ipairs(CurActivityConfig.RepeatableStageIds) do XNieRManager.InitRepeatEntity(repeatId, index) end IsActivityEnd = false end --获取当前活动的章节表 function XNieRManager.GetCurActivityChapterIds() if not CurActivityConfig then return {} end return CurActivityConfig.ChapterIds or {} end function XNieRManager.GetCurDevelopCharacterIds() if not CurActivityConfig then return {} end return CurActivityConfig.DevelopCharacterIds end --初始化章节对象 function XNieRManager.InitChapterEntity(chapterId, index) local tmpChapterData = XNieRChapter.New(chapterId, index) local lastChapterData if index > 1 then lastChapterData = ChapterDataList[index - 1] end table.insert(ChapterDataList, tmpChapterData) ChapterDataDic[chapterId] = tmpChapterData end --获取章节对象列表 function XNieRManager.GetChapterDataList() return ChapterDataList end --根据Index获取章节对象 function XNieRManager.GetChapterDataByIndex(index) return ChapterDataList[index] end --根据Id获取章节对象 function XNieRManager.GetChapterDataById(chapterId) return ChapterDataDic[chapterId] end --尼尔玩法复刷关信息 --初始化复刷关对象 function XNieRManager.InitRepeatEntity(repeatId, index) local tmpRepeatData = XNieRRepeat.New(repeatId, index) local lastChapterData table.insert(RepeatDataList, tmpRepeatData) RepeatDataDic[repeatId] = tmpRepeatData end --获取复刷关对象列表 function XNieRManager.GetRepeatDataList() return RepeatDataList end --根据Index获取复刷关对象 function XNieRManager.GetRepeatDataByIndex(index) return RepeatDataList[index] end --根据Id获取复刷关对象 function XNieRManager.GetRepeatDataById(repeatId) return RepeatDataDic[repeatId] end --根据Id获取复刷关门票Id function XNieRManager.GetRepeatStageConsumeId() if not CurActivityConfig then return 0 end return CurActivityConfig.RepeatableConsumeId end --获得复刷关门票最大数量 function XNieRManager.GetNieRRepeatConsumeMaxCount() if not CurActivityConfig then return 0 end return CurActivityConfig.RepeatableConsumeMaxCount or 0 end function XNieRManager.CheckNieRRepeatMainStage(stageId) return NieRRepeatMainStage[stageId] or false end --处理尼尔POD辅助机 function XNieRManager.UpdateNieRPODData(data) if not NierPODData then NierPODData = XNierPOD.New(data) else NierPODData:UpdateNierPOD(data) end end function XNieRManager.GetNieRPODData() return NierPODData end --处理尼尔Boss function XNieRManager.UpdateNieRBossData(data) local stageId = data.StageId if not NieRBossDic[stageId] then NieRBossDic[stageId] = XNieRBoss.New(data, BossStageIdToChapterId[stageId]) else NieRBossDic[stageId]:UpdateData(data, BossStageIdToChapterId[stageId]) end return NieRBossDic[stageId] end function XNieRManager.GetNieRBossDataById(stageId) if not NieRBossDic[stageId] then local data = {} data.StageId = stageId data.LeftHp = XNieRConfigs.GetChapterConfigById(BossStageIdToChapterId[stageId]).BossHp data.Score = 0 NieRBossDic[stageId] = XNieRBoss.New(data, BossStageIdToChapterId[stageId]) end return NieRBossDic[stageId] end --处理尼尔角色 function XNieRManager.UpdateNieRCharacterData(data) local characterId = data.CharacterId if not NieRCharacterDic[characterId] then NieRCharacterDic[characterId] = XNieRCharacter.New(data) local robotId = NieRCharacterDic[characterId]:GetNieRCharacterRobotId() NieRRobotIdToCharacterIdDic[robotId] = characterId else local nieRCharacter = NieRCharacterDic[characterId] local lastRobotId = nieRCharacter:GetNieRCharacterRobotId() NieRRobotIdToCharacterIdDic[lastRobotId] = nil nieRCharacter:UpdateNieRCharacter(data) local robotId = NieRCharacterDic[characterId]:GetNieRCharacterRobotId() NieRRobotIdToCharacterIdDic[robotId] = characterId NieRCharacterDic[characterId]:ResetNeedUpdateNieRCharAbility() if lastRobotId ~= robotId then XNieRManager.ChangeAllPlayerTeam(lastRobotId, robotId, TypeId) XNieRManager.ChangeAllPlayerTeam(lastRobotId, robotId, RepeatTypeId) end end end --获得角色列表 function XNieRManager.GetChapterCharacterList(repeatId, chapterId) local CharacterList = {} local CharacterDic = {} if not repeatId then local roboteIds = XNieRManager.GetChapterDataById(chapterId):GetNierChapterRobotIds() or {} for _, robotId in ipairs(roboteIds) do table.insert(CharacterList, robotId) CharacterDic[robotId] = true end else local nieRRepeat = XNieRManager.GetRepeatDataById(repeatId) local roboteIds = nieRRepeat:GetNieRRepeatRobotIds() or {} for _, robotId in ipairs(roboteIds) do table.insert(CharacterList, robotId) CharacterDic[robotId] = true end end local characterIds = XNieRManager.GetCurDevelopCharacterIds() for _, id in pairs(characterIds) do local nieRCharacter = NieRCharacterDic[id] if nieRCharacter:CheckNieRCharacterCondition() then local robotId = nieRCharacter:GetNieRCharacterRobotId() table.insert(CharacterList, robotId) CharacterDic[robotId] = true end end return CharacterList, CharacterDic end function XNieRManager.GetCharacterCount() local count, unlockCount = 0, 0 local characterIds = XNieRManager.GetCurDevelopCharacterIds() or {} for _, id in pairs(characterIds) do local nieRCharacter = NieRCharacterDic[id] if nieRCharacter and nieRCharacter:CheckNieRCharacterCondition() then unlockCount = unlockCount + 1 end count = count + 1 end return unlockCount, count end --根据机器人Id获取尼尔角色的角色Id function XNieRManager.GetCharacterIdByNieRRobotId(robotId) return NieRRobotIdToCharacterIdDic[robotId] or 0 end function XNieRManager.SetSelCharacterId(value) SelCharacterId = value end function XNieRManager.GetSelNieRCharacter() return NieRCharacterDic[SelCharacterId] end function XNieRManager.GetNieRCharacterByCharacterId(characterId) return NieRCharacterDic[characterId] end function XNieRManager.GetNieRCharacterDic() return NieRCharacterDic end --获取尼尔玩法队伍信息 function XNieRManager.GetPlayerTeamData(stageId) local typeId = TypeId local robotList local robotDic = {} local CurTeamData local teamData if NieREasterEggStage[stageId] then local characterIds = XNieRManager.GetCurDevelopCharacterIds() local CharacterList = {} for _, id in pairs(characterIds) do local nieRCharacter = NieRCharacterDic[id] if nieRCharacter:CheckNieRCharacterCondition() and nieRCharacter:GetNieRCharacterCfgEasterEggFightTag() ~= 0 then table.insert(CharacterList, nieRCharacter) end end table.sort(CharacterList, function(a, b) return a:GetNieRCharacterCfgEasterEggFightTag() < b:GetNieRCharacterCfgEasterEggFightTag() end) teamData = XTool.Clone(DefaultTeam) for key, id in pairs(teamData.TeamData) do if CharacterList[key] then teamData.TeamData[key] = CharacterList[key]:GetNieRCharacterRobotId() end end return teamData elseif NieRRepeatMainStage[stageId] or NieRRepeatStage[stageId] then typeId = RepeatTypeId robotList, robotDic = XDataCenter.NieRManager.GetChapterCharacterList(NieRRepeatMainStage[stageId] or NieRRepeatStage[stageId], nil) elseif NieRMainLineBossStageDic[stageId] or NieRMainLineStageDic[stageId] then typeId = TypeId robotList, robotDic = XDataCenter.NieRManager.GetChapterCharacterList(nil, NieRMainLineBossStageDic[stageId] or NieRMainLineStageDic[stageId]) end local teamId = XDataCenter.TeamManager.GetTeamId(typeId) if XDataCenter.TeamManager.GetPlayerTeamData(teamId) then CurTeamData = XDataCenter.TeamManager.GetPlayerTeamData(teamId) teamData = XTool.Clone(CurTeamData) else DefaultTeam.TeamId = teamId teamData = XTool.Clone(DefaultTeam) end for key, id in pairs(teamData.TeamData) do if not robotDic[id] then teamData.TeamData[key] = 0 end end return teamData end function XNieRManager.SetPlayerTeamData(curTeam, stageId) local typeId = TypeId if NieRRepeatMainStage[stageId] or NieRRepeatStage[stageId] then typeId = RepeatTypeId elseif NieRMainLineBossStageDic[stageId] then typeId = TypeId end XDataCenter.TeamManager.SetPlayerTeam(curTeam, false, function() end) end function XNieRManager.ChangeAllPlayerTeam(lastRobotId, robotId, typeId) local teamId = XDataCenter.TeamManager.GetTeamId(typeId) local CurTeamData = XDataCenter.TeamManager.GetPlayerTeamData(teamId) if not CurTeamData or not CurTeamData.TeamData then return end local needSaveToServer = false for key, id in ipairs(CurTeamData.TeamData) do if id == lastRobotId then CurTeamData.TeamData[key] = robotId needSaveToServer = true break end end if needSaveToServer then XDataCenter.TeamManager.SetPlayerTeam(CurTeamData, false, function() end) end end function XNieRManager.CheckCharacterInformationUnlock(id, isUnlockClick) local isUnlock = XSaveTool.GetData(string.format("%d%s%d", XPlayer.Id, "NieRCharacterInformation", id)) if not isUnlock then XSaveTool.SaveData(string.format("%d%s%d", XPlayer.Id, "NieRCharacterInformation", id), isUnlockClick) if isUnlockClick then XEventManager.DispatchEvent(XEventId.EVENT_NIER_CHARACTER_UPDATE) end return false else return true end end function XNieRManager.SaveSelRepeatStageId(stageId) XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRRepeatSelMainStageId"), stageId) end function XNieRManager.GetSelRepeatStageId() local lastSelStageId = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieRRepeatSelMainStageId")) return lastSelStageId or 0 end function XNieRManager.RemoveAllPreData() local allCharacterConfig = XNieRConfigs.GetAllCharacterConfig() for _, charConfig in pairs(allCharacterConfig) do local inforList = XNieRConfigs.GetNieRCharacterInforListById(charConfig.CharacterId) for _, config in ipairs(inforList) do XSaveTool.RemoveData(string.format("%d%s%d", XPlayer.Id, "NieRCharacterInformation", config.Id)) end end XSaveTool.RemoveData(string.format("%d%s", XPlayer.Id, "NieRRepeatSelMainStageId")) XSaveTool.RemoveData(string.format("%d%s", XPlayer.Id, "NieREasterEggStageShow")) XSaveTool.RemoveData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount")) XSaveTool.RemoveData(string.format("%d%s", XPlayer.Id, "NieRActivityIdSave")) end --尼尔玩法商店信息 function XNieRManager.GetActivityShopIds() if not CurActivityConfig then return {} end return CurActivityConfig.ShopIds end function XNieRManager.GetActivityShopConditionByShopId(shopId) return XShopManager.GetShopConditionIdList(shopId) end function XNieRManager.GetActivityShopGoodsByShopId(shopId) local goods = XShopManager.GetShopGoodsList(shopId) return goods end function XNieRManager.GetActivityShopBtnNameById(shopId) return XNieRConfigs.GetNieRShopById(shopId).BtnName end function XNieRManager.GetActivityShopItemBgById(shopId) return XNieRConfigs.GetNieRShopById(shopId).ShopItemBg end function XNieRManager.GetActivityShopBgById(shopId) return XNieRConfigs.GetNieRShopById(shopId).ShopBg end function XNieRManager.GetActivityShopIconById(shopId) return XNieRConfigs.GetNieRShopById(shopId).ShopIcon end function XNieRManager.GetActivityNierTaskGroupList() local taskGroupList = CurActivityConfig and CurActivityConfig.TaskGroupIds or {} local taskGroupCfgsList = {} for _, groupId in ipairs(taskGroupList) do local cfg = XNieRConfigs.GetNieRTaskGroupByGroupId(groupId) if not XNieRManager.CheckNieREasterEggStagePassed() and cfg.EasterEggTask == 1 then else table.insert(taskGroupCfgsList, cfg) end end table.sort(taskGroupCfgsList, function(a, b) return a.Priority < b.Priority end) return taskGroupCfgsList end --处理尼尔玩法任务部分 function XNieRManager.GetActivityNierTaskByChapterId(groupId) return XDataCenter.TaskManager.GetNierTaskListByGroupId(groupId) end --检查尼尔玩法任务红点 function XNieRManager.CheckNieRTaskRed(groupId) if XNieRManager.GetIsActivityEnd() then return false end if groupId > 0 then local taskList = XDataCenter.TaskManager.GetNierTaskListByGroupId(groupId) for _, tasks in ipairs(taskList) do if tasks ~= nil and tasks.State == XDataCenter.TaskManager.TaskState.Achieved then return true end end else return XDataCenter.TaskManager.GetIsRewardForEx(XDataCenter.TaskManager.TaskType.NieR) end end -----------------------------------------尼尔彩蛋关----------------------------------------------- function XNieRManager.UpdateNieREasterEggData(players) NieREasterEggData = {} CurSelEasterEggDataIndex = 0 LastSelEasterEggDataIndex = 0 for _, info in pairs(players) do local tmp = {} tmp.PlayerId = info.PlayerId tmp.PlayerName = info.PlayerName tmp.MessageId = info.MessageId tmp.Age = info.Age tmp.LabelId = info.LabelId table.insert(NieREasterEggData, tmp) end local needCount = XNieRManager.GetCurMaxEasterEggMessageCount() - #NieREasterEggData if needCount > 0 then local ConfigMsg = XNieRConfigs.GetNieREasterEggInitMessageConfig() for i = 1, needCount do local config = ConfigMsg[i] if config then local tmp = {} tmp.PlayerName = config.PlayerName tmp.MessageId = config.MessageId tmp.Age = config.Age tmp.LabelId = config.LabelId table.insert(NieREasterEggData, tmp) end end end end function XNieRManager.NieREasterEggDataRealPass() IsNieREasterEggDataRealPass = true end function XNieRManager.GetNieREasterEggData() return NieREasterEggData end function XNieRManager.GetCurNieREasterEggStageId() if not CurActivityConfig then return 0 end return CurActivityConfig.EasterEggStageId end function XNieRManager.GetCurNieREasterEggAgeInfo() if not CurActivityConfig then return 0, 0 end return CurActivityConfig.EasterEggMinAge, CurActivityConfig.EasterEggMaxAge end function XNieRManager.GetCurMaxEasterEggMessageCount() if not CurActivityConfig then return 0 end return CurActivityConfig.MaxEasterEggMessageCount end function XNieRManager.OpenNieREasterEggCom() if not XLuaUiManager.IsUiLoad("UiFunctionalOpen") then XLuaUiManager.Open("UiFunctionalOpen", XNieRConfigs.GetNieREasterEggComConfig(), false, false) end end function XNieRManager.OpenNieRDataSaveUi() XLuaUiManager.Open("UiNieRSaveData") end function XNieRManager.GetNieREasrerEggPlayerName() local lastName, nowName if LastSelEasterEggDataIndex == 0 then CurSelEasterEggDataIndex = CurSelEasterEggDataIndex + 1 nowName = NieREasterEggData[CurSelEasterEggDataIndex].PlayerName else lastName = NieREasterEggData[LastSelEasterEggDataIndex].PlayerName nowName = NieREasterEggData[CurSelEasterEggDataIndex].PlayerName end LastSelEasterEggDataIndex = CurSelEasterEggDataIndex CurSelEasterEggDataIndex = CurSelEasterEggDataIndex + 1 CurSelEasterEggDataIndex = CurSelEasterEggDataIndex > XNieRManager.GetCurMaxEasterEggMessageCount() and 1 or CurSelEasterEggDataIndex return lastName, nowName end --检查是否需要显示彩蛋关(每次BOSS数据更新后检查) function XNieRManager.CheckNieREasterEggStageShow() if NieREasterEggStageShow then return end for _, nieRBossData in pairs(NieRBossDic) do if not nieRBossData:IsBossDeath() then NieREasterEggStageShow = false return end end NieREasterEggStageShow = true end --获取彩蛋关显示状态 function XNieRManager.GetNieREasterEggStageShow() return NieREasterEggStageShow end --是否第一次通过所有BOSS播放彩蛋剧情 function XNieRManager.CheckFirstNieREasterEggStageShow() if NieREasterEggStageShow then if not XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieREasterEggStageShow")) then XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieREasterEggStageShow"), true) return true end end return false end --检查彩蛋关是否已经完成 function XNieRManager.CheckNieREasterEggStagePassed() return IsNieREasterEggDataRealPass end -----------------------------------------尼尔彩蛋关结束----------------------------------------------- -----------------------------------------尼尔内部条件检测---------------------------------------------- function XNieRManager.CheckNieRMainLineUITips() local nierCharacterDic = XNieRManager.GetNieRCharacterDic() or {} if not NieRMainLineUITipsInfoInit then local nierChapterDataList = XNieRManager.GetChapterDataList() or {} for key, nieRCharacter in pairs(nierCharacterDic) do if not nieRCharacter:CheckNieRCharacterCondition() then NieRCharacterOpenDic[key] = true end end for _, nieRChapter in pairs(nierChapterDataList) do local stageId = nieRChapter:GetNieRRepeatPoStageId() if not XDataCenter.FubenManager.CheckStageIsUnlock(stageId) then NieRRepeatPoStageOpenDic[stageId] = true end stageId = nieRChapter:GetNieRBossStageId() if not XDataCenter.FubenManager.CheckStageIsUnlock(stageId) then NieRBossStageOpenDic[stageId] = true end end NieRMainLineUITipsInfoInit = true else if not NierMainLineStagePass then return end local haveOpenBoss = {} local haveOpenCharacter = {} local haveOpenRepeatPo = {} for stageId, _ in pairs(NieRBossStageOpenDic) do if XDataCenter.FubenManager.CheckStageIsUnlock(stageId) then haveOpenBoss[stageId] = true end end for characterId, _ in pairs(NieRCharacterOpenDic) do local character = nierCharacterDic[characterId] if character and character:CheckNieRCharacterCondition() then haveOpenCharacter[characterId] = true end end for stageId, _ in pairs(NieRRepeatPoStageOpenDic) do if XDataCenter.FubenManager.CheckStageIsUnlock(stageId) then haveOpenRepeatPo[stageId] = true end end for stageId, _ in pairs(haveOpenBoss) do NieRBossStageOpenDic[stageId] = nil XUiManager.TipMsgEnqueue(CS.XTextManager.GetText("NieRMainLineNewJieDuanOpenTips")) end for characterId, _ in pairs(haveOpenCharacter) do NieRCharacterOpenDic[characterId] = nil local character = nierCharacterDic[characterId] if character then local name = character:GetNieRCharName() XUiManager.TipMsgEnqueue(CS.XTextManager.GetText("NieRNewCharacterOpenTips", name)) end end for stageId, _ in pairs(haveOpenRepeatPo) do NieRRepeatPoStageOpenDic[stageId] = nil XUiManager.TipMsgEnqueue(CS.XTextManager.GetText("NieRNewQuanXianStageOpenTips")) end NierMainLineStagePass = false end end --检查尼尔角色能力开启(优化TIPS弹出) function XNieRManager.CheckNieRCharacterAbilityOpen() local nierCharacterDic = XNieRManager.GetNieRCharacterDic() or {} if not NierCharacterAbilityDicInit then for _, nieRCharacter in pairs(nierCharacterDic) do local abilityConfigList = nieRCharacter:GetAllNieRAbilityConfigList() local tmpNotOpenAbility = {} for _, config in pairs(abilityConfigList) do if config.Condition ~= 0 and not XConditionManager.CheckCondition(config.Condition) then tmpNotOpenAbility[config.Id] = config end end NieRCharacterAbilityDic[nieRCharacter:GetNieRCharacterId()] = tmpNotOpenAbility end NierCharacterAbilityDicInit = true else if not NieRRepeatExStagePass then return end for nieRCharacterId, notOpenAbilityList in pairs(NieRCharacterAbilityDic) do local haveOpenAbility = {} for _, config in pairs(notOpenAbilityList) do if XConditionManager.CheckCondition(config.Condition) then local tmp = {} tmp.NieRCharacterId = nieRCharacterId tmp.ConfigName = config.TitleStr or "" haveOpenAbility[config.Id] = tmp end end for id, info in pairs(haveOpenAbility) do notOpenAbilityList[id] = nil local nierCharacter = nierCharacterDic[info.NieRCharacterId] if nierCharacter then local name = nierCharacter:GetNieRCharName() XUiManager.TipMsgEnqueue(CS.XTextManager.GetText("NieRCharacterAbilityOpenTips", name, info.ConfigName)) end end end NieRRepeatExStagePass = false end end -----------------------------------------尼尔内部条件检测结束------------------------------------------- function XNieRManager.SaveNieRRepeatRedCheckCount() -- local consumeId, consumCount = XNieRManager.GetRepeatStageConsumeId(), 0 -- local haveCount = XDataCenter.ItemManager.GetCount(consumeId) -- SaveRepeatConsumCount = haveCount -- XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount"), haveCount) local nowTime = XTime.GetServerNowTimestamp() XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount"), nowTime) end function XNieRManager.CheckNieRRepeatRedTime() -- local saveCount -- if SaveRepeatConsumCount ~= 0 then -- saveCount = SaveRepeatConsumCount -- else -- saveCount = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount")) -- end -- if saveCount then -- return tonumber(saveCount) -- end -- return 0 local saveTime = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount")) or 0 local nowTime = XTime.GetServerNowTimestamp() local refreshTime = XTime.GetSeverTodayFreshTime() local lastRefreshTime = XTime.GetSeverYesterdayFreshTime() if saveTime <= refreshTime then if saveTime > lastRefreshTime then return false else return true end else return false end end --检查尼尔玩法复刷关红点 function XNieRManager.CheckRepeatRed() if XNieRManager.GetIsActivityEnd() then return false end local nierRepeatList = XNieRManager.GetRepeatDataList() local consumeId, consumCount = XNieRManager.GetRepeatStageConsumeId(), 0 local haveCount = XDataCenter.ItemManager.GetCount(consumeId) local haveCountEx = 0 -- local saveCount -- if SaveRepeatConsumCount ~= 0 then -- saveCount = SaveRepeatConsumCount -- else -- saveCount = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount")) -- end -- if saveCount then -- local numCount = tonumber(saveCount) -- if numCount == haveCount then -- return false -- elseif numCount > haveCount then -- SaveRepeatConsumCount = haveCount -- XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRRepeatRedCheckCount"), haveCount) -- return false -- end -- end if not XNieRManager.CheckNieRRepeatRedTime() then return false end for _, repeatData in ipairs(nierRepeatList) do if repeatData:CheckNieRRepeatMainStageUnlock() then consumCount = repeatData:GetNierRepeatStageConsumeCount() local needActionPoint = XDataCenter.FubenManager.GetRequireActionPoint(repeatData:GetNieRRepeatStageId()) local haveActionPoint = XDataCenter.ItemManager.GetCount(XDataCenter.ItemManager.ItemId.ActionPoint) if haveCount >= consumCount and haveActionPoint >= needActionPoint then return true end -- for _, stageId in ipairs(repeatData:GetNieRExStageIds()) do -- if repeatData:CheckNieRRepeatStageUnlock(stageId) then -- consumeId, consumCount = repeatData:GetExConsumIdAndCount(stageId) -- if consumeId ~= 0 then -- haveCountEx = XDataCenter.ItemManager.GetCount(consumeId) -- if haveCountEx >= consumCount then -- return true -- end -- end -- end -- end end end return false end --检查尼尔玩家红点 function XNieRManager.CheckNieRCharacterRed(characterId, isInfor, isTeach) if XNieRManager.GetIsActivityEnd() then return false end local nieRCharacterDic = XNieRManager.GetNieRCharacterDic() or {} if characterId > 0 then local nieRCharacter = nieRCharacterDic[characterId] if nieRCharacter and nieRCharacter:CheckNieRCharacterCondition() then if isInfor then local inforList = XNieRConfigs.GetNieRCharacterInforListById(characterId) for _, config in ipairs(inforList) do local condit if config.UnlockCondition ~= 0 then condit = XConditionManager.CheckCondition(config.UnlockCondition) else condit = true end if condit then if not XDataCenter.NieRManager.CheckCharacterInformationUnlock(config.Id, false) then return true end end end end if isTeach then local teachingStageIds = nieRCharacter:GetTeachingStageIds() for _, stageId in pairs(teachingStageIds) do if XDataCenter.FubenManager.CheckStageIsUnlock(stageId) and not XDataCenter.FubenManager.CheckStageIsPass(stageId) then return true end end end end else for tmpCharacterId, nieRCharacter in pairs(nieRCharacterDic) do if nieRCharacter:CheckNieRCharacterCondition() then if isInfor then local inforList = XNieRConfigs.GetNieRCharacterInforListById(tmpCharacterId) for _, config in ipairs(inforList) do local condit if config.UnlockCondition ~= 0 then condit = XConditionManager.CheckCondition(config.UnlockCondition) else condit = true end if condit then if not XDataCenter.NieRManager.CheckCharacterInformationUnlock(config.Id, false) then return true end end end end if isTeach then local teaChaningStageIds = nieRCharacter:GetTeachingStageIds() for _, stageId in pairs(teaChaningStageIds) do if XDataCenter.FubenManager.CheckStageIsUnlock(stageId) and not XDataCenter.FubenManager.CheckStageIsPass(stageId) then return true end end end end end end return false end --检查尼尔POD红点 function XNieRManager.CheckNieRPODRed() if XNieRManager.GetIsActivityEnd() then return false end local nieRPODData = XNieRManager.GetNieRPODData() if not nieRPODData then return false end for _, skill in pairs(nieRPODData:GetNieRPODSkillList()) do if nieRPODData:CheckNieRPODSkillActive(skill.SkillId) and nieRPODData:CheckNieRPODSkillUpLevel(skill.SkillId) then local cousumId, consumCount = nieRPODData:GetNieRPODSkillUpLevelItem(skill.SkillId) if cousumId ~= 0 then local haveCount = XDataCenter.ItemManager.GetCount(cousumId) if haveCount >= consumCount then return true end end end end return false end --检查尼尔活动入口可挑战条件 function XNieRManager.CheckNieRCanFightTag() if not XNieRManager.CheckRepeatRed() then return false end --有角色未达到满级 local nierCharacters = XNieRManager.GetCurDevelopCharacterIds() for _, characterId in pairs(nierCharacters) do local nieRCharacter = XNieRManager.GetNieRCharacterByCharacterId(characterId) if nieRCharacter:CheckNieRCharacterCondition() and not nieRCharacter:CheckNieRCharacterMaxLevel() then return true end end return false end function XNieRManager.OnActivityEnd() if CS.XFight.IsRunning or XLuaUiManager.IsUiLoad("UiLoading") then return end XUiManager.TipText("NieREnd") XLuaUiManager.RunMain() end --服务端下推部分 --处理尼尔数据 function XNieRManager.AsyncNieRData(notifyData) if notifyData.ActivityId ~= 0 then ActivityId = notifyData.ActivityId NieRRobotIdToCharacterIdDic = {} NieRCharacterDic = {} NieRBossDic = {} NieREasterEggStageShow = false IsNieREasterEggDataRealPass = false XNieRManager.CurActivtityConfigChange() local nierSaveActivityId = XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "NieRActivityIdSave")) if not nierSaveActivityId then XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRActivityIdSave"), ActivityId) else if nierSaveActivityId ~= ActivityId then XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "NieRActivityIdSave"), ActivityId) XNieRManager.RemoveAllPreData() end end else ActivityId = XNieRConfigs.GetDefaultActivityId() IsNieREasterEggDataRealPass = false IsActivityEnd = true CurActivityConfig = false XNieRManager.CurActivtityConfigChange() XNieRManager.RemoveAllPreData() XEventManager.DispatchEvent(XEventId.EVENT_NIER_ACTIVITY_END) return end for _, data in ipairs(notifyData.Characters) do XNieRManager.UpdateNieRCharacterData(data) end if notifyData.Bosses then for _, data in ipairs(notifyData.Bosses) do XNieRManager.UpdateNieRBossData(data) end end XNieRManager.UpdateNieRPODData(notifyData.Support) XNieRManager.RegisterEditBattleProxy() XNieRManager.CheckNieREasterEggStageShow() IsNieREasterEggDataRealPass = notifyData.EasterEggFinish XEventManager.DispatchEvent(XEventId.EVENT_NIER_ACTIVITY_REFRESH) end --处理尼尔角色数据 function XNieRManager.AsyncNieRCharacterData(notifyData) XNieRManager.UpdateNieRCharacterData(notifyData.Character) XEventManager.DispatchEvent(XEventId.EVENT_NIER_CHARACTER_UPDATE, notifyData.Character.CharacterId) end --服务端下推部分结束 --服务器请求部分 function XNieRManager.NieRCharacterChangeFashion(characterId, fashionId, func) XNetwork.Call(NieRRpc.NieRCharacterChangeFashion, { CharacterId = characterId, FashionId = fashionId }, function(res) if res.Code ~= XCode.Success then XUiManager.TipCode(res.Code) return end XNieRManager.GetNieRCharacterByCharacterId(characterId):ChangeNieRFashionId(fashionId) if func then func() end end) end function XNieRManager.NieRUpdateBossScore(func) XNetwork.Call(NieRRpc.NieRUpdateBossScore, { }, function(res) if res.Code ~= XCode.Success then XUiManager.TipCode(res.Code) return end if func then func() end end) end function XNieRManager.NieRUpgradeSupportSkill(skillId, func) XNetwork.Call(NieRRpc.NieRUpgradeSupportSkill, { SkillId = skillId }, function(res) if res.Code ~= XCode.Success then XUiManager.TipCode(res.Code) return end local nierPOD = XNieRManager.GetNieRPODData() nierPOD:AddNieRPODSkillLevelById(skillId) XEventManager.DispatchEvent(XEventId.EVENT_NIER_POD_UPDATE) if func then func() end end) end function XNieRManager.NieRSelectSupportSkill(skillId, func) XNetwork.Call(NieRRpc.NieRSelectSupportSkill, { SkillId = skillId }, function(res) if res.Code ~= XCode.Success then XUiManager.TipCode(res.Code) return end local nierPOD = XNieRManager.GetNieRPODData() nierPOD:SetNieRPODSelectSkillId(skillId) if func then func() end end) end function XNieRManager.NieREasterEggLeaveMessage(messageId, age, labelId, func) XNetwork.Call(NieRRpc.NieREasterEggLeaveMessage, { MessageId = messageId, Age = age, LabelId = labelId }, function(res) if res.Code ~= XCode.Success then XUiManager.TipCode(res.Code) return end if func then func(res.RewardGoodsList) end end) end --服务器请求部分结束 --[[ ================ 本地初始化管理器 ================ ]] function XNieRManager.Init() XNieRManager.CurActivtityConfigChange() XNieRManager.UpdateNieREasterEggData({}) end XNieRManager.Init() return XNieRManager end -- 通知玩法数据 XRpc.NotifyNieRData = function(notifyData) XDataCenter.NieRManager.AsyncNieRData(notifyData) end -- 通知玩法角色数据 XRpc.NotifyNieRCharacterData = function(notifyData) XDataCenter.NieRManager.AsyncNieRCharacterData(notifyData) end --通知玩法BOSS数据 XRpc.NotifyNieRBossData = function(notifyData) local bossData = XDataCenter.NieRManager.UpdateNieRBossData(notifyData.Boss) if bossData:IsBossDeath() then XDataCenter.NieRManager.CheckNieREasterEggStageShow() end end --通知辅助机数据 XRpc.NotifyNieRSupportData = function(notifyData) XDataCenter.NieRManager.UpdateNieRPODData(notifyData.Support) XEventManager.DispatchEvent(XEventId.EVENT_NIER_POD_UPDATE) end --通知彩蛋关数据 XRpc.NotifyNieREasterEggData = function(notifyData) XDataCenter.NieRManager.UpdateNieREasterEggData(notifyData.Messages) end