--[[@------------------------------------------------------------------ @description:VIP @author:huangcong ----------------------------------------------------------------------]] require("game.proto.450.Require450") require("game.proto.158.Require158") require("game.proto.420.Require420") require("game.vip.VipModel") require("game.vip.VipConst") require("game.vip.view.VipBaseView") require("game.vip.view.RechargeView") require("game.vip.view.RechargeItem") require("game.vip.view.CustomRechargeView") require("game.vip.view.VipNobleViewNew")--vip特权界面 require("game.vip.view.VipNobleTab")--贵族页签 require("game.vip.view.VipNobleBuyGiftView")--vip贵族礼包购买提示界面 require("game.vip.view.VipExperienceView")--VIP体验界面 require("game.vip.view.VipNobleShowView")--VIP特权界面 require("game.vip.view.VipNobleShowItem")--VIP特权界面Item require("game.vip.view.VipShowSkillEffectView")--VIP特权技能界面 require("game.vip.view.VipExperienceVThreeView")--VIP体验贵族V3界面 require("game.vip.view.VipExperienceVThreeExView")--VIP体验贵族V3信息查看界面 --直购礼包 require("game.vip.view.VipPurchaseGiftView")--直购礼包界面 require("game.vip.view.VipPurchaseGiftTab")--直购礼包Tab require("game.vip.view.VipPurchaseGiftItem")--直购礼包Item -- 投资计划 require("game.vip.investmentPlan.InvestmentPlanView") -- 投资计划主界面 require("game.vip.investmentPlan.InvestmentPlanTabItem") -- 投资计划主界面投资类型页签 require("game.vip.investmentPlan.InvestmentPlanItem") -- 投资计划主界面item节点 --幻魔UP卡 require("game.vip.view.VipCardView") --幻魔UP卡界面 require("game.vip.view.VipCardItem") --幻魔UP卡条目 VipController = VipController or BaseClass(BaseController) function VipController:__init() VipController.Instance = self self.model = VipModel:getInstance() self:InitEvent() self:registerAllProtocals() self:EnableCheckoutClear() end function VipController:RemoveCheckOutEvent() end function VipController:getInstance() if VipController.Instance == nil then VipController.New() end return VipController.Instance end function VipController:InitEvent() local function onRequestHandler(...) local args = {...} if args[1] == 45006 then self:SendFmtToGame(args[1],"h",args[2]) elseif args[1] == 15903 or args[1] == 42002 or args[1] == 45008 or args[1] == 45009 then self:SendFmtToGame(args[1],"c",args[2]) elseif args[1] == 42003 then self:SendFmtToGame(args[1],"cc", args[2], args[3]) elseif args[1] == 15904 then self:SendFmtToGame(args[1],"i",args[2]) elseif args[1] == 15902 then self:SendFmtToGame(args[1],"i",args[2]) elseif args[1] == 15803 then self:SendFmtToGame(args[1],"iic",args[2],args[3],args[4]) else self:SendFmtToGame(args[1]) end end self.model:Bind(VipModel.REQUEST_CCMD_EVENT, onRequestHandler) local game_start = function (level) --vip特权 if GetModuleIsOpen(450,VipModel.TabType.Noble) and (level == nil or GetModuleOpenLevel(450,VipModel.TabType.Noble) == level ) then -- self:SendFmtToGame(15901) -- self:SendFmtToGame(15951) self:SendFmtToGame(15802) self:SendFmtToGame(45001) self:SendFmtToGame(45005) end if GetModuleIsOpen(159,4) and (level == nil or GetModuleOpenLevel(159,4) == level ) then self.model:Fire(VipModel.REQUEST_CCMD_EVENT, 15903, VipModel.Type.PurchaseGift) end --幻魔UP卡 if GetModuleIsOpen(159,1) and (level == nil or GetModuleOpenLevel(159,1) == level ) then self.model:RequstVipCarInfo() end -- 投资计划 if GetModuleIsOpen(420, 1) and (level == nil or GetModuleOpenLevel(420, 1) == level ) then self:SendFmtToGame(42001) end --客服信息 self:SendFmtToGame(45004) end GlobalEventSystem:Bind(EventName.GAME_START, game_start) local function onTaskFinishHandler(taskId) for i,v in ipairs(CustomActivityModel.VIP_THREE_TASK_ID_LIST) do if v == taskId and RoleManager.Instance.mainRoleInfo.vip_flag < 3 then self.model:Fire(VipModel.OPEN_EXPERIENCE_V_THREE_VIEW) break end end if taskId == CustomActivityModel.VIP_EX_CARD_TASK_ID then--这个任务是做VIP体验卡的任务 local vip_info = self.model.vip_info if vip_info and vip_info.vip_endtime and vip_info.vip_endtime - TimeUtil:getServerTime( ) <= 0 and RoleManager.Instance.mainRoleInfo.vip_flag > 0 then else--非VIP才停止 GlobalEventSystem:Fire(EventName.STOP_AUTO_DO_TASK) --停止自动任务 GlobalEventSystem:Fire(EventName.STOPAUTOFIGHT)--停止挂机 end end end GlobalEventSystem:Bind(TaskEvent.ANS_FINISHED_TASK_LIST, onTaskFinishHandler) --升级 local function onLevelUp(level) game_start(level) -- 升级刷新一下投资红点 self.model:RefreshInvestmentViewDataRed() end RoleManager.Instance.mainRoleInfo:Bind(EventName.CHANGE_LEVEL, onLevelUp) local function changeDayFunc( type ) if type == 0 then if GetModuleIsOpen(159,4) and (level == nil or GetModuleOpenLevel(159,4) == level ) then self.model:Fire(VipModel.REQUEST_CCMD_EVENT, 15903, VipModel.Type.PurchaseGift) end -- 跨天刷新一下投资红点 local function delay_method( ) self.model:RefreshInvestmentViewDataRed() end -- 最好做一个延时刷新 setTimeout(delay_method, 5) if GetModuleIsOpen(159,1) then self.model:RequstVipCarInfo() end if self.model.vip_info and self.model.vip_info.vip_lv and self.model.vip_info.vip_lv<= 3 then VipModel:getInstance():Fire(VipModel.REQUEST_CCMD_EVENT, 45010) end end end GlobalEventSystem:Bind(EventName.CHANE_DAY, changeDayFunc) local onOpenVipView = function (tab_index, sub_index,is_close) if ClientConfig.alpha_mode then return end if is_close and self.VipBaseView and self.VipBaseView:HasOpen() then self.VipBaseView:Close(is_close) return end local tabIndex = tab_index local subIndex = sub_index if type(tab_index) == "table" then tabIndex = tab_index[1] subIndex = tab_index[2] end if self.VipBaseView == nil then self.VipBaseView = VipBaseView.New() end if not self.VipBaseView:HasOpen() then self.VipBaseView:Open(tabIndex, subIndex) else self.VipBaseView:UpdateView(tabIndex, subIndex) end ------------------------- --彩钻复制机防重叠套娃界面 KfActivityModel:getInstance():Fire(KfActivityModel.OPEN_MONEY_COPY_VIEW,nil,true) if OperateActivityController and OperateActivityController.Instance and OperateActivityController.Instance.opreversirefreshtip then OperateActivityController.Instance.opreversirefreshtip:Close() end end GlobalEventSystem:Bind(EventName.OPEN_VIP_VIEW, onOpenVipView) local onOpenCustomRechargeView = function () if self.custom_recharge_view == nil then self.custom_recharge_view = CustomRechargeView.New() end if self.custom_recharge_view:HasOpen() then self.custom_recharge_view:Close() else self.custom_recharge_view:Open() end end self.model:Bind(VipModel.OPEN_CUSTOM_RECHARGE_VIEW, onOpenCustomRechargeView) local onOpenVipNobleBuyGiftView = function (view_data) if not view_data then return end if self.VipNobleBuyGiftView == nil then self.VipNobleBuyGiftView = VipNobleBuyGiftView.New() end if self.VipNobleBuyGiftView:HasOpen() then self.VipNobleBuyGiftView:Close() else self.VipNobleBuyGiftView:Open(view_data) end end self.model:Bind(VipModel.OPEN_NOBLE_BUY_VIEW, onOpenVipNobleBuyGiftView) local onOpenVipExperienceView = function (open_type,is_close)--VIP体验界面 print("huangcong:VipController [208] : ",open_type,debug.traceback()) if is_close and self.vip_experience_view and self.vip_experience_view:HasOpen() then self.vip_experience_view:Close() return end if self.vip_experience_view == nil then self.vip_experience_view = VipExperienceView.New() end if self.vip_experience_view:HasOpen() then -- self.vip_experience_view:Close() else self.vip_experience_view:Open(open_type) end end self.model:Bind(VipModel.OPEN_EXPERIENCE_VIEW, onOpenVipExperienceView) local onOpenVipExperienceVThreeView = function (is_close)--VIP体验贵族V3界面 if is_close then if self.vip_experience_v_three_view and self.vip_experience_v_three_view:HasOpen() then self.vip_experience_v_three_view:Close() end return end if self.vip_experience_v_three_view == nil then self.vip_experience_v_three_view = VipExperienceVThreeView.New() end if self.vip_experience_v_three_view:HasOpen() then -- self.vip_experience_v_three_view:Close() else self.vip_experience_v_three_view:Open() end end self.model:Bind(VipModel.OPEN_EXPERIENCE_V_THREE_VIEW, onOpenVipExperienceVThreeView) local onOpenVipExperienceVThreeExView = function (index,is_close)--VIP体验贵族V3详情界面 if is_close then if self.vip_experience_v_three_ex_view and self.vip_experience_v_three_ex_view:HasOpen() then self.vip_experience_v_three_ex_view:Close() end return end if self.vip_experience_v_three_ex_view == nil then self.vip_experience_v_three_ex_view = VipExperienceVThreeExView.New() end if self.vip_experience_v_three_ex_view:HasOpen() then -- self.vip_experience_v_three_ex_view:Close() else self.vip_experience_v_three_ex_view:Open(index) end end self.model:Bind(VipModel.OPEN_EXPERIENCE_V_THREE_EX_VIEW, onOpenVipExperienceVThreeExView) local onOpenVipNobleShowView = function (vip_lv)--VIP特权界面 if self.VipNobleShowView == nil then self.VipNobleShowView = VipNobleShowView.New() end if self.VipNobleShowView:HasOpen() then -- self.VipNobleShowView:Close() else self.VipNobleShowView:Open(vip_lv) end end self.model:Bind(VipModel.OPEN_VIP_NOBLE_VIEW, onOpenVipNobleShowView) local onOpenVipShowSkillEffectView = function (skill_id, vip_lv)--VIP特权界面 if self.VipShowSkillEffectView == nil then self.VipShowSkillEffectView = VipShowSkillEffectView.New() end if self.VipShowSkillEffectView:HasOpen() then -- self.VipNobleShowView:Close() else self.VipShowSkillEffectView:Open(skill_id, vip_lv) end end self.model:Bind(VipModel.OPEN_VIP_SKILL_EFFECT_VIEW, onOpenVipShowSkillEffectView) local onVIPChange = function () self.model:IsNeedRed(VipModel.TabType.PurchaseGift) end RoleManager:getInstance().mainRoleInfo:BindOne("vip_flag", onVIPChange) end function VipController:registerAllProtocals() --VIP self:RegisterProtocal(45000,"handle45000")--错误码 self:RegisterProtocal(45001,"handle45001")--获得角色vip信息 self:RegisterProtocal(45002,"handle45002")--使用充值卡激活vip(直接扣钻石) self:RegisterProtocal(45003,"handle45003")--VIP到期提醒 self:RegisterProtocal(45004,"handle45004")--客服信息 self:RegisterProtocal(45005,"handle45005")--vip专属礼包信息 self:RegisterProtocal(45006,"handle45006")--购买vip专属礼包 self:RegisterProtocal(45007,"handle45007")--vip专属礼包查看信息 self:RegisterProtocal(45008,"handle45008")--查看vip专属礼包 self:RegisterProtocal(45009,"handle45009")--领取VIP等级礼包 self:RegisterProtocal(45010,"handle45010")--查看V3每日引导礼包 self:RegisterProtocal(45011,"handle45011")--领取V3每日引导礼包 --充值 self:RegisterProtocal(15800,"handle15800")--充值界面信息 self:RegisterProtocal(15801,"handle15801")--充值返利信息 self:RegisterProtocal(15899,"handle15899")--充值秘籍(封测阶段) self:RegisterProtocal(15802,"handle15802")--充值记录(客户端用于判断是否激活超级客服) self:RegisterProtocal(15803,"handle15803")--快速充值信息提交 self:RegisterProtocal(15903,"handle15903") self:RegisterProtocal(15904,"handle15904") --商品购买检查 -- 投资计划相关 self:RegisterProtocal(42000, "handle42000") -- 投资计划错误码 self:RegisterProtocal(42001, "handle42001") -- 投资信息:已投资信息 self:RegisterProtocal(42002, "handle42002") -- 投资 self:RegisterProtocal(42003, "handle42003") -- 投资领奖 --幻魔UP卡 self:RegisterProtocal(15901,"handle15901") --查看福利卡 self:RegisterProtocal(15902,"handle15902") --领取福利卡福利 -- --充值活动 -- self:RegisterProtocal(15951,"handle15951") -- self:RegisterProtocal(15952,"handle15952") -- self:RegisterProtocal(15953,"handle15953") end -- ########### 错误码 ############### -- protocol=45000 -- { -- s2c{ -- res :int32 // 错误码 -- } -- } function VipController:handle45000() local scmd = SCMD45000.New(true) -- print("45000scmd", scmd.res) -- ErrorCodeShow(scmd.res) end -- ############## 获得角色vip信息 ############## -- protocol=45001 -- { -- c2s{ -- } -- s2c{ -- vip_lv :int16 // 当前vip等级 -- experience_vip_lv :int16 // 体验vip等级 -- vip_exp :int32 // 当前vip等级经验 -- vip_endtime :int32 // Vip体验卡到期时间 -- vip_award_list:array{ -- not_got :int8 //尚未领取奖励的vip等级礼包 -- } -- } -- } function VipController:handle45001() local scmd = SCMD45001.New(true) print("45001scmd", scmd.res) PrintTable(scmd) self.model:UpdateVipInfomation(scmd) self.model:Fire(VipModel.REQUEST_CCMD_EVENT,45005) SupremeVipModel:getInstance():Fire(SupremeVipConst.REQUEST_CCMD_EVENT,45101)--请求自己的贵族信息 --达到能用小飞鞋的vip等级时,自动勾选设置中的“自动使用小飞鞋”一项 if not lua_settingM:GetAutoFlyShoeSet() and self.model:CanFreeUseShoe() then lua_settingM:SetAutoFlyShoeSet(true) end end -- ################## 使用充值卡激活vip(直接扣钻石) ###################### -- ## 注:充值成功后服务端会主动推送45001 -- protocol = 45002 -- { -- c2s{ -- card_type :int32 // 激活vip类型(卡片类型) -- } -- s2c{ -- res :int32 // 操作码 -- } -- } function VipController:handle45002() local scmd = SCMD45002.New(true) if scmd.res == 1 then Message.show("购买成功") else ErrorCodeShow(scmd.res) end end -- ################## VIP到期提醒 ###################### -- protocol = 45003 -- { -- c2s{ -- } -- s2c{ -- res :int32 // 操作码 1-体验卡到期 -- } -- } function VipController:handle45003() local scmd = SCMD45003.New(true) if scmd.res == 1 then Message.show("您的体验卡已到期!","fault") VipModel:getInstance():Fire(VipModel.OPEN_EXPERIENCE_VIEW,2) RoleManager.Instance.mainRoleInfo:ChangeVar("angry_value", 0, false, true) end self.model:Fire(VipModel.REQUEST_CCMD_EVENT,45001) end -- ########### 客服信息 ############## -- protocol = 45004 -- { -- c2s{ -- } -- s2c{ -- display :int8 // 1:显示 0:隐藏 -- display_code :int8 // 是否显示二维码 -- medium :string // 渠道 -- link_info_1 :string // 联系方式1 -- link_info_2 :string // 联系方式2 -- code_path :string // 二维码路径 -- remark :string // 客服信息 -- work_time :string // 工作时间 -- } -- } function VipController:handle45004() local scmd = SCMD45004.New(true) --print("45004scmd", scmd.res) --PrintTable(scmd) self.model:SetServiceData(scmd) end -- ############ vip专属礼包信息 ########## -- protocol = 45005 -- { -- c2s{ -- } -- s2c{ -- list:array{ -- vip_lv :int8 //礼包id -- state :int8 //0不可购买, 1可购买, 2已购买 -- } -- } -- } function VipController:handle45005() local scmd = SCMD45005.New(true) -- print("SCMD45005", scmd) -- PrintTable(scmd) self.model:SetVipGiftInfo(scmd.list) end -- ############ 购买vip专属礼包 ########## -- protocol = 45006 -- { -- c2s{ -- vip_lv :int16 // 当前vip等级 -- } -- s2c{ -- res :int8 // 1:成功 -- reward_list :arr_object_list // 奖励列表 -- } -- } function VipController:handle45006() local scmd = SCMD45006.New(true) -- print("SCMD45006", scmd) -- PrintTable(scmd) if scmd.res == 1 then Message.show("购买成功","success") -- self.model:Fire(VipModel.OPEN_RESULT_VIEW,scmd.goods_list) self.model:Fire(VipModel.REQUEST_CCMD_EVENT,45005) else ErrorCodeShow(scmd.res) end end -- ################## 领取VIP等级礼包 ###################### -- protocol = 45009 -- { -- c2s{ -- vip_lv : int8 //VIP等级 -- } -- s2c{ -- res :int32 // 操作码 -- vip_lv : int8 //VIP等级 -- rewards:array{ -- goods_type:int16 -- goods_id:int32 -- num:32 -- } -- } -- } function VipController:handle45009() local scmd = SCMD45009.New(true) print("SCMD45009", scmd) PrintTable(scmd) if scmd.res == 1 then local new_award_list = {} for n,l in ipairs(scmd.rewards) do new_award_list[#new_award_list + 1] = {l.goods_type, l.goods_id, l.num} end if #new_award_list > 0 then GiftModel:getInstance():Fire(GiftModel.OPEN_SHOW_ACT_GOODS_VIEW, new_award_list) end Message.show("领取成功","success") self.model:Fire(VipModel.REQUEST_CCMD_EVENT,45001) else ErrorCodeShow(scmd.res) end end -- ############ 查看V3每日引导礼包 ########## -- protocol = 45010 -- { -- c2s{ -- } -- s2c{ -- state:int8 //1是可领取2是已领取 -- } -- } function VipController:handle45010() local scmd = SCMD45010.New(true) print("SCMD45010", scmd) PrintTable(scmd) self.model.vip_three_award_state = scmd.state self.model:Fire(VipModel.UPDATE_EXPERIENCE_V_THREE_EX_RED) end -- ################## 领取V3每日引导礼包 ###################### -- protocol = 45011 -- { -- c2s{ -- } -- s2c{ -- res :int32 // 操作码1领取成功 -- } -- } function VipController:handle45011() local scmd = SCMD45011.New(true) print("SCMD45011", scmd) PrintTable(scmd) if scmd.res == 1 then Message.show("领取成功","success") self.model.vip_three_award_state = 2 self.model:Fire(VipModel.UPDATE_EXPERIENCE_V_THREE_EX_RED) else ErrorCodeShow(scmd.res) end end -- ########### 充值界面信息 ########## -- protocol=15800 -- { -- c2s{ -- } -- s2c{ -- product_list:array{ -- product_id :int32 //商品id -- return_type :int8 //返利类型 (0无返利|1终生首次|2活动时间首次) -- } -- } -- } function VipController:handle15800() local scmd = SCMD15800.New(true) -- print("huangcong:VipController [start:275] scmd:", scmd) -- PrintTable(scmd) -- print("huangcong:VipController [end]") self.model:SetRechargeCardData(scmd) end function VipController:handle15801() local scmd = SCMD15801.New(true) Message.show("充值成功") self.model:Fire(VipModel.UPDATE_RECHARGE_ITEM_DATA, scmd) end function VipController:handle15899() local scmd = SCMD15899.New(true) if scmd.res == 1 then else ErrorCodeShow(scmd.res) end end function VipController:handle15802() local scmd = SCMD15802.New(true) self.model:SetSuperVipOpenData(scmd) end function VipController:handle15803( ) local scmd = SCMD15803.New(true) if scmd.res ~= 1 then ErrorCodeShow(scmd.res) end end function VipController:handle15901() local scmd = SCMD15901.New(true) PrintTable(scmd) self.model:SetVipCarDayReward(scmd) end function VipController:handle15902() local scmd = SCMD15902.New(true) if scmd.errcode == 1 then else ErrorCodeShow(scmd.errcode) end end -- ########### 商品信息 ########## -- protocol=15903 -- { -- c2s{ -- product_type :int8 -- // 1普通充值(含充值返利) -- // 2福利卡 -- // 3每日礼包 -- // 4直购礼包 -- // 5首充奖励 -- } -- s2c{ -- product_type :int8 -- product_list:array{ -- product_id :int32// 商品id -- buy_counts :int32// 已购次数:对于有限购配置的才有效,其余均为0 -- } -- time_list:array{ -- sub_type :int32// 子类型 日 周 月 首充 不同类型的礼包 -- end_time :int32// 结束时间 -- } -- } -- } function VipController:handle15903() local scmd = SCMD15903.New(true) self.model:SetProductInfo(scmd) self.model:IsNeedRed(VipModel.TabType.PurchaseGift) end -- ########### 商品购买检查 ########## -- protocol=15904 -- { -- c2s{ -- product_id :int32 //商品id -- } -- s2c{ -- product_id :int32 //商品id -- errcode :int32 //1成功可以购买|其他错误码 -- } -- } function VipController:handle15904() local scmd = SCMD15904.New(true) -- print("huangcong:VipController [start:386] :", scmd) -- PrintTable(scmd) -- print("huangcong:VipController [end]") if scmd.errcode == 1 then if AppConst.UpdateMode then local callback = function(state) end local product_cfg = Config.Rechargeproduct[scmd.product_id] if not product_cfg then Message.show("没有商品配置"..scmd.product_id) end local custom_info = { pay_title = Trim(product_cfg.product_name), id = scmd.product_id, } PlatformMgr:getInstance():PayRequest(product_cfg.money, custom_info, callback) else local text = "recharge_" .. scmd.product_id print("点击充值卡,通过秘籍购买直购礼包====:", text) CheatModel:getInstance():Fire(CheatModel.SEND_CHEAT_TO_SERVER, text) end else ErrorCodeShow(scmd.errcode) end end -- 投资计划相关协议 function VipController:handle42000( ) local vo = SCMD42000.New(true) if vo.code ~= 1 then ErrorCodeShow(vo.code, vo.args) end end function VipController:handle42001( ) local vo = SCMD42001.New(true) self.model:SetInvestmentData(vo) -- 特殊处理后不在这边更新了 -- self.model:IsNeedRed(VipModel.TabType.Investment) -- self.model:Fire(VipModel.UPDATE_INVESTMENT_DATA) end function VipController:handle42002( ) local vo = SCMD42002.New(true) if vo.res == 1 then -- 成功会主推42001,失败走42000错误码 Message.show("投资成功") end end function VipController:handle42003( ) local vo = SCMD42003.New(true) self.model:UpdateInvestmentRewardId(vo) self.model:IsNeedRed(VipModel.TabType.Investment) self.model:Fire(VipModel.UPDATE_INVESTMENT_DATA, vo.type) end -- ############ vip专属礼包查看信息 ########## -- protocol = 45007 -- { -- c2s{ -- } -- s2c{ -- list:array{ -- vip_lv :int8 //vip等级 -- } -- } -- } function VipController:handle45007() local scmd = SCMD45007.New(true) -- print("huangcong:VipController [start:514] :", scmd) -- PrintTable(scmd) -- print("huangcong:VipController [end]") self.model:SetVipGiftFindInfo(scmd) self.model:IsNeedRed(VipModel.TabType.Noble) end -- ############ 查看vip专属礼包 ########## -- protocol = 45008 -- { -- c2s{ -- vip_lv :int8 //vip等级 -- } -- s2c{ -- res :int32 // 1:成功 -- } -- } function VipController:handle45008() local scmd = SCMD45008.New(true) if scmd.res == 1 then self.model:Fire(VipModel.REQUEST_CCMD_EVENT,45007) else -- ErrorCodeShow(scmd.res) end end