local Cheat_Model = {} local private = {} local EventSystem = require('Event/EventSystem') local WorldBossAutoTest = require("Tools/WorldBossAutoTest") local ArgParser = require("Tools/ArgParser") local debug_pb = require 'Proto/debug_pb' private.CheatIsPause = false private.ShowPS = true private.ShowPsInstance = true private.EnableEnemyCheat = false private.ShowPlayer = true private.ShowScene = true private.isOpenOcclusion = true private.isOpenLod = true private.isShowActorHP = true private.isShowCombo = true private.isUseZhangBao = false private.isRecordElectricity = false private.isDebugSkipTimeline = false private.isUseSameActor = false --场景物件 private.isShowTree = true private.isShowGrass = true private.isShowObjects = true private.isShowItem = true private.isShowDynamic = true --Shader private.replaceShader = false --是否PC-Cheat模式 private.isPCCheat = false function Cheat_Model.OnStartup() NetManager.RegisterMsgCB(MessageEnums.MessageDebugInner, private.OnDebugInner) end function private.OnDebugInner(msg) if msg.Success then logging.log(LTAG.LOG, "Cheat 指令添加成功 ") else logging.log(LTAG.ERROR, "Cheat 指令有误 ", msg.Msg) end end function Cheat_Model.Set_IsWorldBossAutoFightTest(value) private.IsWorldBossAutoFightTest = value WorldBossAutoTest.Enable = value -- gws : 由于一致性校验程序中不能直接用 MDL.Cheat.Get_IsWorldBossAutoFightTest ,所以才在另外一个使用的脚本标记是否启用 end function Cheat_Model.Get_IsWorldBossAutoFightTest() return private.IsWorldBossAutoFightTest end function Cheat_Model.Get_IsDebugSkipTimeline() return private.isDebugSkipTimeline; end function Cheat_Model.Set_IsDebugSkipTimeline(isSkip) private.isDebugSkipTimeline=isSkip end function Cheat_Model.Set_isUseSameActor() private.isUseSameActor=true end function Cheat_Model.Get_isUseSameActor() return private.isUseSameActor end function Cheat_Model.Set_CheatIsPause(value) private.CheatIsPause = value LevelManager.PauseLevel(value) end function Cheat_Model.Get_CheatIsPause() return private.CheatIsPause end function Cheat_Model.Get_ForceNewGuideLevel() return private.forceNewGuideLevel end function Cheat_Model.Set_ForceNewGuideLevel(value) private.forceNewGuideLevel = value end function Cheat_Model.Set_ShowPS(value) private.ShowPS = value AuxUtil.ShowOrHidePaticleSystem(value) end function Cheat_Model.Get_ShowPS() return private.ShowPS end function Cheat_Model.Set_ShowPsInstance(value) private.ShowPsInstance = value AuxUtil.ShowOrHidePsInstance(value) end function Cheat_Model.Get_ShowPsInstance() return private.ShowPsInstance end function Cheat_Model.Set_EnableEnemyCheat(value,Count) private.EnableEnemyCheat = value AuxUtil.OptimizeEnemy(value, Count) local entityDic = BattleDataGetter.GetEntityDic() for k, v in pairs(entityDic) do if not BattleDataGetter.IsCurEntity(v) then v.ExpEntity:SetVisible(true) end end end function Cheat_Model.Get_EnableEnemyCheat() return private.EnableEnemyCheat end function Cheat_Model.Set_ShowPlayer(value) private.ShowPlayer = value AuxUtil.ShowOrHideActor(value) NotSyncBattleSetter.SetMainPlayerExpVisible(value) end function Cheat_Model.Get_ShowPlayer() return private.ShowPlayer end function Cheat_Model.Set_ShowScene(value) private.ShowScene = value AuxUtil.ShowOrHideMainTown(value) end function Cheat_Model.Get_ShowScene() return private.ShowScene end function Cheat_Model.Set_isOpenOcclusion(value) private.isOpenOcclusion = value CameraController.Instance.MainCamera.useOcclusionCulling = value end function Cheat_Model.Get_isOpenOcclusion() return private.isOpenOcclusion end function Cheat_Model.Set_isOpenLod(value) private.isOpenLod = value AuxUtil.DevLev_CloseOrOpenLod(value) end function Cheat_Model.Get_isOpenLod() return private.isOpenLod end function Cheat_Model.Set_isShowActorHP(value) private.isShowActorHP = value AuxUtil.ShowOrHideActorHP(value) end function Cheat_Model.Get_isShowActorHP() return private.isShowActorHP end function Cheat_Model.Set_isRecordElectricity(value) private.isRecordElectricity = value AuxUtil.RecordElectricity(value) end function Cheat_Model.Get_isRecordElectricity() return private.isRecordElectricity end function Cheat_Model.Set_isShowCombo(value) private.isShowCombo = value AuxUtil.ShowOrHideCombo(value) end function Cheat_Model.Get_isShowCombo() return private.isShowCombo end function Cheat_Model.Set_isUseZhangBao(value) private.isUseZhangBao = value end function Cheat_Model.Get_isUseZhangBao() return private.isUseZhangBao end function Cheat_Model.Set_isShowTree(value) private.isShowTree = value AuxUtil.ShowOrHideTree(value) end function Cheat_Model.Get_isShowTree() return private.isShowTree end function Cheat_Model.Set_isShowGrass(value) private.isShowGrass = value AuxUtil.ShowOrHideGrass(value) end function Cheat_Model.Get_isShowGrass() return private.isShowGrass end function Cheat_Model.Set_isShowObjects(value) private.isShowObjects = value AuxUtil.ShowOrHideObject(value) end function Cheat_Model.Get_isShowObjects() return private.isShowObjects end function Cheat_Model.Set_isShowItem(value) private.isShowItem = value AuxUtil.ShowOrHideItem(value) end function Cheat_Model.Get_isShowItem() return private.isShowItem end function Cheat_Model.Set_isShowDynamic(value) private.isShowDynamic = value AuxUtil.ShowOrHideDynamic(value) end function Cheat_Model.Get_isShowDynamic() return private.isShowDynamic end function Cheat_Model.Set_replaceShader(value) private.replaceShader = value AuxUtil.ReplaceShader(value) end function Cheat_Model.Get_replaceShader() return private.replaceShader end --send Msg To Server function Cheat_Model.Send(cmdMsg) local cmdResult = ArgParser.ParseResult(cmdMsg)--整个命令结构,包括协议和参数内容,可遍历获取内容 local cmdName = cmdResult:GetCommandName() local commandCfgData = CTL.Cheat.GetCommandCfgData(cmdName); -- 在登录界面下 拦截不符合要求的cheat命令 if NetManager.IsLaunch() and (not commandCfgData.clientOnly or commandCfgData.dependLogin) then return end if commandCfgData.clientOnly then --此处调用注册时设置的函数 CTL.Cheat.ExcuteClientCommand(cmdName, cmdResult); return end local msg = NetManager.GetPB("debug_pb").DebugInnerReq() local commandData = CTL.Cheat.GetCommandCfgData(cmdName) msg.CmdTyp = commandData.protoType for i, k, v in cmdResult:Iterator() do print(string.format("%s=%s, %s", i, k, v)) if type(v) == 'string' then msg.StrParam:append(v) elseif type(v) == 'number' then msg.IntParam:append(v) end end NetManager.SendMessage(MessageEnums.MessageDebugInner, msg) end function Cheat_Model.SendFirstParamIsAcid(protoType, commandParam) local selfAcid = BattleDataGetter.GetAcID() if string.isNilOrEmpty(selfAcid) then return end local msg = debug_pb.DebugInnerReq() msg.CmdTyp = protoType msg.StrParam:append(selfAcid) for _, v in pairs(commandParam) do if type(v) == 'string' then msg.StrParam:append(v) elseif type(v) == 'number' then msg.IntParam:append(v) end end NetManager.SendMessage(MessageEnums.MessageDebugInner, msg) end --一键获取指定类型的所有道具 function Cheat_Model.GetAllItemByItemType(type,num) local num = tonumber(num) or 1 local msg = debug_pb.DebugInnerReq() msg.CmdTyp = "AddItem" for _, v in DataSheetManager.ItemData:GetEnumerator() do if v.FirstType == type then msg.StrParam:append(tostring(v.ID)) msg.IntParam:append(num) end end NetManager.SendMessage(MessageEnums.MessageDebugInner, msg) end --PCCheat模式 function Cheat_Model.SetPCCheatModel(isPCCheat) private.isPCCheat = isPCCheat end function Cheat_Model.IsPCCheatModel() return private.isPCCheat end return Cheat_Model