|
|
-
- CheatModel = CheatModel or BaseClass(BaseVo)
-
- CheatModel.UPDATE_CHEAT_INPUT_VIEW = "UPDATE_CHEAT_INPUT_VIEW" --更新秘籍界面数据
-
- CheatModel.SEND_CHEAT_TO_SERVER = "SEND_CHEAT_TO_SERVER" --发送秘籍到服务端
-
- CheatModel.CHEAT_PRINT_DEBUG_INFO = "CHEAT_PRINT_DEBUG_INFO" --打印调试信息
-
- CheatModel.OPEN_CHEAT_SHOW_VIEW = "OPEN_CHEAT_SHOW_VIEW" --打开版号隐藏的界面
-
- CheatModel.OPEN_CAMERA_EDIt_VIEW = "OPEN_CAMERA_EDIt_VIEW" --打开摄像机参数编辑界面
-
- CheatModel.OPEN_UI_CAMERA_EDIT_VIEW = "OPEN_UI_CAMERA_EDIT_VIEW" --打开模型摄像机参数编辑界面
-
- CheatModel.OPEN_BLOOM_EDIt_VIEW = "OPEN_BLOOM_EDIt_VIEW" --打开泛光参数编辑界面
-
- CheatModel.OPEN_CLIENT_PROPERTY_VIEW = "OPEN_CLIENT_PROPERTY_VIEW" --打开属性预览界面
-
- CheatModel.OPEN_CLIENT_ACCELERATION_VIEW = "OPEN_CLIENT_ACCELERATION_VIEW"
-
- CheatModel.Quick_Run_Code = "CheatModel.Quick_Run_Code"--快速执行Lua代码
-
- CheatModel.CLICK_BTN_OK = "CheatModel.CLICK_BTN_OK" --点击确认秘籍
-
- CheatModel.OPEN_FXAA_TEST_VIEW = "CheatModel.OPEN_FXAA_TEST_VIEW" -- 打开FXAA调试界面
-
- CheatModel.OPEN_FREE_CAMERA_VIEW = "CheatModel.OPEN_FREE_CAMERA_VIEW" -- 打开发行全自由摄像机界面
-
- CheatModel.OPEN_GREEN_SCREEN_CLICK_VIEW = "CheatModel.OPEN_GREEN_SCREEN_CLICK_VIEW" -- 打开发行绿屏切换界面
-
- CheatModel.OPEN_SELECTROLEVIEW_SHOW_CLICK_VIEW = "CheatModel.OPEN_SELECTROLEVIEW_SHOW_CLICK_VIEW" -- 打开发行切换显示选角界面
-
- function CheatModel:__init()
- CheatModel.Instance = self
- self.cheats_data = nil
- self.show_green_screen = false
- self.func_list = {
- ["@test"] = CheatModel.HandleTest,
- ["@perform"] = CheatModel.HandlePerform,
- ["@hideui"] = CheatModel.HandleHideUI,
- }
-
- self.module_check = "perform_"
- self.module_data = {}
- local func = function( module, data )
- self.module_data[module] = data
- end
- GlobalEventSystem:Bind( EventName.SENT_MODULE_DEBUG_DATA,func)
- end
-
- function CheatModel:getInstance()
- if CheatModel.Instance == nil then
- CheatModel.New();
- end
- return CheatModel.Instance
- end
-
- --保存服务端下发的秘籍
- function CheatModel:SetCheatsData(data)
- self.cheats_data = data
- self:Fire(CheatModel.UPDATE_CHEAT_INPUT_VIEW)
- end
-
- function CheatModel:CheckCommand(command)
- -- if ClientConfig.is_out_server then
- -- return true
- -- end
- if not command then
- return true
- end
-
- if string.len(command) < 2 then
- return true
- end
-
- local command_mode = string.find(command, "@")
- if command_mode ~= 1 then
- return true
- end
-
- local handle_func = self.func_list[command]
- if handle_func then
- handle_func(self, command)
- return false
- end
-
- if string.find(command,self.module_check) then
- self:ModuleCheck(command)
- return false
- end
-
- if string.find(command, "@deviceid") then
- if SystemInfo then
- local temp_model = SystemInfo.deviceModel or "0"
- local temp_name = SystemInfo.deviceName or "1"
- local temp_uid = SystemInfo.deviceUniqueIdentifier or "2"
- local temp_gid = SystemInfo.graphicsDeviceID or "3"
- local temp_gvid = SystemInfo.graphicsDeviceVendorID or "4"
- local str = "temp_model = " .. temp_model .. " temp_name = " .. temp_name .. " temp_uid = " .. temp_uid .. " temp_gid = " .. temp_gid .. " temp_gvid = " .. temp_gvid
- Message.show("deviceid = " .. str)
- end
- return false
- end
-
-
- if string.find(command,"@RunCode:") then
- --执行Lua代码的后门
- self:QuickRunCode(command)
- return false
- end
-
- if string.find(command, "@LuaProfilerStart") then
- Message.show("LuaProfilerStart")
- LuaProfiler.start()
- return false
- end
-
- if string.find(command, "@LuaProfilerStop") then
- LuaProfiler.stop()
- local str = LuaProfiler._CUSTOM_REPORTS
- GameError.Instance:SendErrorMsg(str)
- Message.show("LuaProfilerStop")
- return false
- end
-
- if string.find(command, "@OpenCheatState") then
- GlobalOpenCheatState = true
- return false
- end
-
- if string.find(command, "@baseres") then
- self:LoadBaseSceneRes()
- return false
- end
-
-
- return true
- end
-
- function CheatModel.HandleTest()
- GlobalEventSystem:Fire(EventName.OPEN_CHEAT_INPUT_VIEW) --秘籍
- end
-
- function CheatModel.HandlePerform()
- GlobalEventSystem:Fire(EventName.OPEN_LUA_STATE_VIEW) --lua状态
- end
-
- function CheatModel.HandleHideUI()
- local hide_list = {"Top","Activity","UI","Main","NameBoard","Dynamic_NameBoard"} --隐藏界面
- local obj_trans = GameObject.Find("root").transform:Find("Canvas").transform
- for index,layer in pairs(hide_list) do
- obj_trans:Find(layer).gameObject:SetActive(false)
- end
- end
-
- function CheatModel:QuickRunCode( str )
- if not str then print("CheatModel:QuickRunCode传值为空") return end
- CheatModel:getInstance():Fire(CheatModel.Quick_Run_Code,str)
- end
-
- function CheatModel:ModuleCheck(command)
- local temp = Split(command,"_")
- if #temp == 2 then
- GlobalEventSystem:Fire(EventName.CHECK_MODULE_DEBUG_DATA)
-
- local module_name = temp[2]
- if temp[2] ~= "" then
- local sent = function()
- local sent_data = ""
- for cur_module,data in pairs(self.module_data) do
- if module_name == "all" then
- sent_data = sent_data .. cur_module .. "\n" .. TableToStr(data) .. "\n"
- elseif cur_module == module_name then
- sent_data = sent_data .. cur_module .. "\n" .. TableToStr(data)
- break
- end
- end
- self.module_data = {}
- if Application.platform ~= RuntimePlatform.Android and Application.platform ~= RuntimePlatform.IPhonePlayer then
- Debugger.LogWarning("模块调试信息:" .. "\n" .. sent_data)
- else
- GameError.Instance:SendErrorMsg(sent_data,true)
- end
- end
- setTimeout(sent,2)
- end
- elseif #temp == 3 then
- local module_name = temp[2]
- local func_name = temp[3]
- if module_name ~= "" and func_name ~= "" then
- GlobalEventSystem:Fire(EventName.DO_MODULE_DEBUG_FUNC,module_name,func_name)
- end
- end
- end
-
- function CheatModel:AutoUpgradeFight()
- local wear_equip_list = GoodsModel:getInstance().wear_equip_list
- local equip = {}
- for _, v in pairs(wear_equip_list) do
- equip[v.equip_type] = v
- end
-
- local add_list = {}
-
- local best_equip = {}
- local career, level, turn = RoleManager.Instance.mainRoleInfo.career, RoleManager.Instance.mainRoleInfo.level, RoleManager.Instance.mainRoleInfo.turn
- StartCoroutine(function()
- local fun,tbl
- local fight1, fight2
- for k, v in pairs(Config.Goods) do
- fun = loadstring(v)
- tbl = fun()
- if tbl.type == GoodsModel.TYPE.EQUIP then
- if (tbl.career_id == 0 or tbl.career_id == career) and tbl.level <= level and (tbl.turn == 0 or tbl.turn == turn) then
- if best_equip[tbl.equip_type] then
- fight1 = GetFighting(ErlangParser:GetInstance():Parse(tbl.base_attrlist))
- fight2 = GetFighting(ErlangParser:GetInstance():Parse(best_equip[tbl.equip_type].base_attrlist))
- best_equip[tbl.equip_type] = (best_equip[tbl.equip_type].level < tbl.level or fight2 < fight1) and tbl or best_equip[tbl.equip_type]
- else
- best_equip[tbl.equip_type] = tbl
- end
- end
- end
- --WaitForSeconds(0.25)
- end
-
- for k, v in pairs(best_equip) do
- if not equip[k] or equip[k].type_id ~= v.type_id then
- add_list[#add_list + 1] = v.type_id
- end
- end
- local cheats
- for k, v in pairs(add_list) do
- cheats = "goods_"..v.."_1"
- CheatModel:getInstance():Fire(CheatModel.SEND_CHEAT_TO_SERVER, cheats)
- WaitForSeconds(0.5)
- end
- end)
- end
-
- function CheatModel:OnCreateMonList( )
- local mon_list = {
- 13010001,
- 13010002,
- 13010003,
- 13020001,
- 13020002,
- 13020003,
- 13030001,
- 13030002,
- 13030003,
- 10040001,
- 10040002,
- }
-
- local index = 1
- local function on_step( )
- local mon_id = mon_list[index]
- if mon_id then
- local cmd = string.format("mon_%d_1", mon_id)
- self:Fire(CheatModel.SEND_CHEAT_TO_SERVER, cmd)
- else
- if self.create_mon_timer then
- GlobalTimerQuest:CancelQuest(self.create_mon_timer)
- self.create_mon_timer = nil
- end
- end
- index = index + 1
- end
- if self.create_mon_timer then
- GlobalTimerQuest:CancelQuest(self.create_mon_timer)
- self.create_mon_timer = nil
- end
- self.create_mon_timer = GlobalTimerQuest:AddPeriodQuest(on_step, 1, -1)
- end
-
- -- 发行绿屏统一接口 model_con:挂载模型后的UIModelCommon类 camera_type:1 主摄像机 2 UI摄像机 3 UIModel摄像机
- -- mul_model_con : 发送的model_con是否是多个model_con组成的列表
- -- green_click_size : 绿幕切换热区大小
- function CheatModel:SetupGreenScreenEffect(show, model_con, camera_type, mul_model_con, green_click_size)
- -- if show and not model_con then return end
- if not LoginModel.ENABLE_GREEN_SCREEN then return end -- 不需要绿屏的话直接return
- self.temp_model_con = model_con or self.temp_model_con
- self.temp_camera_type = camera_type or self.temp_camera_type
- self.temp_mul_model_con = mul_model_con or self.temp_mul_model_con
- if not self.temp_model_con or not self.temp_camera_type then return end
- self.show_green_screen = show
- if not self.mc_camera then -- 获取主摄像机
- self.mc_camera = MainCamera.Instance.camera
- if camera_type == 1 then
- self.target_postEffect = MainCamera.Instance.camera_gameObject:GetComponent(typeof(PostEffect))
- self.default_cullingMask = self.mc_camera.cullingMask
- self.default_clearFlag = self.mc_camera.clearFlags
- self.default_color = self.mc_camera.backgroundColor
- end
- end
- if not self.ui_camera then -- 获取UI摄像机
- self.ui_camera = MainCamera.Instance.uiCamera
- if camera_type == 2 then
- self.target_postEffect = MainCamera.Instance.uiCamera_gameObject:GetComponent(typeof(PostEffect))
- self.default_cullingMask = self.ui_camera.cullingMask
- self.default_clearFlag = self.ui_camera.clearFlags
- self.default_color = self.ui_camera.backgroundColor
- end
- end
- if not self.ui_back_camera then -- 获取UIBack摄像机
- self.ui_back_camera = GameObject.Find("root").transform:Find("UIBackRoleCamera"):GetComponent("Camera")
- if camera_type == 3 then
- self.target_postEffect = self.ui_back_camera.gameObject:GetComponent(typeof(PostEffect))
- self.default_cullingMask = self.ui_back_camera.cullingMask
- self.default_clearFlag = self.ui_back_camera.clearFlags
- self.default_color = self.ui_back_camera.backgroundColor
- end
- end
- self.target_postEffect_enabled = self.target_postEffect and self.target_postEffect.enabled or false
- -- 设置需要被隐藏的摄像机
- if camera_type == 1 then
- self.target_camera = self.mc_camera
- self.target_hide_camera1 = self.ui_camera
- self.target_hide_camera2 = self.ui_back_camera
- elseif camera_type == 2 then
- self.target_camera = self.ui_camera
- self.target_hide_camera1 = self.mc_camera
- self.target_hide_camera2 = self.ui_back_camera
- elseif camera_type == 3 then
- self.target_camera = self.ui_back_camera
- self.target_hide_camera1 = self.mc_camera
- self.target_hide_camera2 = self.ui_camera
- end
- -- 修改目标摄像机的渲染层级,修改清除模式,并控制UI摄像机的渲染
- if self.target_camera then
- if self.show_green_screen then
- self.target_camera.cullingMask = bit.bor(0, bit.lshift(1, UIPartical.RenderingOther_List.Role))
- self.target_camera.clearFlags = UnityEngine.CameraClearFlags.SolidColor
- self.target_camera.backgroundColor = Color(0, 1, 0, 1)
- if self.target_postEffect then
- self.target_postEffect.enabled = false
- end
- self.target_hide_camera1.enabled = false
- self.target_hide_camera2.enabled = false
- else
- self.target_camera.cullingMask = self.default_cullingMask
- self.target_camera.clearFlags = self.default_clearFlag
- self.target_camera.backgroundColor = self.default_color
- if self.target_postEffect then
- self.target_postEffect.enabled = self.target_postEffect_enabled
- end
- self.target_hide_camera1.enabled = true
- self.target_hide_camera2.enabled = true
- end
- end
- -- 根据是否绿幕修改主角模型的渲染层级
- if self.temp_model_con then
- if not self.default_layer then -- 在修改前,按照InstanceID存储节点的layer层级
- self.default_layer = {}
- end
- local layer = self.show_green_screen and UIPartical.RenderingOther_List.Role or nil
- local function set_role_layer(obj)
- if IsNull(obj) then
- return
- end
- for i = 0, obj.childCount - 1 do
- local instanceID = obj:GetChild(i):GetInstanceID()
- self.default_layer[instanceID] = self.default_layer[instanceID] or obj:GetChild(i).gameObject.layer
- obj:GetChild(i).gameObject.layer = layer or self.default_layer[instanceID]
- set_role_layer(obj:GetChild(i), layer)
- end
- end
- local function set_layer_callback(target_model_con)
- if target_model_con.type == SceneBaseType.FWeapon then -- 武器要特殊处理
- target_model_con.weapon_hand_list = target_model_con.weapon_hand_list or {}
- for k, v in pairs(target_model_con.weapon_hand_list) do
- set_role_layer(v.transform)
- end
- else
- if target_model_con.role then
- set_role_layer(target_model_con.role.transform)
- end
- end
- end
- if mul_model_con then -- 如果temp_model_con发的是多个模型列表
- for k, v in pairs(self.temp_model_con) do
- set_layer_callback(v)
- end
- else
- set_layer_callback(self.temp_model_con)
- end
- -- if self.temp_model_con.type == SceneBaseType.FWeapon then -- 武器要特殊处理
- -- self.temp_model_con.weapon_hand_list = self.temp_model_con.weapon_hand_list or {}
- -- for k, v in pairs(self.temp_model_con.weapon_hand_list) do
- -- set_role_layer(v.transform)
- -- end
- -- else
- -- if self.temp_model_con.role then
- -- set_role_layer(self.temp_model_con.role.transform)
- -- end
- -- end
- end
- -- 打开切换绿屏的窗口
- self:Fire(CheatModel.OPEN_GREEN_SCREEN_CLICK_VIEW, true, green_click_size)
- end
- -- 秘籍弹出的窗口调用,用来直接开关已有的绿屏
- function CheatModel:EnabledGreenScreenEffect(show)
- if self.temp_model_con and self.temp_camera_type then
- self:SetupGreenScreenEffect(show, self.temp_model_con, self.temp_camera_type, self.temp_mul_model_con)
- end
- end
- -- 退出界面时使用,关闭绿屏,清除缓存的摄像机
- function CheatModel:DisabledGreenScreenEffect(hide_tips)
- if self.show_green_screen then
- self:SetupGreenScreenEffect(false)
- end
- self.show_green_screen = false
- local show_str = self.temp_model_con and true or false
- self.temp_model_con = nil
- self.temp_camera_type = nil
- self.temp_mul_model_con = nil
- self.mc_camera = nil
- self.ui_camera = nil
- self.ui_back_camera = nil
- self.target_camera = nil
- self.target_hide_camera1 = nil
- self.target_hide_camera2 = nil
- self.default_layer = nil
- self:Fire(CheatModel.OPEN_GREEN_SCREEN_CLICK_VIEW, false)
- LoginModel.ENABLE_GREEN_SCREEN = false
- if show_str and not hide_tips then
- Message.show("退出绿屏模式,需要时请重新启用")
- end
- end
-
- function CheatModel:LoadBaseSceneRes( )
- self.scene_index = self.scene_index or 1
- self.scene_list = {
- --大世界
- "1001", "1002", "1003", "1004", "1005", "1006", "1007", "1008",
- --副本玩法
- "2051", "2001", "2071", "7001", "4064", "4063",
- }
- self.scene_id = self.scene_list[self.scene_index]
-
- local function on_load_scene( )
- local function load_scene_call_back( objs )
- if objs then
- self.async_load_map_obj = UnitySceneManager.LoadSceneAsync(self.scene_id)
- end
- end
- lua_resM:loadPrefabs(self, "terrain_scene_" .. self.scene_id, {}, load_scene_call_back)
- print("tanar: [CheatModel 444]=> self.scene_id: ",self.scene_id)
- end
-
- local function on_load_finish( )
- if self.check_load_event then
- GlobalTimerQuest:CancelQuest(self.check_load_event)
- self.check_load_event = nil
- end
- self.scene_id = tostring(SceneManager:getInstance():GetSceneId())
- on_load_scene()
- Message.show("加载完成")
- GlobalEventSystem:Fire(EventName.HIDE_LOADING_VIEW)
- end
-
- local check_load = function()
- if self.async_load_map_obj then
- local progress = self.async_load_map_obj.progress
- local max_progress = 1
- if progress >= max_progress then
- self.async_load_map_obj = nil
- self.scene_index = self.scene_index + 1
- self.scene_id = self.scene_list[self.scene_index]
- if tonumber(self.scene_id) == SceneManager:getInstance():GetSceneId() then
- self.scene_index = self.scene_index + 1
- self.scene_id = self.scene_list[self.scene_index]
- end
- if not self.scene_id then
- on_load_finish()
- return
- end
- on_load_scene()
- end
- end
- end
-
- on_load_scene()
- GlobalEventSystem:Fire(EventName.SHOW_LOADING_VIEW)
- if self.check_load_event then
- GlobalTimerQuest:CancelQuest(self.check_load_event)
- end
- self.check_load_event = GlobalTimerQuest:AddPeriodQuest(check_load, 0.5, -1)
- end
|