require("game.boss.BossConst") require("game.boss.BossModel") require("game.proto.460.Require460") require("game.proto.461.Require461") require("game.boss.view.BossBaseView") -- boss主界面 require("game.boss.view.BossPersonSubView") -- 专属幻魔子界面 require("game.boss.view.BossPersonTabItem") -- 专属幻魔标签Tab require("game.boss.view.BossPersonWaveItem") -- 专属幻魔波数进度item require("game.boss.view.BossWorldSubView") -- 世界boss子界面 require("game.boss.view.BossWorldTabItem") -- 世界boss标签Tab require("game.boss.view.BossWorldWeekRankView") -- 世界周榜 require("game.boss.view.BossWorldWeekRankItem") -- 世界周榜 require("game.boss.view.BossWorldWeekTabItem") -- 世界周榜 require("game.boss.view.BossBreakProtectView") -- 破盾礼包界面 require("game.boss.view.BossWorldSceneView") -- 世界boss场景 require("game.boss.view.BossWorldSceneRankItem") -- 世界boss场景的排行 require("game.boss.view.BossMoneySubView") -- 赏金幻魔子界面 require("game.boss.view.BossMoneyTabItem") -- 赏金幻魔标签Tab require("game.boss.view.BossMoneyKillView") -- 赏金幻魔击杀日志 require("game.boss.view.BossMoneyKillItem") -- 赏金幻魔击杀日志 require("game.boss.view.BossMoneyRewardView") -- 赏金幻魔奖励查询界面 require("game.boss.view.BossMoneyResultView") -- 赏金幻魔结算界面 require("game.boss.view.BossMoneySceneView") -- 赏金幻魔场景 require("game.boss.view.BossMoneySceneRankItem") -- 赏金幻魔场景 require("game.boss.view.BossMoneyHelpRankView") -- 赏金幻魔协助界面 require("game.boss.view.BossMoneyHelpRankItem") -- 赏金幻魔协助界面 require("game.boss.view.BossReliveTip") -- 复活提示tip require("game.boss.view.BossDesertedSubView") -- 星域幻魔 require("game.boss.view.BossDesertedSceneView") -- 星域幻魔场景 require("game.boss.view.BossDesertedSceneBossItem") -- 星域幻魔场景幻魔信息节点 require("game.boss.view.BossDesertedSceneRankItem") -- 星域幻魔场景排行节点 require("game.boss.view.BossCardItem") -- boss刷新卡item require("game.boss.view.BossCardView") -- boss刷新卡View require("game.boss.view.BossCardTap") -- boss刷新卡标签 require("game.boss.view.BossVipCardTipItem") -- boss尊享卡提示标签 require("game.boss.view.BossProtectTipsView") --boss免战提示界面 require("game.boss.view.BossEquipShowTIps") --boss装备掉落展示 ------------------------- BossController = BossController or BaseClass(BaseController) function BossController:__init() BossController.Instance = self self.model = BossModel:GetInstance() self:EnableCheckoutClear() self:InitEvent() self:RegisterAllProtocals() end function BossController:RegisterAllProtocals() self:RegisterProtocal(46001, 'on46001') --世界BOSS活动状态 self:RegisterProtocal(46002, 'on46002') --世界BOSS列表信息 self:RegisterProtocal(46003, 'on46003') --世界BOSS血量 self:RegisterProtocal(46004, 'on46004') --世界BOSS前往周榜 self:RegisterProtocal(46005, 'on46005') --世界BOSS收到护盾礼包 self:RegisterProtocal(46006, 'on46006') --世界BOSS开启护盾礼包 self:RegisterProtocal(46007, 'on46007') --世界BOSS伤害列表 self:RegisterProtocal(46008, 'on46008') --世界BOSS单个伤害 self:RegisterProtocal(46009, 'on46009') --单个世界BOSS状态刷新 self:RegisterProtocal(46010, 'on46010') --退出BOSS场景 self:RegisterProtocal(46011, 'on46011') --获取赏金幻魔玩家次数信息 self:RegisterProtocal(46012, 'on46012') --获取赏金幻魔列表信息 self:RegisterProtocal(46013, 'on46013') --赏金幻魔击杀日志 self:RegisterProtocal(46014, 'on46014') --赏金幻魔鼓舞 self:RegisterProtocal(46015, 'on46015') --收到赏金幻魔结算 self:RegisterProtocal(46016, 'on46016') --赏金幻魔进入场景 self:RegisterProtocal(46017, 'on46017') --赏金幻魔倒计时踢人 self:RegisterProtocal(46018, 'on46018') --赏金幻魔单个boss状态变更 self:RegisterProtocal(46019, 'on46019') --赏金幻魔鼓舞次数查询 self:RegisterProtocal(46020, 'on46020') --世界BOSS-护盾上限值 self:RegisterProtocal(46021, 'on46021') --赏金幻魔协助者伤害 self:RegisterProtocal(46022, 'on46022') --赏金幻魔拾取掉落奖励 self:RegisterProtocal(46023, 'on46023') --场景对应Boss_id self:RegisterProtocal(46024, 'on46024') --关注操作 self:RegisterProtocal(46025, 'on46025') --boss自己的总伤害 ----------星域幻魔-------------------------- self:RegisterProtocal(46101, 'on46101') --星域幻魔-列表信息 self:RegisterProtocal(46102, 'on46102') --星域幻魔-个人次数信息 self:RegisterProtocal(46103, 'on46103') --星域幻魔-伤害排名信息 self:RegisterProtocal(46104, 'on46104') --星域幻魔-协助者伤害 self:RegisterProtocal(46105, 'on46105') --星域幻魔-脱战通知 self:RegisterProtocal(46106, 'on46106') --星域幻魔-boss进场 self:RegisterProtocal(46107, 'on46107') -- 次元/星域幻魔刷新 self:RegisterProtocal(46108, 'on46108') -- 混乱星域每日剩余免费原地复活次数 self:RegisterProtocal(46109, 'on46109') -- 废都boss-精英怪物信息 self:RegisterProtocal(46110, 'on46110') -- 废都boss-星域幻魔精英怪物信息(广播) self:RegisterProtocal(46111, 'on46111') -- 废都boss-查询免战时间 self:RegisterProtocal(46112, 'on46112') -- 废都boss-使用免战时间 self:RegisterProtocal(46113, 'on46113') -- 废都boss-免战时间停止通知 self:RegisterProtocal(46114, 'on46114') -- 废都boss-推荐幻魔卡 ----------活动幻魔-------------------------- self:RegisterProtocal(46026, 'on46026') --活动BOSS-信息 self:RegisterProtocal(46027, 'on46027') --活动BOSS-当前场景的BOSS信息 self:RegisterProtocal(46028, 'on46028') --活动BOSS-点击立即前往某个活动场景 self:RegisterProtocal(46029, 'on46029') --活动BOSS-伤害排名信息-进入BOSS区域请求 self:RegisterProtocal(46030, 'on46030') --活动BOSS-单个玩家总伤害 self:RegisterProtocal(46031, 'on46031') --活动BOSS-分享 self:RegisterProtocal(46032, 'on46032') --召唤独享BOSS self:RegisterProtocal(46033, 'on46033') --赏金查询免战时间 self:RegisterProtocal(46034, 'on46034') --赏金使用免战时间 self:RegisterProtocal(46035, 'on46035') --赏金免战时间停止通知 end function BossController:BossControllerCheckRed( check_new ) self.model:HasBossRed(check_new) -- GlobalEventSystem:Fire(ActivityIconManager.UPDATE_ICON_TIPS, 460,bool_red) self.model:Fire(BossModel.EVENT_UPDATE_RED_DOT) end --刷新boss疲劳 function BossController:RefreshBossTired( ) if SceneManager.Instance:IsBossDesertedScene() then local has_num = self.model:HasDesertedBossRed() if not has_num then local role = Scene.Instance:GetMainRole() if role then role:SetBossTired(true) end return end end local role = Scene.Instance:GetMainRole() if role then role:SetBossTired(false) end end --切换场景 function BossController:ChangeScene() self.model:SetFestivalBossRankInfo(false)--活动幻魔清数据 self:CheckFestivalBossView() self:CheckFestivalFindWay() ------------------------- local scene_mgr = SceneManager.Instance local last = scene_mgr.last_scene_id ------------------------- --[[if scene_mgr:IsBossWorldScene(last) and (not scene_mgr:IsBossWorldScene()) then self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.World) self:SetMainUIVisible(true) self.model:SetCurFightBossId(nil)--重置boss_id else--]] if scene_mgr:IsBossMoneyScene(last) and (not scene_mgr:IsBossMoneyScene()) then self.model:LeaveSceneClear(Config.ConfigBoss.ModuleId.Money) self:SetMainUIVisible(true) if self.listen_support_result or self.force_no_open_view then self.force_no_open_view = false --加一个判断,有收到协助者结算的坚决不弹 else if (not scene_mgr:IsBossMoneyScene()) and (not scene_mgr:IsBossPersonScene()) and self.model:HasMoneyBossRed() then OpenFun.Open(460,3) end end if self.model.need_show_money_result then self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,self.model.need_show_money_result) end self.model:SetCurFightBossId(nil)--重置boss_id elseif scene_mgr:IsBossDesertedScene(last) then -- 需要确确实实是从星域幻魔返回到大世界场景,才需要撤销相关信息栏的隐藏 if scene_mgr:IsMainCityAndFieldScene() then self:SetMainUIVisible(true) end if not scene_mgr:IsBossMoneyScene() then--赏金不用重置,会有协议更新 self.model:SetCurFightBossId(nil)--重置boss_id end else if scene_mgr:IsBossPersonScene(last) then --新手期间打完出来要继续任务 if RoleManager.Instance.mainRoleInfo.level <= Config.ConfigTaskEffect.GuideLevel then GlobalEventSystem:Fire(EventName.FORCE_TO_DO_TASK) return end if (not scene_mgr:IsBossPersonScene()) and self.model:HasPersonBossRed() then OpenFun.Open(460,1) end self.model:SetCurFightBossId(nil)--重置boss_id end end ------------------------- -- if self.bossworldsceneview and self.bossworldsceneview:HasOpen() then -- self.bossworldsceneview:Close() -- end if self.bossmoneysceneview and self.bossmoneysceneview:HasOpen() then self.bossmoneysceneview:Close() end if self.bossdesertedsceneview and self.bossdesertedsceneview:HasOpen() then self.bossdesertedsceneview:Close() end ------------------------- --[[if scene_mgr:IsBossWorldScene() then self:SetMainUIVisible(false) if not self.bossworldsceneview then self.bossworldsceneview = BossWorldSceneView.New() end if not self.bossworldsceneview:HasOpen() then self.bossworldsceneview:Open() end GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT) else--]] if scene_mgr:IsBossMoneyScene() then self.listen_support_result = false--赏金幻魔协助者结算标记 self:SetMainUIVisible(false) if not self.bossmoneysceneview then self.bossmoneysceneview = BossMoneySceneView.New() end if not self.bossmoneysceneview:HasOpen() then self.bossmoneysceneview:Open() end GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT) elseif scene_mgr:IsBossDesertedScene() then self:SetMainUIVisible(false) if not self.bossdesertedsceneview then self.bossdesertedsceneview = BossDesertedSceneView.New() end if not self.bossdesertedsceneview:HasOpen() then self.bossdesertedsceneview:Open() end end self:RefreshBossTired() end function BossController:SetMainUIVisible( value ) self:Fire(EventName.HIDE_NEW_OPEN_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE) self:Fire(EventName.CHANGE_PK_MODE, not value, MainUIModel.DESERTED_BOSS_MODE) self:Fire(EventName.HIDE_LEFT_MIDDLE_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE) self:Fire(EventName.HIDE_TASK_TEAM_VIEW, not value, MainUIModel.DESERTED_BOSS_MODE) GlobalEventSystem:Fire(EventName.LEFT_VIPICON_VISIBLE, not value) GlobalEventSystem:Fire(EventName.CHANGE_RIGHT_TIP_ICON, not value,MainUIModel.DESERTED_BOSS_MODE) GlobalEventSystem:Fire(EventName.HIDE_LEFT_TOP_ACT_VIEW,not value,MainUIModel.DESERTED_BOSS_MODE) GlobalEventSystem:Fire(EventName.SHOW_MAIN_TASK_ANNOUNCE_ROOT, not value, MainUIModel.DESERTED_BOSS_MODE) end function BossController:InitEvent() local function gameStartHandler( ) self.model:ResetData() self.never_req_46027 = nil local delay = function() -- self.model:Fire(BossConst.REQ_WORLD_BOSS_STATUS) self.model:Fire(BossConst.REQ_MONEY_PLAYER_INFO) -- 请求一下剩余的幻魔星域次数 不然红点不正确 self:SendFmtToGame(46102) self:SendFmtToGame(46108) end setTimeout(delay,2) end GlobalEventSystem:Bind(EventName.GAME_START, gameStartHandler) local function loadComplete() self:ChangeScene() --刷新所有墓碑 if SceneManager:getInstance():IsShowGraveScene() and self.scmd_boss_info then self.model:UpdateSceneGrave(self.scmd_boss_info) end self.scmd_boss_info = false local need_find_boss_id = self.model:GetNeedFindBoss() if need_find_boss_id then local cfg = Config.Desertedbossinfo[need_find_boss_id] local pos = stringtotable(cfg.born_pos) local function call_back( ... ) GlobalEventSystem:Fire(EventName.STARTAUTOFIGHT) end local findVo = FindVo.New() findVo.sceneId = SceneManager.Instance:GetSceneId() findVo.type = FindVo.POINT findVo.x = pos[1]/ SceneObj.LogicRealRatio.x findVo.y = pos[2]/ SceneObj.LogicRealRatio.y findVo.call_back = call_back findVo.range = 3 GlobalEventSystem:Fire(EventName.FIND,findVo) self.model:SetNeedFindBoss(false) end end GlobalEventSystem:Bind(EventName.SCENE_LOAD_VIEW_COMPLETE, loadComplete) local function onOpenBossView(boss_type, boss_id) if (not boss_type) and boss_id then boss_type = self.model:GetBossTypeByBossId( boss_id ) end if self.bossbaseview == nil then self.bossbaseview = BossBaseView.New() self.bossbaseview:Open(boss_type, boss_id) end end GlobalEventSystem:Bind(EventName.OPEN_BOSS_VIEW, onOpenBossView) local function OPEN_WORLD_WEEK_RANK( boss_id ) if not boss_id then return end if not self.bossworldweekrankview then self.bossworldweekrankview = BossWorldWeekRankView.New() self.bossworldweekrankview:Open(boss_id) end end self.model:Bind(BossConst.OPEN_WORLD_WEEK_RANK,OPEN_WORLD_WEEK_RANK) local function OPEN_BREAK_PROTECT_VIEW( data ) if not data then return end if not self.bossbreakprotectview then self.bossbreakprotectview = BossBreakProtectView.New() self.bossbreakprotectview:Open(data) end end self.model:Bind(BossConst.OPEN_BREAK_PROTECT_VIEW,OPEN_BREAK_PROTECT_VIEW) local function OPEN_MONEY_KILL_HISTORY_VIEW( ) if not self.bossmoneykillview then self.bossmoneykillview = BossMoneyKillView.New() self.bossmoneykillview:Open() end end self.model:Bind(BossConst.OPEN_MONEY_KILL_HISTORY_VIEW,OPEN_MONEY_KILL_HISTORY_VIEW) local function OPEN_MONEY_REWARD_VIEW( boss_id ) if not boss_id then return end if not self.bossmoneyrewardview then self.bossmoneyrewardview = BossMoneyRewardView.New() self.bossmoneyrewardview:Open(boss_id) end end self.model:Bind(BossConst.OPEN_MONEY_REWARD_VIEW,OPEN_MONEY_REWARD_VIEW) local function OPEN_MONEY_RESULT_VIEW( data ) --如果这个时候有极品装备展示,就缓存这次打开界面 if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then GlobalEventSystem:Fire(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, nil, BossEquipShowTIps.BossType.MoneyBoss, data) return end print('----LZR BossController.lua 297--=',data) PrintCallStack() if self.money_result_view then self.money_result_view:Close() self.money_result_view = nil end if self.delay_show_result_id then GlobalTimerQuest:CancelQuest(self.delay_show_result_id) self.delay_show_result_id = nil end ------------------------- local show_data = DeepCopy(data)--打开界面的时候界面为空,保存下来确定数据不丢失 local function delay( ) self.money_result_view = BossMoneyResultView.New() self.money_result_view:Open(show_data) end self.delay_show_result_id = setTimeout(delay,0.25) end self.model:Bind(BossConst.OPEN_MONEY_RESULT_VIEW,OPEN_MONEY_RESULT_VIEW) local function OPEN_BOSS_RELIVE_TIP( boss_id ) if SceneManager.Instance:IsMainCityorYieldScene() then local bossrelivetip = BossReliveTip.New() bossrelivetip:Open(boss_id) end end self.model:Bind(BossConst.OPEN_BOSS_RELIVE_TIP,OPEN_BOSS_RELIVE_TIP) local function OPEN_BOSS_CARD_VIEW(type_id) local floor = false --赏金幻魔刷新卡 local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(type_id) if type_id == BossModel.BOSS_CARD.REFRESH_MONEY_BOSS_ID then if not SceneManager.getInstance():IsMainCityorYieldScene() then Message.show(string.format("请在野外场景使用%s", basic.goods_name)) return end --星域幻魔刷新卡 elseif type_id == BossModel.BOSS_CARD.REFRESH_DESERTED_BOSS_ID then if not SceneManager.getInstance():IsBossDesertedScene() then Message.show(string.format("请在幻魔星域场景使用%s", basic.goods_name)) return end floor = BossModel:GetInstance():GetDesertedSceneFloor() --赏金幻魔独享卡 elseif type_id == BossModel.BOSS_CARD.OWNER_MONEY_BOSS_ID then if not SceneManager.getInstance():IsMainCityorYieldScene() then Message.show(string.format("请在野外场景使用%s", basic.goods_name)) return end --星域幻魔独享卡 elseif type_id == BossModel.BOSS_CARD.OWNER_DESERTED_BOSS_ID then if not SceneManager.getInstance():IsMainCityorYieldScene() then Message.show(string.format("请在野外场景使用%s", basic.goods_name)) return end else return end if self.boss_card_view == nil then self.boss_card_view = BossCardView.New() end self.boss_card_view:Open(type_id, floor) end self.model:Bind(BossConst.OPEN_BOSS_CARD_VIEW,OPEN_BOSS_CARD_VIEW) local function onOpenBossProtectTipsView(boss_type) if boss_type == BossProtectTipsView.BossType.Money then self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46033) elseif boss_type == BossProtectTipsView.BossType.Deserted then self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46111) end if self.boss_protect_tips_view == nil then self.boss_protect_tips_view = BossProtectTipsView.New() end self.boss_protect_tips_view:Open(boss_type) end self.model:Bind(BossConst.OPEN_BOSS_PROTECT_TIPS_VIEW,onOpenBossProtectTipsView) local function CLOSE_BOSS_CARD_VIEW() if self.boss_card_view and self.boss_card_view:HasOpen() then self.boss_card_view:Close() end end self.model:Bind(BossConst.CLOSE_BOSS_CARD_VIEW,CLOSE_BOSS_CARD_VIEW) local function onLevelChange( level ) if GetModuleOpenLevel( 460,1,true ) == level or GetModuleOpenLevel( 460,3,true ) == level then self:BossControllerCheckRed(true) elseif self.model.check_red_money_lv[level] or self.model.check_red_person_lv[level] then self:BossControllerCheckRed(true) elseif GetModuleOpenLevel(331,117) then--节日幻魔左侧栏 self:CheckFestivalBossView() end end RoleManager:getInstance().mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelChange) local function BOARD_GUILD_SUPPOR_REMOVE( role_id ) if role_id then self.model:SetMoneyHelperInfo(nil,role_id) self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST) end end GuildModel:getInstance():Bind(GuildModel.BOARD_GUILD_SUPPOR_REMOVE,BOARD_GUILD_SUPPOR_REMOVE) --世界BOSS活动状态 local function REQ_WORLD_BOSS_STATUS( ) self:SendFmtToGame(46001) end self.model:Bind(BossConst.REQ_WORLD_BOSS_STATUS,REQ_WORLD_BOSS_STATUS) --世界BOSS列表信息 local function REQ_WORLD_BOSS_LIST_INFO( ) self:SendFmtToGame(46002) end self.model:Bind(BossConst.REQ_WORLD_BOSS_LIST_INFO,REQ_WORLD_BOSS_LIST_INFO) --世界BOSS血量 local function REQ_WORLD_BOSS_HP( boss_id ) if not boss_id then return end self:SendFmtToGame(46003,"i",boss_id) end self.model:Bind(BossConst.REQ_WORLD_BOSS_HP,REQ_WORLD_BOSS_HP) --世界BOSS前往周榜 local function REQ_WORLD_BOSS_WEEK_RANK( show_week_type ) if not show_week_type then return end self:SendFmtToGame(46004,"i",show_week_type) end self.model:Bind(BossConst.REQ_WORLD_BOSS_WEEK_RANK,REQ_WORLD_BOSS_WEEK_RANK) --世界BOSS开启护盾礼包 local function REQ_OPEN_PROTECT_GIFT( boss_id,no ) if not boss_id or not no then return end self:SendFmtToGame(46006,"ic",boss_id,no) end self.model:Bind(BossConst.REQ_OPEN_PROTECT_GIFT,REQ_OPEN_PROTECT_GIFT) --退出BOSS场景 local function REQ_QUIT_SCENE( ) self:SendFmtToGame(46010) end self.model:Bind(BossConst.REQ_QUIT_SCENE,REQ_QUIT_SCENE) --获取赏金幻魔玩家次数信息 local function REQ_MONEY_PLAYER_INFO( ) self:SendFmtToGame(46011) end self.model:Bind(BossConst.REQ_MONEY_PLAYER_INFO,REQ_MONEY_PLAYER_INFO) --获取赏金幻魔列表信息 local function REQ_MONEY_BOSS_INFO( ) self:SendFmtToGame(46012) end self.model:Bind(BossConst.REQ_MONEY_BOSS_INFO,REQ_MONEY_BOSS_INFO) --赏金幻魔击杀日志 local function REQ_MONEY_KILL_HISTORY( ) self:SendFmtToGame(46013) end self.model:Bind(BossConst.REQ_MONEY_KILL_HISTORY,REQ_MONEY_KILL_HISTORY) --赏金幻魔鼓舞 local function REQ_MONEY_BOSS_INSPIRE( type_id ) --type:int8 // 1彩钻/2红钻 if not type_id then return end self:SendFmtToGame(46014,"c",type_id) end self.model:Bind(BossConst.REQ_MONEY_BOSS_INSPIRE,REQ_MONEY_BOSS_INSPIRE) --赏金幻魔进入场景 local function REQ_MONEY_BOSS_ENTER_SCENE( boss_id ) if not boss_id then return end self:SendFmtToGame(46016,"i",boss_id) end self.model:Bind(BossConst.REQ_MONEY_BOSS_ENTER_SCENE,REQ_MONEY_BOSS_ENTER_SCENE) --赏金幻魔鼓舞次数查询 local function REQ_MONEY_BOSS_ENSPIRE_COUNT( boss_id ) if not boss_id then return end self:SendFmtToGame(46019,"i",boss_id) end self.model:Bind(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,REQ_MONEY_BOSS_ENSPIRE_COUNT) --关注操作 local function REQ_FOCUS_CHANGE( boss_type,boss_id,op_type ) if not boss_type or not boss_id or not op_type then return end self:SendFmtToGame(46024,"cic",boss_type,boss_id,op_type) end self.model:Bind(BossConst.REQ_FOCUS_CHANGE,REQ_FOCUS_CHANGE) function on_req_scmd( ... ) local args_list = {...} if args_list[1] == 46101 or args_list[1] == 46109 then self:SendFmtToGame(args_list[1],"c",args_list[2]) elseif args_list[1] == 46028 or args_list[1] == 46029 or args_list[1] == 46031 or args_list[1] == 46032 or args_list[1] == 46106 then self:SendFmtToGame(args_list[1],"i",args_list[2]) elseif args_list[1] == 46107 then self:SendFmtToGame(args_list[1],"ci",args_list[2], args_list[3]) else self:SendFmtToGame(args_list[1]) end end self.model:Bind(BossConst.REQ_DESERTED_BOSS_SCMD, on_req_scmd) -- 如果激活了星域幻魔免费复活相关的宠物生活技能,则需要主动请求次数 local function on_pet_life_skill_actived(skill_id) if skill_id == PetConst.LifeSkill.BossFreeReBornTimes then self:SendFmtToGame(46108) end end PetModel:getInstance():Bind(PetConst.PET_LIFE_SKILL_ACTIVED, on_pet_life_skill_actived) local function chnage_day_func(type) if type == SettingModel.CHANGE_DAY.HOUR_0 then -- 跨0点 self:SendFmtToGame(46108) end end GlobalEventSystem:Bind(EventName.CHANE_DAY, chnage_day_func) local function onBossEquipShowTips(goods_vo, boss_type, close_data) --这里处理延时打开界面界面操作 if boss_type or close_data then if self.BossEquipShowTIps and self.BossEquipShowTIps:HasOpen() then self.BossEquipShowTIps:SetCloseData(boss_type, close_data) self.model.boss_equip_tips_view_close_data = false else self.model.boss_equip_tips_view_close_data = {boss_type = boss_type,close_data = close_data} --如果判断到专属boss有极品装备,如果2秒后没有捡到,也弹结算 if self.delay_show_result_id then GlobalTimerQuest:CancelQuest(self.delay_show_result_id) self.delay_show_result_id = false end local function onDelayShow( ... ) if self.delay_show_result_id then GlobalTimerQuest:CancelQuest(self.delay_show_result_id) self.delay_show_result_id = false end if self.model.boss_equip_tips_view_close_data then BaseDungeonModel:getInstance():Fire(BaseDungeonModel.OPEN_DUNGEON_RESULT_VIEW,self.model.boss_equip_tips_view_close_data.close_data) self.model.boss_equip_tips_view_close_data = false end end self.delay_show_result_id = GlobalTimerQuest:AddDelayQuest(onDelayShow,4) end return end if not goods_vo then return end if self.delay_show_result_id then GlobalTimerQuest:CancelQuest(self.delay_show_result_id) self.delay_show_result_id = false end --如果此时已经弹了结算界面,就不在显示获得极品装备的提示 if BaseDungeonModel:getInstance().is_showing_dungeon_result_view then return end if not self.BossEquipShowTIps then self.BossEquipShowTIps = BossEquipShowTIps.New() self.BossEquipShowTIps:Open(goods_vo) else self.BossEquipShowTIps:AddGoodsData(goods_vo) end end GlobalEventSystem:Bind(EventName.SHOW_DROP_GOOD_EQUIP_TIPS, onBossEquipShowTips) end --世界BOSS活动状态 function BossController:on46001( ) local scmd = SCMD46001.New(true) self.model:SetWorldBossStatus(scmd.end_time) ------------------------- local curTime = TimeUtil:getServerTime() local status_time = scmd.end_time - curTime if status_time > 0 then ActivityIconManager:getInstance():addIcon(46002, status_time) self.model:Fire(BossConst.REQ_WORLD_BOSS_LIST_INFO) else ActivityIconManager:getInstance():deleteIcon(46002) end self.model:Fire(BossConst.ANS_WORLD_BOSS_STATUS) end --世界BOSS列表信息 function BossController:on46002( ) local scmd = SCMD46002.New(true) self.model:SetWorldBossInfo(scmd) ------------------------- self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO) end --世界BOSS血量 function BossController:on46003( ) local scmd = SCMD46003.New(true) self.model:SetWorldBossHpList(scmd) self.model:Fire(BossConst.ANS_WORLD_BOSS_HP) end --世界BOSS前往周榜 function BossController:on46004( ) local scmd = SCMD46004.New(true) self.model:SetWorldBossWeekRankList(scmd) self.model:Fire(BossConst.ANS_WORLD_BOSS_WEEK_RANK) end --世界BOSS收到护盾礼包 function BossController:on46005( ) local scmd = SCMD46005.New(true) Message.show("收到护盾礼包") self.model:Fire(BossConst.OPEN_BREAK_PROTECT_VIEW,scmd) end --世界BOSS开启护盾礼包 function BossController:on46006( ) local scmd = SCMD46006.New(true) if scmd.res == 1 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.AWARD) Message.show("开启成功!") else ErrorCodeShow(scmd.res) end end --世界BOSS伤害列表 function BossController:on46007( ) local scmd = SCMD46007.New(true) local type_id = self.model:GetBossTypeByBossId(scmd.boss_id) self.model:ResetBossHurtInfo(type_id) ------------------------- if TableSize(scmd.rank_list) > 0 then for k,v in pairs(scmd.rank_list) do self.model:SetBossHurtInfo( scmd.boss_id,v.role_id,v.name,v.hurt,scmd.boss_hp,v.type ) end else self.model:SetBossHurtInfo( scmd.boss_id,nil,nil,nil,scmd.boss_hp,nil ) end ------------------------- self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT) end --世界BOSS单个伤害 function BossController:on46008( ) local scmd = SCMD46008.New(true) self.model:SetBossHurtInfo( scmd.boss_id,scmd.role_id,scmd.name,scmd.hurt, nil, scmd.type ) self.model:Fire(BossConst.ANS_SCENE_BOSS_HURT) end --单个世界BOSS状态刷新 function BossController:on46009( ) local scmd = SCMD46009.New(true) local success = self.model:SetWorldBossInfoOne(scmd) ------------------------- if success then self.model:Fire(BossConst.ANS_WORLD_BOSS_LIST_INFO) end end --退出BOSS场景 function BossController:on46010( ) local scmd = SCMD46010.New(true) end --获取赏金幻魔玩家次数信息 function BossController:on46011( ) local scmd = SCMD46011.New(true) self.model:SetMoneyBossMyInfo(scmd) self:BossControllerCheckRed(true) self.model:Fire(BossConst.ANS_MONEY_PLAYER_INFO) end --获取赏金幻魔列表信息 function BossController:on46012( ) local scmd = SCMD46012.New(true) for k,v in pairs(scmd.boss_info) do self.model:SetMoneyBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count) end self:BossControllerCheckRed(true) self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO) end --赏金幻魔击杀日志 function BossController:on46013( ) local scmd = SCMD46013.New(true) self.model:SetMoneyBossKillHistory(scmd.drop_log) self.model:Fire(BossConst.ANS_MONEY_KILL_HISTORY) end --赏金幻魔鼓舞 function BossController:on46014( ) local scmd = SCMD46014.New(true) if scmd.res == 1 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS) Message.show("鼓舞成功!") self.model:Fire(BossConst.ANS_MONEY_BOSS_INSPIRE) if self.model:GetCurFightBossId( ) then self.model:Fire(BossConst.REQ_MONEY_BOSS_ENSPIRE_COUNT,self.model:GetCurFightBossId( )) end else if scmd.res == 1001 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.FAULT) GlobalEventSystem:Fire(EventName.OPEN_RECHARGE_TIP_VIEW, true) else ErrorCodeShow(scmd.res) end end end --收到赏金幻魔结算 function BossController:on46015( ) local scmd = SCMD46015.New(true) if SceneManager.Instance:IsBossMoneyScene() then self.model.need_show_money_result = scmd else self.model:Fire(BossConst.OPEN_MONEY_RESULT_VIEW,scmd) self.model.need_show_money_result = false end self.model:Fire(BossConst.ANS_MONEY_BOSS_RESULT) end --赏金幻魔进入场景 function BossController:on46016( ) local scmd = SCMD46016.New(true) if scmd.res == 1 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS) Message.show("进入场景中") self.model:Fire(BossConst.ANS_MONEY_BOSS_ENTER_SCENE) else ErrorCodeShow(scmd.res) end end --赏金幻魔倒计时踢人 function BossController:on46017( ) local scmd = SCMD46017.New(true) end --赏金幻魔单个boss状态变更 function BossController:on46018( ) local scmd = SCMD46018.New(true) --[[if scmd.next_time == 0 then local ser_data = false for k,v in pairs(self.model:GetMoneyBossInfo()) do if v.boss_id == scmd.boss_id then ser_data = v end end if ser_data and ser_data.reborn_time ~= 0 and ser_data.is_focus == 1 then --旧数据是已死亡,新数据是活着 self.model:Fire(BossConst.OPEN_BOSS_RELIVE_TIP,scmd.boss_id) end end--]] self.model:SetMoneyBossInfo(scmd.boss_id,scmd.next_time,scmd.killer) self.model:Fire(BossConst.ANS_MONEY_BOSS_INFO) end --赏金幻魔鼓舞次数查询 function BossController:on46019( ) local scmd = SCMD46019.New(true) self.model:SetMoneyInspireCount(scmd.boss_id,scmd.by_gold,scmd.by_bgold) self.model:Fire(BossConst.ANS_MONEY_BOSS_ENSPIRE_COUNT) end --世界BOSS-护盾上限值 function BossController:on46020( ) local scmd = SCMD46020.New(true) self.model:SetWorldBossProtectMax(scmd) self.model:Fire(BossConst.ANS_WORLD_BOSS_PROTECT) end --赏金幻魔协助者伤害 function BossController:on46021( ) local scmd = SCMD46021.New(true) self.model:SetMoneyHelperInfo(scmd) self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST) end --赏金幻魔拾取掉落奖励 function BossController:on46022( ) local scmd = SCMD46022.New(true) for k,v in pairs(scmd.list) do local new_data = {style = 0,typeId = v.goods_id,num = v.num} if self.model.need_show_money_result then table.insert( self.model.need_show_money_result.base_reward_list, new_data ) end end end --场景对应Boss_id function BossController:on46023( ) local scmd = SCMD46023.New(true) self.model:SetCurFightBossId(scmd.boss_id) self.model:Fire(BossConst.ANS_BOSS_ID_IN_SCENE) end function BossController:on46024( ) local scmd = SCMD46024.New(true) if scmd.res == 1 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS) self.model:ChangeBossFocusStatus( scmd.boss_id, scmd.op ) self.model:Fire(BossConst.ANS_FOCUS_CHANGE,scmd.boss_id, scmd.op) if scmd.op == 1 then Message.show("关注成功") else Message.show("已取消关注") end else ErrorCodeShow(scmd.res) end end --boss自己的总伤害(只在组队状态下有用) function BossController:on46025( ) local scmd = SCMD46025.New(true) self.model:SetMyHurtOnly(scmd) self.model:Fire(BossConst.ANS_MY_HURT_INFO) end -- ############# 星域幻魔-列表信息 ############### -- protocol=46101 -- { -- c2s{ -- level:int8 // 层数 -- } -- s2c{ -- boss_info:array{ -- boss_id:int32 // BossId -- status:int32 // 0存活|复活时间 -- is_follow:int8 // 0未关注|1已关注 -- killer:string // 上次击杀者 -- } -- } -- } function BossController:on46101( ) local scmd = SCMD46101.New(true) self.scmd_boss_info = scmd for k,v in pairs(scmd.boss_info) do self.model:SetDesertedBossInfo(v.boss_id,v.reborn_time,v.killer,v.is_focus,v.kill_count) end self.model:Fire(BossConst.ANS_DESERTED_BOSS_INFO) if SceneManager.Instance:IsShowGraveScene() then self.model:UpdateSceneGrave(scmd) end end function BossController:on46102( ) local scmd = SCMD46102.New(true) self.model:SetDesertedBossNumInfo(scmd) self:BossControllerCheckRed(true) self:RefreshBossTired() end function BossController:on46103( ) if self.delay_clear_desert_call then self.delay_clear_desert_call() end ------------------------- local scmd = SCMD46103.New(true) self.model:SetDesertedBossRankInfo(scmd) end function BossController:on46104( ) local scmd = SCMD46104.New(true) self.model:SetMoneyHelperInfo(scmd) self.model:Fire(BossConst.ANS_MONEY_BOSS_HELP_LIST) end function BossController:on46105( ) local scmd = SCMD46105.New(true) ------------------------- if self.delay_clear_desert then GlobalTimerQuest:CancelQuest(self.delay_clear_desert) self.delay_clear_desert = nil end self.delay_clear_desert_call = false ------------------------- local function clear_call( ) self.model:CleanDesertedBossRankInfoById(scmd.boss_id) self.model:SetCurFightBossId(nil)--重置boss_id self.model:Fire(BossConst.OUT_OF_DESERTED_BOSS_LIST, scmd.boss_id, true) end local cur_data = self.model:GetDesertedBossRankInfo(scmd.boss_id) if cur_data and cur_data.boss_hp == 0 then --击杀boss后数据保留5s self.delay_clear_desert_call = function( ) clear_call() ------------------------- if self.delay_clear_desert then GlobalTimerQuest:CancelQuest(self.delay_clear_desert) self.delay_clear_desert = nil end self.delay_clear_desert_call = false ------------------------- end self.delay_clear_desert = setTimeout(self.delay_clear_desert_call,5) else clear_call() end end function BossController:on46106( ) local scmd = SCMD46106.New(true) if scmd.res == 1 then GlobalEventSystem:Fire(EventName.PLAY_UI_EFFECT_SOUND,LuaSoundManager.SOUND_UI.SUCCESS) Message.show("进入场景中") else ErrorCodeShow(scmd.res) end end function BossController:on46107( ) local scmd = SCMD46107.New(true) if scmd.res == 1 then if scmd.type == 1 then self.model:Fire(BossConst.REQ_MONEY_BOSS_INFO) else local floor = BossModel:GetInstance():GetDesertedSceneFloor() self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD, 46101,floor) self.model:Fire(BossConst.BOSS_CARD_REFRESH, scmd.type, scmd.boss_id) end else ErrorCodeShow(scmd.res) end end --活动BOSS-信息 function BossController:on46026( ) local scmd = SCMD46026.New(true) self.model:SetFestivalBossList(scmd) OperateActivityModel:getInstance():Fire(OperateActivityModel.REFRESH_FESTIVAL_BOSS) ------------------------- local sub_type = CustomActivityModel:getInstance():getActMinSubType(CustomActivityModel.CustomActBaseType.FESTIVAL_BOSS) if scmd.list and TableSize(scmd.list) > 0 then if not self.never_req_46027 then -- 上线拿一次46027,以后不用,会推送,防止死循环 self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46027) self.never_req_46027 = true end ------------------------- if OperateActivityModel:getInstance().is_open_festival_boss_view then else --如果是boss活动状态,那么就出一下红点 KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false ) end else local data = CookieWrapper.Instance:GetCookie(CookieLevelType.Account,CookieKey.FESTIVAL_BOSS_RED) or {} if data[sub_type] == nil then --第一次活动出现,给个红点 KfActivityModel:getInstance():MaskFestivalBossOpenRedDot( sub_type,false ) end end end -- 活动BOSS-当前场景的BOSS信息 function BossController:on46027( ) local scmd = SCMD46027.New(true) self.model:SetFestivalBossSceneList(scmd) self:CheckFestivalBossView() self.model:Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46026) end function BossController:CheckFestivalBossView( ) if not self.opfestivalbosssceneview then --进场景创界面,隐藏,更新数据的时候显示 --当前怪物死亡/离场的时候清榜单数据隐藏界面 --切场景的时候立即关界面,立即清榜单数据 local function scene_have_act_boss( ) local fes_boss_list = self.model:GetFestivalBossSceneList() if fes_boss_list and fes_boss_list.scene_id_list and fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()] and fes_boss_list.scene_id_list[SceneManager.Instance:GetSceneId()][MapModel:getInstance():GetServerLine() or 1] then --检查活动幻魔场景以及分线 return true end return false end ------------------------- local id = KfActivityModel.TabID.FestivalBoss local act_type = KfActivityModel:getInstance():GetActType(nil,id) if not act_type then -- Message.show("活动未开启","fault") return end if id then local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启 if not open_bool then -- Message.show("活动未开启","fault") return end end if scene_have_act_boss() and GetModuleIsOpen(331,117) then --有活动且活动已开放 self.opfestivalbosssceneview = OpFestivalBossSceneView.New() self.opfestivalbosssceneview:Open() end end end --活动BOSS-寻路检查 function BossController:CheckFestivalFindWay( ) if self.model.festival_boss_find_way_data then local param_list = self.model.festival_boss_find_way_data local scene_id = tonumber(param_list[2]) local line = tonumber(param_list[3]) or 1 if scene_id ~= SceneManager.Instance:GetSceneId() or MapModel:getInstance():GetServerLine() ~= line then --场景不对路,中止交易 self.model.festival_boss_find_way_data = nil return end local scene_info = SceneManager:getInstance():GetSceneInfo(scene_id) local x = tonumber(param_list[4]) or 0 local y = tonumber(param_list[5]) or 0 if scene_info then --如果在当前场景当前线路,就直接寻路 local findVo = FindVo.New() findVo.type = FindVo.POINT findVo.sceneId = scene_id findVo.x = x/SceneObj.LogicRealRatio.x findVo.y = y/SceneObj.LogicRealRatio.y findVo.range = 3 GlobalEventSystem:Fire(EventName.FIND,findVo) end end end --活动BOSS-点击立即前往某个活动场景 function BossController:on46028( ) local scmd = SCMD46028.New(true) if scmd.res == 1 then Message.show("操作成功~") else ErrorCodeShow(scmd.res) end end --活动BOSS-伤害排名信息-进入BOSS区域请求 --把榜单请求放到界面里面去,免得controller太多浪费 function BossController:on46029( ) local scmd = SCMD46029.New(true) self.model:SetFestivalBossRankInfo(scmd) ------------------------- local id = KfActivityModel.TabID.FestivalBoss local act_type = KfActivityModel:getInstance():GetActType(nil,id) if not act_type then return end if id then local open_bool = KfActivityModel:getInstance():CheckActivityIdOpen(act_type,id)--是否开启 if not open_bool then return end end if GetModuleIsOpen(331,117) then --有活动且活动已开放 if self.opfestivalbosssceneview then self.opfestivalbosssceneview:UpdateView() end end end --活动BOSS-单个玩家总伤害 function BossController:on46030( ) local scmd = SCMD46030.New(true) if self.opfestivalbosssceneview then local rank_info = self.model:GetFestivalBossRankInfo() if rank_info then if TableSize(rank_info.rank_list) == 0 then BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id) else if rank_info and rank_info.id == scmd.id then rank_info.list_role[scmd.role_id] = scmd end self.opfestivalbosssceneview:UpdateView() end else BossModel:GetInstance():Fire(BossConst.REQ_DESERTED_BOSS_SCMD,46029,scmd.id) end end end --活动BOSS-分享 function BossController:on46031( ) local scmd = SCMD46031.New(true) if scmd.res == 1 then --发送坐标 用超链接的方法 local role = Scene.Instance:GetMainRole() if not role then return end local scene_id = scmd.scene_id local line = scmd.pool local x = role.logic_pos.x local y = role.logic_pos.y if not SceneManager:getInstance():IsBlockXY(x, y) then Message.show("分享成功!") local scene_name = SceneManager:getInstance():GetSceneInfo(scene_id).name local content = string.format("%s[%s(%d,%d)]","发现远古魔龙,我在", scene_id, line, role.real_pos.x, role.real_pos.y, ColorUtil.BLUE_DARK,scene_name, x, y) local tmpArgs = ChatModel:getInstance():GetAllArgsText(content) content = ChatModel:getInstance():GetHyperlinkText(content) ChatModel:getInstance():Fire(ChatModel.SEND_MSG, self.model.festival_boss_share_channel, content, 0, tmpArgs, ChatModel.CHAT_COMMON_TYPE.SYSTEM) end else ErrorCodeShow(scmd.res) end end --召唤独享BOSS function BossController:on46032( ) local scmd = SCMD46032.New(true) if scmd.res == 1 then Message.show("召唤成功") self.model:Fire(BossConst.CLOSE_BOSS_CARD_VIEW) else ErrorCodeShow(scmd.res) end end --赏金查询免战时间 function BossController:on46033( ) local scmd = SCMD46033.New(true) PrintTable(scmd) self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) end --赏赏金使用免战时间 function BossController:on46034( ) local scmd = SCMD46034.New(true) PrintTable(scmd) if scmd.res == 1 then self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Money) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) else ErrorCodeShow(scmd.res) end end --赏金免战时间停止通知 function BossController:on46035( ) local scmd = SCMD46035.New(true) PrintTable(scmd) self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Money) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) end --星域幻魔剩余免费复活次数 function BossController:on46108( ) local scmd = SCMD46108.New(true) self.model:UpdateLeftDesertedBossFreeReliveTimes(scmd) end --星域幻魔精英怪物信息 function BossController:on46109( ) local scmd = SCMD46109.New(true) self.model:SetLeftDesertedMonsterInfo(scmd) self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH) end --星域幻魔精英怪物信息(广播) function BossController:on46110( ) local scmd = SCMD46110.New(true) self.model:SetLeftDesertedMonsterNumber(scmd) self.model:Fire(BossConst.BOSS_MONSTER_COUNT_REFRESH) end --星域幻魔 查询免战时间 function BossController:on46111( ) local scmd = SCMD46111.New(true) PrintTable(scmd) self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) end --星域幻魔 使用免战时间 function BossController:on46112( ) local scmd = SCMD46112.New(true) PrintTable(scmd) if scmd.res == 1 then self.model:SetBossProtectTimeInfo(scmd, BossProtectTipsView.BossType.Deserted) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) else ErrorCodeShow(scmd.res) end end --星域幻魔 免战时间停止通知 function BossController:on46113( ) local scmd = SCMD46113.New(true) PrintTable(scmd) self.model:SetBossProtectTimeInfo(false, BossProtectTipsView.BossType.Deserted) self.model:Fire(BossConst.UPDATE_BOSS_PROTECT_TIME) end --废都幻魔-推荐幻魔卡 function BossController:on46114( ) local scmd = SCMD46114.New(true) print('Ych:BossController.lua[1175] data', VipModel.getInstance():IsCanShowVipCardTips() ) if VipModel.getInstance():IsCanShowVipCardTips() then GlobalEventSystem:Fire(EventName.SHOW_KILL_DESERTED_BOSS_BUY_VIP_CARD_TIPS_EVENT) end end