local CommandTheWorld_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local command_world_opt_pb = require('Proto/command_world_opt_pb') --小兵资源id CommandTheWorld_Model.BoxLevelAndMonsterModelId = { [1] = { left = 21071, right = 21074 }, [2] = { left = 21072, right = 21075 }, [3] = { left = 21073, right = 21076 }, [4] = { left = 21081, right = 21084 }, [5] = { left = 21082, right = 21085 }, [6] = { left = 21083, right = 21086 }, [7] = { left = 21091, right = 21094 }, [8] = { left = 21092, right = 21095 }, [9] = { left = 21093, right = 21096 }, [10] = { left = 21101, right = 21104 }, [11] = { left = 21102, right = 21105 }, [12] = { left = 21103, right = 21106 }, } CommandTheWorld_Model.CommandWorldType = { LocalRank = 1, --本地/单服积分榜单 CrossRank = 2, --跨服积分榜单 } --对应取商店页签的ID CommandTheWorld_Model.StoreID = { Tab1 = 1, Tab2 = 2, Tab3 = 3, } private.BoxInfo = {BoxLevel = 1,BoxExp = 0,} --初始化宝箱信息 private.LocalRankFullData = {} --本服排行全数据 (排行+前三名信息+捐献) private.CrossRankFullData = {} --跨服排行全数据 (排行+前三名信息+捐献) private.LocalRankSimpleData = {} --本服排行简单数据(只有排行数据) private.CrossRankSimpleData = {} --跨服排行简单数据(只有排行数据) function CommandTheWorld_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageCommandWorldGetRankRecord, private.CommandWorldGetRankRecordResp) -- 获取号令天下排行榜榜单镜像(Req) NetManager.RegisterMsgCB(MessageEnums.MessageGetCommandWorldRankAndDevote, private.GetCommandWorldRankAndDevoteResp) -- 获取号令天下排行榜榜单镜像和捐献记录(Req) NetManager.RegisterMsgCB(MessageEnums.MessageGetCommandWorldGuildTreasureBox, private.GetCommandWorldGuildTreasureBoxResp) --获取号令天下势力宝箱信息(Req) NetManager.RegisterMsgCB(MessageEnums.MessageCommandWorldDevoteItems, private.CommandWorldDevoteItemsResp) --玩家在号令天下中捐献道具(Req) NetManager.RegisterMsgCB(MessageEnums.MessageGetCommandWorldHonorRank, private.GetCommandWorldHonorRankResp) -- 获取荣誉榜展示界面信息(Req) NetManager.RegisterMsgCB(MessageEnums.MessageClaimCommandWorldGuildTreasureBox,private.ClaimCommandWorldGuildTreasureBoxResp) --获取号令天下宝箱奖励(Req)。 NetManager.RegisterMsgCB(MessageEnums.MessageClaimCommandWorldHonorTreasure,private.ClaimCommandWorldHonorTreasureResp) --获取荣誉榜宝箱(Req)。 NetManager.RegisterMsgCB(MessageEnums.MessageG2CPushCommandWorldGuildBoxInfo,private.G2CPushCommandWorldGuildBoxInfo) -- 军团积分变化时推送 NetManager.RegisterMsgCB(MessageEnums.MessageG2CPushCommandWorldPushStage,private.G2CPushCommandWorldPushStage) -- 号令天下状态/阶段推送。 end --region 协议相关 --获取号令天下排行榜榜单镜像Req -- type 请求的类型(本服or跨服) 1 本服,2为 跨服 function CommandTheWorld_Model.CommandWorldGetRankRecordReq(type) local msg = command_world_opt_pb.CommandWorldGetRankRecordReq() msg.type = type msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageCommandWorldGetRankRecord, msg) end --获取号令天下排行榜榜单镜像 Resp (不携带前三名的补充信息) --msgResp.type 请求的类型(本服or跨服)。1 本服,2为 跨服 --msgResp.perRankInfo 榜单个人排名信息(通用结构,携带势力简单信息)RankPersonalInfo 类型 function private.CommandWorldGetRankRecordResp(msgResp) logging.log(LTAG.LOG, "CommandWorldGetRankRecordResp",msgResp) if msgResp.Resp.Code == 0 then if msgResp.type == CommandTheWorld_Model.CommandWorldType.LocalRank then private.LocalRankSimpleData = msgResp.perRankInfo elseif msgResp.type == CommandTheWorld_Model.CommandWorldType.CrossRank then private.CrossRankSimpleData = msgResp.perRankInfo end end end --军团积分变化时推送 function private.G2CPushCommandWorldGuildBoxInfo(msgResp) logging.log(LTAG.LOG, "G2CPushCommandWorldGuildBoxInfo",msgResp) local rewardData = private.GetCommandWorldLevelReward(msgResp.info.BoxLevel + 1) if rewardData then private.BoxInfo = {BoxLevel = msgResp.info.BoxLevel,BoxExp = msgResp.info.BoxExp, BoxMaxExpOfLevel = rewardData.Integral,HasClaimedLevel = msgResp.info.HasClaimedLevel} else --达到最大等级时 rewardData = private.GetCommandWorldLevelReward(msgResp.info.BoxLevel) private.BoxInfo = {BoxLevel = msgResp.info.BoxLevel,BoxExp = msgResp.info.BoxExp, BoxMaxExpOfLevel = rewardData.Integral,HasClaimedLevel = msgResp.info.HasClaimedLevel} end private.isShowGuildBoxRedPoint = CTL.CommandTheWorld.HasCanGetRewardInBox() EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRedPoint) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelBox) end --号令天下状态/阶段推送 function private.G2CPushCommandWorldPushStage(msgResp) logging.log(LTAG.LOG, "G2CPushCommandWorldPushStage",msgResp) private.activityID = msgResp.activityID if private.stage ~= msgResp.stage then private.stage = msgResp.stage EventSystem.Dispatch(EventID.UI_OperationActivity_InfoChanged) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRedPoint) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelBox) --进入荣誉榜阶段,需要重新请求,刷数据 if CTL.CommandTheWorld.IsHonorRankStage() then MDL.CommandTheWorld.GetCommandWorldHonorRankReq() end CTL.CommandTheWorld.CheckNeedCloseAllUI() if private.isSingleSerActivity and CTL.CommandTheWorld.IsLocalServerEnd() then EventSystem.Dispatch(EventID.UI_CommandTheWorld_SingleRankOver) end end end --获取号令天下阶段 function CommandTheWorld_Model.GetStage() return private.stage end -- 获取号令天下排行榜榜单镜像和捐献记录 Req -- type 请求的类型(本服or跨服) 1 本服,2为 跨服 function CommandTheWorld_Model.GetCommandWorldRankAndDevoteReq(type) local msg = command_world_opt_pb.GetCommandWorldRankAndDevoteReq() msg.type = type msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageGetCommandWorldRankAndDevote, msg) end -- 获取号令天下排行榜榜单镜像和捐献记录 Resp (携带前三名的补充信息)。 --msgResp.rankAndDevote --捐献记录 CommandWorldRankAndDevote 类型 --[[ message CommandWorldRankAndDevote { optional CommandWorldType type = 1; // 处理的类型。 optional rank.RankPersonalInfo perRankInfo = 2; // 榜单个人排名信息(通用结构,携带势力简单信息)。 repeated other_role.CommonShowRoleHeadInfo perHeadInfo = 3; // 前三名补充信息(这里只会填充玩家等级、头像、头像框,所在服务器在榜单里)。 repeated DevoteRecordInfo devoteRecord = 4; // 捐献历史记录信息。 optional other_role.CommonShowRoleHeadInfo ListOneShowInfo = 5; // 榜一展示信息(内部字段全填充)。 } ]]-- function private.GetCommandWorldRankAndDevoteResp(msgResp) logging.log(LTAG.LOG, "GetCommandWorldRankAndDevoteResp",msgResp) if msgResp.Resp.Code == 0 then if msgResp.rankAndDevote.type == CommandTheWorld_Model.CommandWorldType.LocalRank then --本服 private.LocalRankFullData = msgResp.rankAndDevote elseif msgResp.rankAndDevote.type == CommandTheWorld_Model.CommandWorldType.CrossRank then --跨服 private.CrossRankFullData = msgResp.rankAndDevote end EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelRankAndDevote) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRankReward) end end --获取号令天下势力宝箱信息(Req) function CommandTheWorld_Model.GetCommandWorldGuildTreasureBoxReq() local msg = command_world_opt_pb.GetCommandWorldGuildTreasureBoxReq() msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageGetCommandWorldGuildTreasureBox, msg) end --获取号令天下势力宝箱信息 Resp -- uint64 BoxLevel = 2; // 宝箱当前等级。 -- uint64 BoxExp = 3; // 宝箱当前经验。 -- repeated uint64 HasClaimedLevel = 4; // 玩家已领等级。 function private.GetCommandWorldGuildTreasureBoxResp(msgResp) logging.log(LTAG.LOG, "GetCommandWorldGuildTreasureBoxResp",msgResp) if msgResp.Resp.Code == 0 then local rewardData = private.GetCommandWorldLevelReward(msgResp.info.BoxLevel +1) if rewardData then private.BoxInfo = {BoxLevel = msgResp.info.BoxLevel,BoxExp = msgResp.info.BoxExp, BoxMaxExpOfLevel = rewardData.Integral,HasClaimedLevel = msgResp.info.HasClaimedLevel} else --达到最大等级 rewardData = private.GetCommandWorldLevelReward(msgResp.info.BoxLevel) private.BoxInfo = {BoxLevel = msgResp.info.BoxLevel,BoxExp = msgResp.info.BoxExp, BoxMaxExpOfLevel = rewardData.Integral,HasClaimedLevel = msgResp.info.HasClaimedLevel} end EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelBox) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshGuildReward) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRedPoint) end end --玩家在号令天下中捐献道具(Req) --DevoteItem items = 2; // 玩家捐献的道具。 function CommandTheWorld_Model.CommandWorldDevoteItemsReq(itemId,itemCount) local msg = command_world_opt_pb.CommandWorldDevoteItemsReq() msg.items.itemID = itemId msg.items.itemCount = itemCount msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageCommandWorldDevoteItems, msg) end --玩家在号令天下中捐献道具(Resp) -- CommandWorldRankAndDevote rankAndDevote = 2; // 捐献后,返回用于刷新主界面的信息。 function private.CommandWorldDevoteItemsResp(msgResp) logging.log(LTAG.LOG, "CommandWorldDevoteItemsResp",msgResp) if msgResp.Resp.Code == 0 then if msgResp.rankAndDevote.type == CommandTheWorld_Model.CommandWorldType.LocalRank then --本服 private.LocalRankFullData = msgResp.rankAndDevote elseif msgResp.rankAndDevote.type == CommandTheWorld_Model.CommandWorldType.CrossRank then --跨服 private.CrossRankFullData = msgResp.rankAndDevote end EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelRankAndDevote) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelBox) EventSystem.Dispatch(EventID.UI_CommandTheWorld_ShowUseItemTips) end end --获取荣誉榜展示界面信息(Req) function CommandTheWorld_Model.GetCommandWorldHonorRankReq() local msg = command_world_opt_pb.GetCommandWorldHonorRankReq() msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageGetCommandWorldHonorRank, msg) end --获取荣誉榜展示界面信息(Resp) -- uint32 server = 2; -- repeated HonorRecordInfo HonorRecordInfos = 3; // 荣誉榜记录。 function private.GetCommandWorldHonorRankResp(msgResp) logging.log(LTAG.LOG, "GetCommandWorldHonorRankResp",msgResp) if msgResp.Resp.Code == 0 then private.honorRankData = {server = msgResp.server, honorRecordInfos = msgResp.HonorRecordInfos} EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshHonorRollPanel) end end --// 领取荣誉榜宝箱(Req)。 function CommandTheWorld_Model.ClaimCommandWorldHonorTreasureReq(rankIndex) local msg = command_world_opt_pb.ClaimCommandWorldHonorTreasureReq() msg.rankIndex = rankIndex msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageClaimCommandWorldHonorTreasure, msg) end --// 领取荣誉榜宝箱(Resp) -- uint32 server = 2; -- repeated HonorRecordInfo HonorRecordInfos = 3; // 荣誉榜记录。 function private.ClaimCommandWorldHonorTreasureResp(msgResp) logging.log(LTAG.LOG, "ClaimCommandWorldHonorTreasureResp",msgResp) if msgResp.Resp.Code == 0 then private.honorRankData = {server = msgResp.server, honorRecordInfos = msgResp.HonorRecordInfos} EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshHonorRollReward) end end -- 领取号令天下宝箱奖励(Req) function CommandTheWorld_Model.ClaimCommandWorldGuildTreasureBoxReq(level) local msg = command_world_opt_pb.ClaimCommandWorldGuildTreasureBoxReq() msg.BoxLevel = level msg.activityId = private.activityId NetManager.SendMessage(MessageEnums.MessageClaimCommandWorldGuildTreasureBox, msg) end -- 领取号令天下宝箱奖励(Resp)。 -- repeated uint64 HasClaimedLevel = 4; // 玩家已领等级。 function private.ClaimCommandWorldGuildTreasureBoxResp(msgResp) logging.log(LTAG.LOG, "ClaimCommandWorldGuildTreasureBoxResp",msgResp) if msgResp.Resp.Code == 0 then private.BoxInfo.HasClaimedLevel = msgResp.HasClaimedLevel EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshGuildReward) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshMainPanelBox) EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRedPoint) end end --发送排行的请求 function CommandTheWorld_Model.SendRankReq(type) if type == MDL.CommandTheWorld.CommandWorldType.LocalRank then --请求本服排行 MDL.CommandTheWorld.GetCommandWorldRankAndDevoteReq(MDL.CommandTheWorld.CommandWorldType.LocalRank) else --请求跨服排行 MDL.CommandTheWorld.GetCommandWorldRankAndDevoteReq(MDL.CommandTheWorld.CommandWorldType.CrossRank) end end --endregion --region 活动数据 --获取活动结束时间 function CommandTheWorld_Model.GetActivityEndTime() local activity = MDL.OperationActivity.GetOperationActivityInfo(MDL.OperationActivity.ActivityType.BattlefieldMuster, private.activityId) if activity then return activity.endTime else logging.error(LTAG.ERROR,"CommandTheWorld_Model.GetActivityEndTime not find ",private.activityId) return -1 end end --获取活动开始时间 function CommandTheWorld_Model.GetActivityBeginTime() local activity = MDL.OperationActivity.GetOperationActivityInfo(MDL.OperationActivity.ActivityType.BattlefieldMuster, private.activityId) if activity then return activity.startTime else logging.error(LTAG.ERROR,"CommandTheWorld_Model.GetActivityBeginTime not find ",private.activityId) return -1 end end --获取活动ID function CommandTheWorld_Model.GetActivityId() if private.activityId then return private.activityId end logging.warn(LTAG.WARN, "沙场点兵活动ActivityId为空,请检查!") end --同步活动信息 function CommandTheWorld_Model.SynActivityInfo(info) if info.activityID ~= 0 then logging.log(LTAG.LOG, "沙场点兵 SynActivityInfo", info) private.activityId = info.activityID --活动ID private.score = info.score --玩家当前积分 private.honorHasCanClaimed = info.honorHasCanClaimed --荣誉榜有可领取 private.isShowGuildBoxRedPoint = info.isRedPoint --是否显示势力宝箱红点 private.stage = info.stage --号令天下当前阶段 private.isSingleSerActivity = info.isSingleSerActivity --是否是单服活动 EventSystem.Dispatch(EventID.UI_CommandTheWorld_RefreshRedPoint) EventSystem.Dispatch(EventID.UI_OperationActivity_InfoChanged) --进入荣誉榜阶段,需要重新请求,刷数据 if CTL.CommandTheWorld.IsHonorRankStage() then MDL.CommandTheWorld.GetCommandWorldHonorRankReq() end CTL.CommandTheWorld.SetEndTimer() --设置活动结束定时器 end end --是否显示势力宝箱红点 function CommandTheWorld_Model.IsShowGuildBoxRedPoint() if not MDL.Guild.IsHasGuild() then return false end if not private.isShowGuildBoxRedPoint then private.isShowGuildBoxRedPoint = CTL.CommandTheWorld.HasCanGetRewardInBox() end return private.isShowGuildBoxRedPoint end --号令天下-榜单参数 function private.GetCommandWorldRankParam(type) local info = MDL.OperationActivity.CommandWorldRankParam:GetDataByActivityID_RankType(private.activityId, type) if info == nil then logging.error(LTAG.ERROR,"CommandWorldRankParam:GetDataByActivityID_RankType not find data ",private.activityId,type) return nil end return info end --号令天下-道具货币对应关系 function CommandTheWorld_Model.GetCommandWorldRelation(itemId) local info = MDL.OperationActivity.CommandWorldRelation:GetDataByActivityID_ItemID(private.activityId, itemId) if info == nil then logging.error(LTAG.ERROR,"CommandWorldRelation:GetDataByActivityID_ItemID not find data ",private.activityId,itemId) return nil end return info end --号令天下--获取道具信息 function CommandTheWorld_Model.GetItemsInfo() if private.ItemsInfo == nil then if MDL.OperationActivity.CommandWorldRelation then local data = MDL.OperationActivity.CommandWorldRelation:GetDataByActivityID_ItemID(private.activityId) if data then private.ItemsInfo = {} for i, v in pairs(data) do private.ItemsInfo[v.Sort] = v end end end end return private.ItemsInfo end --号令天下-宝箱等级奖励 function private.GetCommandWorldLevelReward(Level) local info = MDL.OperationActivity.CommandWorldLevelReward:GetDataByActivityID_Level(private.activityId, Level) if info == nil then return nil end return info end --号令天下-本服排行奖励 function CommandTheWorld_Model.GetCommandWorldLocalRanking(rankID) local info = MDL.OperationActivity.CommandWorldLocalRanking:GetDataByActivityID_RankID(private.activityId, rankID) if info == nil then logging.error(LTAG.ERROR,"CommandWorldLocalRanking:GetDataByActivityID_RankID not find data ",private.activityId,rankID) return nil end return info end --号令天下-本服排行奖励数量 function CommandTheWorld_Model.GetCommandWorldLocalRankingCount() local count = MDL.OperationActivity.CommandWorldLocalRanking:GetDataLengthByActivityID(private.activityId) return count end --号令天下-跨服排行奖励 function CommandTheWorld_Model.GetCommandWorldWorldWarZoneRankingCount() local count = MDL.OperationActivity.CommandWorldWarZoneRanking:GetDataLengthByActivityID(private.activityId,RankID) return count end --号令天下-商城 function private.GetCommandWorldStoreByTabId(ID) local info = MDL.OperationActivity.CommandWorldStore:GetDataByActivityID_ID(private.activityId, ID) if info == nil then logging.error(LTAG.ERROR,"CommandWorldStore:GetDataByActivityID_ID not find data ",private.activityId,ID) return nil end return info end --号令天下商城数据 function CommandTheWorld_Model.GetCommandWorldStore() local info = {} for i,v in MDL.OperationActivity.CommandWorldStore:GetEnumeratorByActivityID(private.activityId) do table.insert(info,v) end return info end --号令天下-任务奖励 function private.GetCommandWorldTaskReward(ID) local info = MDL.OperationActivity.CommandWorldTaskReward:GetDataByActivityID_ID(private.activityId, ID) if info == nil then logging.error(LTAG.ERROR,"CommandWorldStore:GetDataByActivityID_ID not find data",private.activityId,ID) return nil end return info end --号令天下-时间轴 function CommandTheWorld_Model.GetCommandWorldTimAxis() local info = MDL.OperationActivity.CommandWorldTimAxis:GetDataByActivityID(private.activityId) if info == nil then logging.error(LTAG.ERROR,"CommandWorldTimAxis:GetDataByActivityID not find data ",private.activityId) return nil end return info end --号令天下-跨服排行奖励 function CommandTheWorld_Model.GetCommandWorldWarZoneRanking(RankID) local info = MDL.OperationActivity.CommandWorldWarZoneRanking:GetDataByActivityID_RankID(private.activityId,RankID) if info == nil then logging.error(LTAG.ERROR,"CommandWorldWarZoneRanking:GetDataByActivityID_RankID not find data",private.activityId,RankID) return nil end return info end --endregion --根据类型获取排行榜刷新时间 function CommandTheWorld_Model.GetRefreshRankTimeByType(type) if type == CommandTheWorld_Model.CommandWorldType.LocalRank then return private.LocalRankFullData.perRankInfo.nextRefreshTime else return private.CrossRankFullData.perRankInfo.nextRefreshTime end end --根据类型获取入榜威望 function CommandTheWorld_Model.GetRankIntegralByType(type) local info = private.GetCommandWorldRankParam(type) if info ~= nil then return info.RankIntegral end return nil end --获取商店页签ID function CommandTheWorld_Model.GetStoreTabId(id) local info = private.GetCommandWorldStoreByTabId(id) if info ~= nil then return info.StoreID end return nil end --战区荣誉榜有奖励可领取 function CommandTheWorld_Model.HasCanGetRewardInHonour() return private.honorHasCanClaimed end --是否为单服活动 function CommandTheWorld_Model.IsSingleSerActivity() return private.isSingleSerActivity end --获取宝箱信息 function CommandTheWorld_Model.GetBoxInfo() return private.BoxInfo end --获取本服排行全信息(排行+前三名信息+捐献) function CommandTheWorld_Model.GetLocalRankFullData() return private.LocalRankFullData end --获取跨服排行全数据(排行+前三名信息+捐献) function CommandTheWorld_Model.GetCrossRankFullData() return private.CrossRankFullData end --获取本服排行信息(只有排行) function CommandTheWorld_Model.GetLocalRankSimpleData() return private.LocalRankSimpleData end --获取跨服排行数据(只有排行) function CommandTheWorld_Model.GetCrossRankSimpleData() return private.CrossRankSimpleData end --获取势力宝箱等级 function CommandTheWorld_Model.GetGuildBoxLevel() if private.BoxInfo.BoxLevel == 0 then return 1 end return private.BoxInfo.BoxLevel end --获取入榜威望 function CommandTheWorld_Model.GetIntegralByType(type) local data = private.GetCommandWorldRankParam(type) if data then return data.RankIntegral else logging.error(LTAG.ERROR,"GetIntegralByType not find data ",type) return -1 end end --荣耀榜相关数据 function CommandTheWorld_Model.GetHonorRankData() return private.honorRankData end --获取势力宝箱列表 function CommandTheWorld_Model.GetCommandWorldLevelReward() local info = {} if MDL.OperationActivity.CommandWorldLevelReward then for i,v in MDL.OperationActivity.CommandWorldLevelReward:GetEnumeratorByActivityID(private.activityId) do table.insert(info,v) end end return info end --判断势力宝箱是否已经领取 function CommandTheWorld_Model.IsGetLevelRewardByLevel(level) for i,v in ipairs(private.BoxInfo.HasClaimedLevel) do if v == level then return true end end return false end --是否满足势力宝箱领取条件 function CommandTheWorld_Model.IsCanGetLevelRewardByLevel(level) if not MDL.Guild.IsHasGuild() then return false end local currentExp = private.BoxInfo.BoxExp for i,v in MDL.OperationActivity.CommandWorldLevelReward:GetEnumeratorByActivityID(private.activityId) do if v.Level == level and currentExp >= v.Integral and not CommandTheWorld_Model.IsGetLevelRewardByLevel(level) then return true end end return false end return CommandTheWorld_Model