---@class KLChallengeBossPanel:UIKmlLuaPanelBase ---@field view KLChallengeBossPanelView local KLChallengeBossPanel = class(UIKmlLuaPanelBase) local this = KLChallengeBossPanel ---创建时调用一次 function this:Init() SL.HideMainPanel() GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLPrivilegeBossOpen/KLPrivilegeBossOpenPanel") GUI:DataListInitData(self.view.gold_boss_level, function() return self:GoldBossBtnDataListItemCountFunc() end, function(realIndex) return self:GoldBossBtnDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:GoldBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:GoldBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.glod_boss_level_btn_all_item = {} GUI:DataListInitData(self.view.gold_boss_data_list, function() return self:GoldBossDataListItemCountFunc() end, function(realIndex) return self:GoldBossDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:GoldBossDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.glod_boss_level_all_item = {} GUI:DataListInitData(self.view.gold_boss_reward, function() return self:GoldRewardDataListItemCountFunc() end, function(realIndex) return self:GoldRewardDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:GoldRewardDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:GoldRewardDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.outdoor_reward_level_all_item = {} GUI:DataListInitData(self.view.outdoor_boss_level_data_list, function() return self:OutdoorBossBtnDataListItemCountFunc() end, function(realIndex) return self:OutdoorBossBtnDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:OutdoorBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:OutdoorBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.outdoor_boss_level_btn_all_item = {} GUI:DataListInitData(self.view.outdoor_boss_line_data_list, function() return self:OutdoorBossLineDataListItemCountFunc() end, function(realIndex) return self:OutdoorBossLineDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:OutdoorBossLineDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:OutdoorBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.outdoor_boss_line_data_list_all_item = {} GUI:DataListInitData(self.view.outdoor_boss_reward_data_list, function() return self:OutdoorRewardDataListItemCountFunc() end, function(realIndex) return self:OutdoorRewardDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:OutdoorRewardDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:OutdoorRewardDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.glod_reward_level_all_item = {} GUI:DataListInitData(self.view.secret_boss_level_data_list, function() return self:SecretBossBtnDataListItemCountFunc() end, function(realIndex) return self:SecretBossBtnDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SecretBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SecretBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.secrect_boss_level_btn_all_item = {} GUI:DataListInitData(self.view.secret_boss_line_data_list, function() return self:SecretBossLineDataListItemCountFunc() end, function(realIndex) return self:SecretBossLineDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SecretBossLineDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SecretBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.secrect_boss_line_data_list_all_item = {} GUI:DataListInitData(self.view.secret_reward_data_list, function() return self:SecretRewardDataListItemCountFunc() end, function(realIndex) return self:SecretRewardDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SecretRewardDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SecretRewardDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.secrect_reward_level_all_item = {} GUI:DataListInitData(self.view.secret_reward_box_data_list, function() return self:SecretRewardBoxDataListItemCountFunc() end, function(realIndex) return self:SecretRewardBoxDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SecretRewardBoxDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SecretRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.secrect_reward_box_level_all_item = {} GUI:DataListInitData(self.view.privilege_boss_level_data_list, function() return self:PrivilegeBossBtnDataListItemCountFunc() end, function(realIndex) return self:PrivilegeBossBtnDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:PrivilegeBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:PrivilegeBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.privilege_boss_level_btn_all_item = {} GUI:DataListInitData(self.view.privilege_boss_reward_data_list, function() return self:PrivilegeRewardDataListItemCountFunc() end, function(realIndex) return self:PrivilegeRewardDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:PrivilegeRewardDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:PrivilegeRewardDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.privilege_reward_level_all_item = {} --圣域BOSS GUI:DataListInitData(self.view.sanctuary_boss_level_data_list, function() return self:SanctuaryBossBtnDataListItemCountFunc() end, function(realIndex) return self:SanctuaryBossBtnDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SanctuaryBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SanctuaryBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.sanctuary_boss_level_btn_all_item = {} GUI:DataListInitData(self.view.sanctuary_boss_line_data_list, function() return self:SanctuaryBossLineDataListItemCountFunc() end, function(realIndex) return self:SanctuaryBossLineDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SanctuaryBossLineDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SanctuaryBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) end) ---@type KLUIChallengeBossLineItem[] self.sanctuary_boss_line_data_list_all_item = {} GUI:DataListInitData(self.view.sanctuary_reward_data_list, function() return self:SanctuaryRewardDataListItemCountFunc() end, function(realIndex) return self:SanctuaryRewardDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SanctuaryRewardDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SanctuaryRewardDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.sanctuary_reward_level_all_item = {} GUI:DataListInitData(self.view.sanctuary_reward_box_data_list, function() return self:SanctuaryRewardBoxDataListItemCountFunc() end, function(realIndex) return self:SanctuaryRewardBoxDataListItemGetFunc(realIndex) end, function(realIndex, kmlcontrol) return self:SanctuaryRewardBoxDataListItemInitFunc(realIndex, kmlcontrol) end, function(realIndex, kmlcontrol) return self:SanctuaryRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol) end) self.sanctuary_reward_box_level_all_item = {} self.secretBossLineLoadEnd = nil end ---创建或者刷新界面数据时调用 function this:Refresh() --SL:LogTable(self.args,true) if self.args and self.args.monsterType then --MonsterType 1黄金 ,2野外,3秘境,4特权 self.monsterId = self.args.monsterId ---转换一下,策划说按cfg_BOSS_challenge表的type走,之前黄金和野外是反的 if self.args.monsterType == 2 then self.args.monsterType = 1 elseif self.args.monsterType == 1 then self.args.monsterType = 2 end if self.args.monsterType == 2 then --self.view.boss_1_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_1_toggle) elseif self.args.monsterType == 1 then --self.view.boss_2_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_2_toggle) elseif self.args.monsterType == 3 then --self.view.boss_3_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_3_toggle) elseif self.args.monsterType == 4 then --self.view.boss_4_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_4_toggle) elseif self.args.monsterType == 6 then --self.view.boss_4_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_6_toggle) end else self.monsterId = nil --self.view.boss_1_toggle:SetTogDefaultThis() GUI:SetTogDefaultThis(self.view.boss_1_toggle) end -- local level = InfoManager.newVipInfo.vipLevel -- if level > 0 or PrivilegeCardManager.HavePriviege() then -- else -- GUI:setVisible(self.view.boss_4,false) -- end end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:SetToggleOnValueChange(self.view.boss_1_toggle, self, self.Boss1Click) GUI:SetToggleOnValueChange(self.view.boss_2_toggle, self, self.Boss2Click) GUI:SetToggleOnValueChange(self.view.boss_3_toggle, self, self.Boss3Click) GUI:SetToggleOnValueChange(self.view.boss_4_toggle, self, self.Boss4Click) GUI:SetToggleOnValueChange(self.view.boss_5_toggle, self, self.Boss5Click) GUI:SetToggleOnValueChange(self.view.boss_6_toggle, self, self.Boss6Click) GUI:AddOnClickEvent(self.view.btn_close, self, self.CloseOnclick) GUI:AddOnClickEvent(self.view.privilege_boss_join_btn, self, self.privilege_boss_join) SL:RegisterLuaNetMsg(LuaMessageIdToClient.NEAREST_MONSTER, self.MonserPos, self) SL:RegisterLuaNetMsg(LuaMessageIdToClient.SECRET_REALM_COUNT, self.SecretCount, self) SL:RegisterLuaNetMsg(LuaMessageIdToClient.RES_PRIVILEGE_BOSS_PANEL, self.RES_PRIVILEGE_BOSS_PANEL, self) SL:RegisterLuaNetMsg(LuaMessageIdToClient.MONSTER_COUNT_RESULT_BY_ID, self.MONSTER_COUNT_RESULT_BY_ID, self) SL:RegisterLuaNetMsg(LuaMessageIdToClient.SEND_SECRET_REALM_MONSTER_COUNT, self.MonserCopyCount, self) SL:RegisterLUAEvent(LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS, self.LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS, self) end function this:CloseOnclick() GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel") SL.ShowMainPanel() end function this:Boss1Click(kmlCtrl, eventData, args) if args[1] then GUI:setColor(self.view.boss_1_toggle_t, "#e6e6e6") self:ShowBossPanel(EBossChallengeType.Gold) self:SelectGoldBoss() else GUI:setColor(self.view.boss_1_toggle_t, "#999999") end end function this:Boss2Click(kmlCtrl, eventData, args) if args[1] then self:ShowBossPanel(EBossChallengeType.Field) self:SelectOutdoorBoss() self.monsterId = nil else GUI:setColor(self.view.boss_2_toggle_t, "#999999") end end function this:Boss3Click(kmlCtrl, eventData, args) if args[1] then GUI:setColor(self.view.boss_3_toggle_t, "#e6e6e6") self:ShowBossPanel(EBossChallengeType.Secret) self:SelectSecretBoss() self.monsterId = nil else GUI:setColor(self.view.boss_3_toggle_t, "#999999") end end function this:Boss4Click(kmlCtrl, eventData, args) if args[1] then GUI:setColor(self.view.boss_4_toggle_t, "#e6e6e6") self:ShowBossPanel(EBossChallengeType.Privilege) self:SelectPrivilegeBoss() self.monsterId = nil else GUI:setColor(self.view.boss_4_toggle_t, "#999999") end end function this:Boss5Click(kmlCtrl, eventData, args) if args[1] then GUI:setColor(self.view.boss_5_toggle_t, "#e6e6e6") self:ShowBossPanel(0) ---跨服boss不在表类型里 self.monsterId = nil self.kuaFuInfoItem = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLKuaFuBossInfo/KLKuaFuBossInfoItem", self.view.root, self) else GUI:setColor(self.view.boss_5_toggle_t, "#999999") self.kuaFuInfoItem = nil GUI:UIPanel_Close("dev/outui/ChallengeBoss/Item/KLKuaFuBossInfo/KLKuaFuBossInfoItem") end end function this:Boss6Click(kmlCtrl, eventData, args) if args[1] then GUI:setColor(self.view.boss_6_toggle_t, "#e6e6e6") self:ShowBossPanel(EBossChallengeType.Sanctuary) self:SelectSanctuaryBoss() self.monsterId = nil else GUI:setColor(self.view.boss_6_toggle_t, "#999999") end end function this:ShowBossPanel(type) GUI:setVisible(self.view.gold_boss_panel, type == EBossChallengeType.Gold) GUI:setVisible(self.view.outdoor_boss_panel, type == EBossChallengeType.Field) GUI:setVisible(self.view.mi_boss_panel, type == EBossChallengeType.Secret) GUI:setVisible(self.view.privilege_boss_panel, type == EBossChallengeType.Privilege) GUI:setVisible(self.view.sanctuary_boss_panel, type == EBossChallengeType.Sanctuary) end --黄金boss function this:SelectGoldBoss() local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if self.monsterId then playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level end if not self.allGoldLevel then self.allGoldLevel = {} --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType') local allBoss = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1) for i, boss in ipairs(allBoss) do local level = boss.level if not table.contains(self.allGoldLevel, level) then table.insert(self.allGoldLevel, level) end end self.select_gold_level = nil local index = 0 for i, level in ipairs(self.allGoldLevel) do if not self.select_gold_level then self.select_gold_level = level index = i else if level <= playerLevel and level > self.select_gold_level then self.select_gold_level = level index = i end end end local percentage = index / #self.allGoldLevel percentage = percentage - percentage % 0.00001 GUI:DataListUpdateData(self.view.gold_boss_level) GUI:SetScrollView_scrollpos(self.view.gold_boss_select, percentage) end self:RefreshGoldBoss() end function this:RefreshGoldBoss() if not self.monsterId then end --self.GoldOneLevel = SL:GetConfigMultiKeys("cfg_BOSS_challenge",1,self.select_gold_level,"monsterType","level") self.GoldOneLevel = {} local index = 0 if self.monsterId then local tab = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1) local isFind = false for i, v in ipairs(tab) do if v.level == self.select_gold_level then table.insert(self.GoldOneLevel, v) if v.monsterid == self.monsterId then isFind = true end if not isFind then index = index + 1 end end end --GUI:DataListUpdateData(self.view.gold_boss_data_list) --GUI:SetScrollView_scrollpos(self.view.gold_boss_view, index) SL:ScheduleOnce(0.1, function() self.monsterId = nil if self.count_data then self:MonserCount(nil, self.count_data) end end) else --GUI:DataListUpdateData(self.view.gold_boss_data_list) --GUI:SetScrollView_scrollpos(self.view.gold_boss_view, 0) local tab = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 1) for i, v in ipairs(tab) do if v.level == self.select_gold_level then table.insert(self.GoldOneLevel, v) end end --GUI:DataListUpdateData(self.view.gold_boss_data_list) --TODO CH self.monsterId = nil end self.GoldAllRwward = {} if #self.GoldOneLevel > 0 then local Rwward = self.GoldOneLevel[1].monsterDrop local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB) for i, one_reward in ipairs(Rwward) do if one_reward[1] == baseCareer then table.insert(self.GoldAllRwward, one_reward[2]) end end end GUI:DataListUpdateData(self.view.gold_boss_reward) local message = {} for i, v in ipairs(self.GoldOneLevel) do table.insert(message, { id = v.id, state = 1 }) end GUI:DataListUpdateData(self.view.gold_boss_data_list,true,function() SL:ScheduleOnce(0.1, function() SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, message) GUI:SetScrollView_scrollpos(self.view.gold_boss_view, index) end) end) end function this:GoldBossBtnDataListItemCountFunc() return #self.allGoldLevel end function this:GoldBossBtnDataListItemGetFunc(realIndex) local data = self.allGoldLevel[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossBtnItem/KLUIChallengeBossBtnItem", self.view.gold_boss_level, self, {}, true) self.glod_boss_level_btn_all_item[item.view.root] = item return item.view.root end function this:GoldBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end function this:GoldBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.allGoldLevel[realIndex + 1] self.glod_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_gold_level, self) if data == self.select_gold_level then self.GoldBossLevelBtn = self.glod_boss_level_btn_all_item[kmlcontrol] end end function this:GoldBossDataListItemCountFunc() return #self.GoldOneLevel end function this:GoldBossDataListItemGetFunc(realIndex) local data = self.GoldOneLevel[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossItem/KLUIChallengeBossItem", self.view.gold_boss_data_list, self, {}, true) self.glod_boss_level_all_item[realIndex + 1] = item return item.view.root end function this:GoldBossDataListItemInitFunc(realIndex, kmlcontrol) end function this:GoldBossDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.GoldOneLevel[realIndex + 1] --SL:LogTable(data,true) self.glod_boss_level_all_item[realIndex + 1]:RefreshItem(data, self.select_gold_level, self) if self.monsterId == data.monsterid then self.glod_boss_level_all_item[realIndex + 1]:ShowSelectImg() end end function this:HideSelectLevel() self.GoldBossLevelBtn:HideItem() end function this:SelectLevel(level, Btn) self.monsterId = nil self.GoldBossLevelBtn = Btn self.select_gold_level = level self:RefreshGoldBoss() end function this:GoldRewardDataListItemCountFunc() return #self.GoldAllRwward end function this:GoldRewardDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.gold_boss_reward, self, {}, true) self.glod_reward_level_all_item[item.view.root] = item return item.view.root end function this:GoldRewardDataListItemInitFunc(realIndex, kmlcontrol) end function this:GoldRewardDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.GoldAllRwward[realIndex + 1] self.glod_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_gold_level, self) end --野外boss function this:SelectOutdoorBoss() local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) -- if self.monsterId then -- playerLevel = SL:GetConfig("cfg_BOSS_challenge",self.monsterId,"monsterid").level -- end if not self.allOutdoorLevel then self.allOutdoorLevel = {} --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType') self.allOutdoorLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 2) self.select_outdoor_level = nil self.select_outdoor_index = 1 local index = 0 for i, data in ipairs(self.allOutdoorLevel) do data.index = i local level = data.level if self.monsterId then if data.monsterid == self.monsterId then self.select_outdoor_level = level self.select_outdoor_index = i index = i end else if not self.select_outdoor_level then self.select_outdoor_level = level self.select_outdoor_index = i index = i else if level <= playerLevel and level > self.select_outdoor_level then self.select_outdoor_level = level self.select_outdoor_index = i index = i end end end end local percentage = index / #self.allOutdoorLevel percentage = percentage - percentage % 0.00001 GUI:DataListUpdateData(self.view.outdoor_boss_level_data_list) GUI:SetScrollView_scrollpos(self.view.outdoor_boss_select, percentage) end self:RefreshOutdoorBoss() end function this:RefreshOutdoorBoss() self.current_outdoor_data = nil local current_data for i, data in ipairs(self.allOutdoorLevel) do local level = data.level if data.index == self.select_outdoor_index then self.current_outdoor_data = data break end end self.OutdoorAllRwward = {} local monsterid = nil if self.current_outdoor_data then monsterid = self.current_outdoor_data.monsterid local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id') local name = tab.name local icon = tab.icon local appr = tab.appr local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path GUI:Text_setString(self.view.outdoor_boss_name, name) local mscale = "" if self.current_outdoor_data.size then local scale = math.ceil(self.current_outdoor_data.size / 100) mscale = scale .. "," .. scale .. "," .. scale end GUI:Model_setSrc(self.view.outdoor_boss_path, path, mscale) if self.current_outdoor_data.offset and #self.current_outdoor_data.offset >= 2 then GUI:setPosition(self.view.outdoor_boss_path, self.current_outdoor_data.offset[1], self.current_outdoor_data.offset[2]) end GUI:DataListUpdateData(self.view.outdoor_boss_line_data_list,true,function() SL:ScheduleOnce(Time.deltaTime, function() SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, { { id = self.current_outdoor_data.id, state = 1 } }) end) end) if self.current_outdoor_data then local Rwward = self.current_outdoor_data.monsterDrop local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB) for i, one_reward in ipairs(Rwward) do if one_reward[1] == baseCareer then table.insert(self.OutdoorAllRwward, one_reward[2]) end end end GUI:DataListUpdateData(self.view.outdoor_boss_reward_data_list) end InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.outdoor_boss_Integral_BG,self.view.outdoor_boss_Integral_Text,monsterid) end function this:MONSTER_COUNT_RESULT_BY_ID(id, message) self.count_data = message self:MonserCount(id, self.count_data) end function this:MonserCount(id, message) --SL:LogError("MonserCount") --SL:LogTable(message,true) if not message then return end if self.current_outdoor_data then local id = tostring(self.current_outdoor_data.id) if message[id] then local msg = message[id] for i = 1, 10000, 1 do if msg[tostring(i)] and self.outdoor_boss_line_data_list_all_item[i] then self.outdoor_boss_line_data_list_all_item[i]:MonserCount(nil, msg[tostring(i)]) else break end end end end if self.GoldOneLevel and #self.GoldOneLevel > 0 then for i = 1, 10000, 1 do if self.GoldOneLevel[i] then local id = tostring(self.GoldOneLevel[i].id) if message[id] and self.glod_boss_level_all_item[i] then self.glod_boss_level_all_item[i]:MonserCount(nil, message[id]) else break end else break end end end if self.current_Sanctuary_data then local id = tostring(self.current_Sanctuary_data.id) if message[id] then local msg = message[id] for i = 1, 10000, 1 do if msg[tostring(i)] and self.sanctuary_boss_line_data_list_all_item[i] then self.sanctuary_boss_line_data_list_all_item[i]:MonserCount(nil, msg[tostring(i)]) else break end end end end end function this:OutdoorBossBtnDataListItemCountFunc() return #self.allOutdoorLevel end function this:OutdoorBossBtnDataListItemGetFunc(realIndex) local data = self.allOutdoorLevel[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.outdoor_boss_level_data_list, self, {}, true) self.outdoor_boss_level_btn_all_item[item.view.root] = item return item.view.root end function this:OutdoorBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end function this:OutdoorBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.allOutdoorLevel[realIndex + 1] self.outdoor_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_outdoor_index, self, 2) if data.index == self.select_outdoor_index then self.OutdoorBossLevelBtn = self.outdoor_boss_level_btn_all_item[kmlcontrol] end end function this:HideSelectLevelOutdoor() self.OutdoorBossLevelBtn:HideItem() end function this:SelectLevelOutdoor(level, Btn) self.OutdoorBossLevelBtn = Btn self.select_outdoor_index = level self:RefreshOutdoorBoss() end function this:OutdoorBossLineDataListItemCountFunc() return #self.current_outdoor_data.mapId end function this:OutdoorBossLineDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.outdoor_boss_line_data_list, self, {}, true) self.outdoor_boss_line_data_list_all_item[realIndex + 1] = item return item.view.root end function this:OutdoorBossLineDataListItemInitFunc(realIndex, kmlcontrol) end function this:OutdoorBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.current_outdoor_data.mapId[realIndex + 1] local move = self.current_outdoor_data.mapMoveId[realIndex + 1] local monsterid = self.current_outdoor_data.monsterid self.outdoor_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(monsterid, data, move, self, 210) end function this:OutdoorRewardDataListItemCountFunc() return #self.OutdoorAllRwward end function this:OutdoorRewardDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.outdoor_boss_reward_data_list, self, {}, true) self.outdoor_reward_level_all_item[item.view.root] = item return item.view.root end function this:OutdoorRewardDataListItemInitFunc(realIndex, kmlcontrol) end function this:OutdoorRewardDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.OutdoorAllRwward[realIndex + 1] self.outdoor_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_gold_level, self) end --秘境boss function this:SelectSecretBoss() local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if self.monsterId then playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level end if not self.allSecretLevel then self.allSecretLevel = {} --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType') self.allSecretLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", 3) self.select_Secret_level = nil local index = 0 for i, data in ipairs(self.allSecretLevel) do local level = data.level if not self.select_Secret_level then self.select_Secret_level = level index = i else if level <= playerLevel and level > self.select_Secret_level then self.select_Secret_level = level index = i end end end local percentage = index / #self.allSecretLevel percentage = percentage - percentage % 0.00001 GUI:DataListUpdateData(self.view.secret_boss_level_data_list) GUI:SetScrollView_scrollpos(self.view.secret_boss_level_select, percentage) end self:RefreshSecretBoss() end function this:RefreshSecretBoss() self.current_secrect_data = nil local current_data for i, data in ipairs(self.allSecretLevel) do local level = data.level if level == self.select_Secret_level then self.current_secrect_data = data break end end self.SecretAllRwward = {} self.SecretAllBoxRwward = {} self.SecretAllLine = {} self.repId = 0 local monsterid = nil if self.current_secrect_data then monsterid = self.current_secrect_data.monsterid local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id') local name = tab.name local icon = tab.icon local appr = tab.appr local repId = self.current_secrect_data.repId local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path GUI:Text_setString(self.view.secret_boss_name, name) local mscale = "" if self.current_secrect_data.size then local scale = math.ceil(self.current_secrect_data.size / 100) mscale = scale .. "," .. scale .. "," .. scale end GUI:Model_setSrc(self.view.secret_boss_path, path, mscale) if self.current_secrect_data.offset and #self.current_secrect_data.offset >= 2 then GUI:setPosition(self.view.secret_boss_path, self.current_secrect_data.offset[1], self.current_secrect_data.offset[2]) end --SL:LogError(#self.current_secrect_data.mapId) if self.current_secrect_data then local Rwward = self.current_secrect_data.monsterDrop local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB) for i, one_reward in ipairs(Rwward) do if one_reward[1] == baseCareer then table.insert(self.SecretAllRwward, one_reward[2]) end end local box = self.current_secrect_data.boxDrop if box and #box > 0 then table.insert(self.SecretAllBoxRwward, box[1]) end end local tab = SL:GetConfigMultiKeys('cfg_repfairyland_monster', repId, 'id') self.SecretAllLine = tab.monster1 self.repId = repId GUI:DataListUpdateData(self.view.secret_boss_line_data_list) GUI:DataListUpdateData(self.view.secret_reward_box_data_list) GUI:DataListUpdateData(self.view.secret_reward_data_list) SL:SendLuaNetMsg(LuaMessageIdToSever.GET_SECRET_REALM_MONSTER_COUNT, { repId = self.repId }) end GUI:Text_setString(self.view.last_num, "") SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_SECRET_REALM_COUNT, {}) InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.mijing_boss_Integral_BG,self.view.mijing_boss_Integral_Text,monsterid) end function this:SecretCount(id, message) --SL:LogTable(message,true) self.last_num = message.count GUI:Text_setString(self.view.last_num, tostring(message.count)) end --圣域boss function this:SelectSanctuaryBoss() local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if self.monsterId then playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level end if not self.allSanctuaryLevel or table.count(self.allSanctuaryLevel) == 0 then self.allSanctuaryLevel = {} self.allSanctuaryLevel = SL:FindConfigs("cfg_BOSS_challenge", "monsterType", EBossChallengeType.Sanctuary) self.select_Sanctuary_level = nil local index = 0 for i, data in ipairs(self.allSanctuaryLevel) do local level = data.level if not self.select_Sanctuary_level then self.select_Sanctuary_level = level index = i else if level <= playerLevel and level > self.select_Sanctuary_level then self.select_Sanctuary_level = level index = i end end end local percentage = index / #self.allSanctuaryLevel percentage = percentage - percentage % 0.00001 GUI:DataListUpdateData(self.view.sanctuary_boss_level_data_list) GUI:SetScrollView_scrollpos(self.view.sanctuary_boss_level_select, percentage) end self:RefreshSanctuaryBoss() end function this:RefreshSanctuaryBoss() self.current_Sanctuary_data = nil local current_data for i, data in ipairs(self.allSanctuaryLevel) do local level = data.level if level == self.select_Sanctuary_level then self.current_Sanctuary_data = data break end end self.sanctuaryAllRwward = {} self.sanctuaryAllBoxRwward = {} self.sanctuaryAllLine = {} self.repId = 0 local monsterid = nil if self.current_Sanctuary_data then monsterid = self.current_Sanctuary_data.monsterid local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id') local name = tab.name local icon = tab.icon local appr = tab.appr local mapData = self.current_Sanctuary_data.mapId[1] local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path GUI:Text_setString(self.view.sanctuary_boss_name, name) local mscale = "" if self.current_Sanctuary_data.size then local scale = math.ceil(self.current_Sanctuary_data.size / 100) mscale = scale .. "," .. scale .. "," .. scale end GUI:Model_setSrc(self.view.sanctuary_boss_path, path, mscale) if self.current_Sanctuary_data.offset and #self.current_Sanctuary_data.offset >= 2 then GUI:setPosition(self.view.sanctuary_boss_path, self.current_Sanctuary_data.offset[1], self.current_Sanctuary_data.offset[2]) end --SL:LogError(#self.current_Sanctuary_data.mapId) if self.current_Sanctuary_data then local Rwward = self.current_Sanctuary_data.monsterDrop local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB) for i, one_reward in ipairs(Rwward) do if one_reward[1] == baseCareer then table.insert(self.sanctuaryAllRwward, one_reward[2]) end end local box = self.current_Sanctuary_data.boxDrop if box and #box > 0 then table.insert(self.sanctuaryAllBoxRwward, box[1]) end end self.sanctuaryAllLine = self.current_Sanctuary_data.mapId self.repId = mapData[1] GUI:DataListUpdateData(self.view.sanctuary_boss_line_data_list) GUI:DataListUpdateData(self.view.sanctuary_reward_box_data_list) GUI:DataListUpdateData(self.view.sanctuary_reward_data_list) GUI:DataListUpdateData(self.view.sanctuary_boss_line_data_list,true,function() SL:ScheduleOnce(Time.deltaTime, function() SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_MONSTER_COUNT_BY_ID, { { id = self.current_Sanctuary_data.id, state = 1 } }) end) end) end GUI:Text_setString(self.view.last_num, "") InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.sanctuary_boss_Integral_BG,self.view.sanctuary_boss_Integral_Text,monsterid) --SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_GET_SECRET_REALM_COUNT, {}) end function this:SanctuaryCount(id, message) --SL:LogTable(message,true) self.last_num = message.count GUI:Text_setString(self.view.last_num, tostring(message.count)) end function this:isJoin() if not self.last_num or self.last_num < 1 then return false end return true end function this:MonserCopyCount(id, message) --SL:LogTable(message,true) if not self.secretBossLineLoadEnd then return end if not message then return end if not message["1"] then return end if not self.repId then return end if message["1"].repId ~= self.repId then return end for i = 1, 1000, 1 do if message[tostring(i)] then if self.secrect_boss_line_data_list_all_item[i] then self.secrect_boss_line_data_list_all_item[i]:MonserCopyCount(nil, message[tostring(i)]) end else break end end end function this:SecretBossBtnDataListItemCountFunc() return #self.allSecretLevel end function this:SecretBossBtnDataListItemGetFunc(realIndex) local data = self.allSecretLevel[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.secret_boss_level_data_list, self, {}, true) self.secrect_boss_level_btn_all_item[item.view.root] = item return item.view.root end function this:SecretBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end function this:SecretBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.allSecretLevel[realIndex + 1] self.secrect_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_Secret_level, self, 3) if data.level == self.select_Secret_level then self.SecrectrBossLevelBtn = self.secrect_boss_level_btn_all_item[kmlcontrol] end end function this:HideSelectLevelSecret() self.SecrectrBossLevelBtn:HideItem() end function this:SelectLevelSecret(level, Btn) self.SecrectrBossLevelBtn = Btn self.select_Secret_level = level self:RefreshSecretBoss() end function this:HideSanctuaryLevelSecret() self.sanctuaryBossLevelBtn:HideItem() end function this:SelectSanctuarySecret(level, Btn) self.sanctuaryBossLevelBtn = Btn self.select_Sanctuary_level = level self:RefreshSanctuaryBoss() end function this:SecretBossLineDataListItemCountFunc() return #self.SecretAllLine end function this:SecretBossLineDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.secret_boss_line_data_list, self, { is_copy = 1 }, true, function(_item) self.secrect_boss_line_data_list_all_item[realIndex + 1] = _item if not self.secretBossLineLoadEnd then self.secretBossLineLoadEnd = true SL:SendLuaNetMsg(LuaMessageIdToSever.GET_SECRET_REALM_MONSTER_COUNT, { repId = self.repId }) end end) self.secrect_boss_line_data_list_all_item[realIndex + 1] = item return item.view.root end function this:SecretBossLineDataListItemInitFunc(realIndex, kmlcontrol) end function this:SecretBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.SecretAllLine[realIndex + 1] --local monsterid = self.current_secrect_data.monsterid self.secrect_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(self.repId, data, 0, self, 210) end function this:SecretRewardDataListItemCountFunc() return #self.SecretAllRwward end function this:SecretRewardDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.secret_reward_data_list, self, {}, true) self.secrect_reward_level_all_item[item.view.root] = item return item.view.root end function this:SecretRewardDataListItemInitFunc(realIndex, kmlcontrol) end function this:SecretRewardDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.SecretAllRwward[realIndex + 1] self.secrect_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self) end function this:SecretRewardBoxDataListItemCountFunc() return #self.SecretAllBoxRwward end function this:SecretRewardBoxDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.secret_reward_box_data_list, self, {}, true) self.secrect_reward_box_level_all_item[item.view.root] = item return item.view.root end function this:SecretRewardBoxDataListItemInitFunc(realIndex, kmlcontrol) end function this:SecretRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.SecretAllBoxRwward[realIndex + 1] self.secrect_reward_box_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self) end function this:MonserPos(id, message) if not message then return end if not message.mapCfgId or not message.line or not message.monsterCfgId then return end if SL:GetMetaValue(EMetaVarGetKey.MAP_ID) == message.mapCfgId and SL:GetMetaValue(EMetaVarGetKey.MAP_LINE) == message.line then else if InfoManager.redNameInfo:IsLimitTransferById(SL:GetMetaValue("MAIN_ACTOR_ID")) then SL:TipMessage(SL:GetConfig('cfg_string', 262).text, 1, NoticeType.NoticeMid)--"pk值较高,无法传送", return end end --SL:LogError(table.toString(message)) SL:StopOnHook(true) this.pos_monster_id = message.monsterCfgId GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel") this.map_data = { message.mapCfgId, message.line, message.x, message.y } SL:Pathfinding(message.mapCfgId, message.line, message.x, message.y, this.MonserPosEnd, this.pos_monster_id) SL.ShowMainPanel() end function this:MonserPosEnd(pos) --SL:StartOnHook(true,true) if pos and pos.x and pos.z then this.scheduleId = SL:ScheduleOnce(0.1, function() SL:Pathfinding(this.map_data[1], this.map_data[2], pos.x, pos.z, this.BossPointOnHook) end) else SL:StartOnHook(true, true, this.pos_monster_id) end end function this:BossPointOnHook() SL:StartOnHook(true, true, this.pos_monster_id) end function this:Close() self.monsterId = nil self:UnRegistEvents() end ---选择特权boss function this:SelectPrivilegeBoss() local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if self.monsterId then playerLevel = SL:GetConfig("cfg_BOSS_challenge", self.monsterId, "monsterid").level end if not self.allPrivilegeLevel then self.allPrivilegeLevel = {} --local allBoss = SL:GetConfigMultiKeys('cfg_BOSS_challenge', 1, 'monsterType') local allBoss = SL:FindConfigs("cfg_rep", "type", 18001) for i, boss in ipairs(allBoss) do boss.index = i table.insert(self.allPrivilegeLevel, boss) end self.select_privilege_level = nil self.select_privilege_index = nil local index = 0 for i, boss in ipairs(self.allPrivilegeLevel) do local level = boss.level[1] if not self.select_privilege_level then self.select_privilege_level = level self.select_privilege_index = i index = i else if level <= playerLevel and level > self.select_privilege_level then self.select_privilege_level = level self.select_privilege_index = i index = i end end end local percentage = index / #self.allPrivilegeLevel percentage = percentage - percentage % 0.00001 GUI:DataListUpdateData(self.view.privilege_boss_level_data_list) GUI:SetScrollView_scrollpos(self.view.privilege_boss_select, percentage) end self:RefreshPrivilegeBoss() end function this:RefreshPrivilegeBoss() self.current_Privilege_data = self.allPrivilegeLevel[self.select_privilege_index] --SL:LogTable(self.current_Privilege_data,true) self.PrivilegeAllRwward = {} self.repId = 0 local monsterid = nil if self.current_Privilege_data then monsterid = self.current_Privilege_data.monsterUI local tab = SL:GetConfigMultiKeys('cfg_monster', monsterid, 'id') local name = tab.name local icon = tab.icon local appr = tab.appr local path = SL:GetConfigMultiKeys('cfg_model_monster', appr, 'id').path GUI:Text_setString(self.view.privilege_boss_name, name) local mscale = "" if self.current_Privilege_data.size then local scale = math.ceil(self.current_Privilege_data.size / 100) mscale = scale .. "," .. scale .. "," .. scale end GUI:Model_setSrc(self.view.privilege_boss_path, path, mscale) if self.current_Privilege_data.offset and #self.current_Privilege_data.offset >= 2 then GUI:setPosition(self.view.privilege_boss_path, self.current_Privilege_data.offset[1], self.current_Privilege_data.offset[2]) end local baseCareer = SL:GetMetaValue(EMetaVarGetKey.JOB) for i, one_reward in ipairs(self.current_Privilege_data.UIJobReward) do if one_reward[1] == baseCareer then table.insert(self.PrivilegeAllRwward, one_reward[2]) end end GUI:DataListUpdateData(self.view.privilege_boss_reward_data_list) end GUI:Text_setString(self.view.privilege_boss_last_num, "") self.privilege_num = 0 SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_PRIVILEGE_BOSS_PANEL, { configId = self.current_Privilege_data.id }) InfoManager.uiHuntingDemonsInfo:SetIntegralInControl(self.view.tequan_boss_Integral_BG,self.view.tequan_boss_Integral_Text,monsterid) end function this:PrivilegeBossBtnDataListItemCountFunc() return #self.allPrivilegeLevel end function this:PrivilegeBossBtnDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.privilege_boss_level_data_list, self, {}, true) self.privilege_boss_level_btn_all_item[item.view.root] = item return item.view.root end function this:PrivilegeBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end function this:PrivilegeBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) local _level = self.allPrivilegeLevel[realIndex + 1].level[1] local monsterUI = self.allPrivilegeLevel[realIndex + 1].monsterUI local data = { level = _level, monsterid = monsterUI, index = self.allPrivilegeLevel[realIndex + 1].index } self.privilege_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_privilege_index, self, 4) if self.allPrivilegeLevel[realIndex + 1].index == self.select_privilege_index then self.PrivilegeBossLevelBtn = self.privilege_boss_level_btn_all_item[kmlcontrol] end end function this:HideSelectLevelPrivilege() self.PrivilegeBossLevelBtn:HideItem() end function this:SelectLevelPrivilege(level, Btn) self.PrivilegeBossLevelBtn = Btn self.select_privilege_index = level self:RefreshPrivilegeBoss() end function this:PrivilegeRewardDataListItemCountFunc() return #self.PrivilegeAllRwward end function this:PrivilegeRewardDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.privilege_boss_reward_data_list, self, {}, true) self.privilege_reward_level_all_item[item.view.root] = item return item.view.root end function this:PrivilegeRewardDataListItemInitFunc(realIndex, kmlcontrol) end function this:PrivilegeRewardDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.PrivilegeAllRwward[realIndex + 1] self.privilege_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Secret_level, self) end ---圣域BOSS function this:SanctuaryBossBtnDataListItemCountFunc() return #self.allSanctuaryLevel end function this:SanctuaryBossBtnDataListItemGetFunc(realIndex) local data = self.allSanctuaryLevel[realIndex + 1] local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossSelectBtnItem/KLUIChallengeBossSelectBtnItem", self.view.sanctuary_boss_level_data_list, self, {}, true) self.sanctuary_boss_level_btn_all_item[item.view.root] = item return item.view.root end function this:SanctuaryBossBtnDataListItemInitFunc(realIndex, kmlcontrol) end function this:SanctuaryBossBtnDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.allSanctuaryLevel[realIndex + 1] self.sanctuary_boss_level_btn_all_item[kmlcontrol]:RefreshItem(data, self.select_Sanctuary_level, self, EBossChallengeType.Sanctuary) if data.level == self.select_Sanctuary_level then self.sanctuaryBossLevelBtn = self.sanctuary_boss_level_btn_all_item[kmlcontrol] end end function this:SanctuaryBossLineDataListItemCountFunc() return #self.sanctuaryAllLine end function this:SanctuaryBossLineDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossLineItem/KLUIChallengeBossLineItem", self.view.sanctuary_boss_line_data_list, self, { is_copy = 1 }, true) self.sanctuary_boss_line_data_list_all_item[realIndex + 1] = item return item.view.root end function this:SanctuaryBossLineDataListItemInitFunc(realIndex, kmlcontrol) end function this:SanctuaryBossLineDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.allSanctuaryLevel[realIndex + 1] local mapMoveId = self.current_Sanctuary_data.mapMoveId[1][1] self.sanctuary_boss_line_data_list_all_item[realIndex + 1]:RefreshItem(self.repId, data, mapMoveId, self, 210, self.current_Sanctuary_data) end function this:SanctuaryRewardDataListItemCountFunc() return #self.sanctuaryAllRwward end function this:SanctuaryRewardDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.sanctuary_reward_data_list, self, {}, true) self.sanctuary_reward_level_all_item[item.view.root] = item return item.view.root end function this:SanctuaryRewardDataListItemInitFunc(realIndex, kmlcontrol) end function this:SanctuaryRewardDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.sanctuaryAllRwward[realIndex + 1] self.sanctuary_reward_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Sanctuary_level, self) end function this:SanctuaryRewardBoxDataListItemCountFunc() return #self.sanctuaryAllBoxRwward end function this:SanctuaryRewardBoxDataListItemGetFunc(realIndex) local item = GUI:UIPanel_Open("dev/outui/ChallengeBoss/Item/KLUIChallengeBossRewardItem/KLUIChallengeBossRewardItem", self.view.sanctuary_reward_box_data_list, self, {}, true) self.sanctuary_reward_box_level_all_item[item.view.root] = item return item.view.root end function this:SanctuaryRewardBoxDataListItemInitFunc(realIndex, kmlcontrol) end function this:SanctuaryRewardBoxDataListItemUpdateFunc(realIndex, kmlcontrol) local data = self.sanctuaryAllBoxRwward[realIndex + 1] self.sanctuary_reward_box_level_all_item[kmlcontrol]:RefreshItem({ cfgId = data }, self.select_Sanctuary_level, self) end function this:RES_PRIVILEGE_BOSS_PANEL(id, message) local leftCount = message.leftCount local numStr = tostring(leftCount) -- if not self:IsHavePrivilege() or leftCount == 0 then -- numStr = "0" -- end if leftCount == 0 then numStr = "0" end self.privilege_num = leftCount GUI:Text_setString(self.view.privilege_boss_last_num, numStr) end function this:privilege_boss_join() local map_id = SL:GetMetaValue(EMetaVarGetKey.MAP_ID) local mapTab = SL:GetConfig("cfg_map_info", map_id) if mapTab.nopositionmove and mapTab.nopositionmove == 1 then SL:MessageTip({ id = 116 })--"副本中无法传送", return end -- if self:IsHavePrivilege() then -- else -- --无特权 -- GUI:UIPanel_Close("dev/outui/ChallengeBoss/Panel/KLChallengeBoss/KLChallengeBossPanel") -- GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel") -- return -- end local playerLevel = SL:GetMetaValue(EMetaVarGetKey.LEVEL) if self.current_Privilege_data.level[1] > playerLevel then SL:TipMessage(SL:GetConfig('cfg_string', 263).text, 1, NoticeType.NoticeMid)--"当前等级不足", return end if self.privilege_num <= 0 then SL:TipMessage(SL:GetConfig('cfg_string', 264).text, 1, NoticeType.NoticeMid)--"挑战次数不足", return end SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_ENTER_DUPLICATE, self.current_Privilege_data.id) end function this:IsHavePrivilege() if InfoManager.monthCardInfo.IsGetMonthCard or InfoManager.monthCardInfo.IsGetDailyCard then --有月卡或是日卡 return true elseif PrivilegeCardManager.goldPrivilege or PrivilegeCardManager.diamondPrivilege then --有黄金或者钻石特权 return true else --无特权 end return false end function this:UnRegistEvents() SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.NEAREST_MONSTER, self.MonserPos, self) SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.SECRET_REALM_COUNT, self.SecretCount, self) SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.RES_PRIVILEGE_BOSS_PANEL, self.RES_PRIVILEGE_BOSS_PANEL, self) SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.MONSTER_COUNT_RESULT_BY_ID, self.MonserCount, self) SL:UnRegisterLuaNetMsg(LuaMessageIdToClient.SEND_SECRET_REALM_MONSTER_COUNT, self.MonserCopyCount, self) end function this:LUA_EVENT_CHALLENGE_BOSS_MONSTER_POS(_id, message) self:MonserPos(nil, message) end return this