From 59e957ea3aac41ef104c2385278f76d813e84123 Mon Sep 17 00:00:00 2001 From: CAtlas0784 Date: Wed, 16 Sep 2026 18:35:37 +0700 Subject: [PATCH] feat(client-patch): update fastpatch with RpcChecker bypass, F8 outfit toggle, F7 monster spawn, selfie camera fixes, and fog removal --- .../proxy/public/fastpatch_4229938.zip | Bin 5521 -> 6368 bytes .../tools/generate_client_config_patch.js | 118 +++++++++++++++--- 2 files changed, 100 insertions(+), 18 deletions(-) diff --git a/Ananta.Proxy/proxy/public/fastpatch_4229938.zip b/Ananta.Proxy/proxy/public/fastpatch_4229938.zip index 77e61bc1e48be32f122a4b5453758f7413a8b4a7..d4e848e3ab1a672428809d321ae4cba30d5e1a14 100644 GIT binary patch delta 6150 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 diff --git a/Ananta.Proxy/proxy/tools/generate_client_config_patch.js b/Ananta.Proxy/proxy/tools/generate_client_config_patch.js index 0f80d23..b29b206 100644 --- a/Ananta.Proxy/proxy/tools/generate_client_config_patch.js +++ b/Ananta.Proxy/proxy/tools/generate_client_config_patch.js @@ -187,6 +187,8 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` if gMapSystem then\n` + ` gMapSystem.CanShowVehicleNavRoute = function(self) return true end\n` + ` gMapSystem.CheckCanShowVehicleNavLine = function(self) return true end\n` + +` pcall(function() gMapSystem:GmSwitchFlag("FogMap", false) end)\n` + +` pcall(function() gMapSystem:GmSwitchFlag("ShowAllMapArea", true) end)\n` + ` if gMapSystem.fogMap then\n` + ` gMapSystem.fogMap.IsUnlocked = function(self, sceneId, x, z) return true end\n` + ` end\n` + @@ -211,6 +213,14 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` local mapStore = GroupName2Class and GroupName2Class.NewMapPanelStore or C_NewMapPanelStore\n` + ` if mapStore and not mapStore._teleportHooked then\n` + ` mapStore._teleportHooked = true\n` + +` local origOnShow = mapStore.OnShow\n` + +` mapStore.OnShow = function(self, ...)\n` + +` pcall(function()\n` + +` if self.fogNode then self.fogNode:SetActive(false) end\n` + +` if self.fogRoot then self.fogRoot:SetActive(false) end\n` + +` end)\n` + +` if origOnShow then return origOnShow(self, ...) end\n` + +` end\n` + ` local origOnMainClick = mapStore.OnMainClick\n` + ` mapStore.OnMainClick = function(self, evtData)\n` + ` local isAlt = false\n` + @@ -223,8 +233,19 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` local uiPos = self:GetPointerUIPos()\n` + ` local texPos = self:TransformUIToTex(uiPos)\n` + ` local areaId, worldPos = self:TryTransformTexToWorld(texPos)\n` + -` if worldPos and L50 and L50.Gm and L50.Gm.AutoQaFunctions and L50.Gm.AutoQaFunctions.TeleportToPos then\n` + -` L50.Gm.AutoQaFunctions.TeleportToPos(worldPos.x, worldPos.z)\n` + +` if worldPos then\n` + +` local playerY = 274.6\n` + +` pcall(function()\n` + +` if gCS and gCS.MyPlayerManager and gCS.MyPlayerManager.PlayerUnit then\n` + +` local p = gCS.MyPlayerManager.PlayerUnit.Pos\n` + +` if p and p.y > 10 then playerY = p.y end\n` + +` end\n` + +` end)\n` + +` if L50 and L50.Gm and L50.Gm.AutoQaFunctions and L50.Gm.AutoQaFunctions.TeleportXYZ then\n` + +` L50.Gm.AutoQaFunctions.TeleportXYZ(worldPos.x, playerY, worldPos.z)\n` + +` elseif L50 and L50.Gm and L50.Gm.AutoQaFunctions and L50.Gm.AutoQaFunctions.TeleportToPos then\n` + +` L50.Gm.AutoQaFunctions.TeleportToPos(worldPos.x, worldPos.z)\n` + +` end\n` + ` pcall(function() gMainPhoneUtils.CloseMainPhonePanel(true) end)\n` + ` pcall(function() self:OnBtnClose() end)\n` + ` return\n` + @@ -253,27 +274,39 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` return false\n` + ` end\n` + ` end\n` + +` local hudCtrl = GroupName2Class and GroupName2Class.PlayerHUDCtrl or C_PlayerHUDCtrl\n` + +` if hudCtrl and not hudCtrl._hideFHooked then\n` + +` hudCtrl._hideFHooked = true\n` + +` local oldHudUpdate = hudCtrl.Update\n` + +` hudCtrl.Update = function(self)\n` + +` if self.unit and self.unit.IsMe then\n` + +` pcall(function()\n` + +` if self.interactBtn then\n` + +` self.interactBtn:SetActive(false)\n` + +` end\n` + +` end)\n` + +` end\n` + +` if oldHudUpdate then return oldHudUpdate(self) end\n` + +` end\n` + +` end\n` + ` if gBuyHouseUtils then\n` + ` gBuyHouseUtils.CheckHasBuyTheHouse = function(houseId) return true end\n` + ` gBuyHouseUtils.CheckBuyHouseMoneyEnough = function(houseId) return true end\n` + ` end\n` + ` if C_PlayerItemManager then\n` + -` local origGet = C_PlayerItemManager.GetPackItemNum\n` + -` C_PlayerItemManager.GetPackItemNum = function(self, id)\n` + -` local val = origGet and origGet(self, id) or 0\n` + -` return val > 99999 and val or 99999\n` + -` end\n` + +` C_PlayerItemManager.GetPackItemNum = function(self, id) return 999999 end\n` + ` end\n` + ` if gPlayerItemManager then\n` + -` local origGetG = gPlayerItemManager.GetPackItemNum\n` + -` gPlayerItemManager.GetPackItemNum = function(self, id)\n` + -` local val = origGetG and origGetG(self, id) or 0\n` + -` return val > 99999 and val or 99999\n` + -` end\n` + +` gPlayerItemManager.GetPackItemNum = function(self, id) return 999999 end\n` + ` end\n` + ` local photoStore = GroupName2Class and GroupName2Class.PhotoPanelStore or C_PhotoPanelStore\n` + ` if photoStore and not photoStore._selfieHooked then\n` + ` photoStore._selfieHooked = true\n` + +` local origOnShowPhoto = photoStore.OnShow\n` + +` photoStore.OnShow = function(self, ...)\n` + +` self.selectedSpirit = self.selectedSpirit or (gCS and gCS.MyPlayerManager and gCS.MyPlayerManager.PlayerUnit and gCS.MyPlayerManager.PlayerUnit.TemplateId) or 15020967\n` + +` if origOnShowPhoto then origOnShowPhoto(self, ...) end\n` + +` end\n` + ` local origSetMode = photoStore.SetCurrentPhotoMode\n` + ` photoStore.SetCurrentPhotoMode = function(self)\n` + ` if origSetMode then origSetMode(self) end\n` + @@ -282,6 +315,7 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` if gCS and gCS.TransitionMgr then gCS.TransitionMgr.showMainCube = true end\n` + ` if gCS and gCS.CameraDataMgr and gCS.CameraDataMgr.cinemachineManager then\n` + ` gCS.CameraDataMgr.cinemachineManager:SwitchSelfiePhotoMode(true, 0.2)\n` + +` gCS.CameraDataMgr.cinemachineManager:SetFov(68, 0, 0, false)\n` + ` end\n` + ` end)\n` + ` else\n` + @@ -290,6 +324,41 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` end)\n` + ` end\n` + ` end\n` + +` local origOnClosePhoto = photoStore.OnClose\n` + +` photoStore.OnClose = function(self, ...)\n` + +` pcall(function()\n` + +` local unit = gCS and gCS.MyPlayerManager and gCS.MyPlayerManager.PlayerUnit\n` + +` if unit then\n` + +` if gCS.ClimbManager and gCS.ClimbManager.SetLayerActionStateAndCheckTransition then\n` + +` gCS.ClimbManager.SetLayerActionStateAndCheckTransition(unit, false, 42)\n` + +` end\n` + +` if MuGenStates and MuGenStates.Logic and MuGenStates.Logic.ABPVarManager and LTConfig and LTConfig.ABPVarConfig then\n` + +` MuGenStates.Logic.ABPVarManager.SetBool(unit, LTConfig.ABPVarConfig.PhoneSelfie, false)\n` + +` end\n` + +` end\n` + +` if gTakePhotoUtils and gTakePhotoUtils.PlayTakePhotoAction and LTConfig and LTConfig.TakePhotoActionConfig then\n` + +` gTakePhotoUtils.PlayTakePhotoAction(LTConfig.TakePhotoActionConfig.NormalTakePhoto)\n` + +` end\n` + +` end)\n` + +` if origOnClosePhoto then return origOnClosePhoto(self, ...) end\n` + +` end\n` + +` end\n` + +` if gHudMgr and not gHudMgr._customTickHooked then\n` + +` gHudMgr._customTickHooked = true\n` + +` local origHudUpdate = gHudMgr.Update\n` + +` gHudMgr.Update = function(self, ...)\n` + +` if origHudUpdate then origHudUpdate(self, ...) end\n` + +` pcall(function()\n` + +` if UnityEngine and UnityEngine.Input and UnityEngine.KeyCode then\n` + +` if UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.F8) then\n` + +` if ProcessDebugCommand then ProcessDebugCommand("TOGGLE_CLOTHES") end\n` + +` end\n` + +` if UnityEngine.Input.GetKeyDown(UnityEngine.KeyCode.F7) then\n` + +` if ProcessDebugCommand then ProcessDebugCommand("SPAWN_ENEMY:40900579:0:1") end\n` + +` end\n` + +` end\n` + +` end)\n` + +` end\n` + ` end\n` + ` end)\n` + ` pcall(function()\n` + @@ -402,6 +471,9 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` if gClientToGameSceneGMDelegate then\n` + ` pcall(function() gClientToGameSceneGMDelegate:GmAddEnemyByPlayer(enemyId, camp) end)\n` + ` end\n` + +` if gCS and gCS.MessageTipsMgr and gCS.MessageTipsMgr.ShowMessageTips then\n` + +` gCS.MessageTipsMgr:ShowMessageTips("Spawned Enemy ID: " .. enemyId)\n` + +` end\n` + ` end)\n` + ` elseif cmd == "TOGGLE_CLOTHES" then\n` + ` pcall(function()\n` + @@ -413,16 +485,20 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` for i = 0, smrs.Length - 1 do\n` + ` local smr = smrs[i]\n` + ` local n = string.lower(smr.name)\n` + -` if string.find(n, "cloth") or string.find(n, "coat") or string.find(n, "skirt") or\n` + -` string.find(n, "pant") or string.find(n, "dress") or string.find(n, "top") or\n` + -` string.find(n, "bottom") or string.find(n, "jacket") or string.find(n, "yifu") or\n` + -` string.find(n, "kuzi") or string.find(n, "qun") then\n` + +` local isBaseBody = string.find(n, "body") or string.find(n, "face") or string.find(n, "head") or string.find(n, "hair") or string.find(n, "eye") or string.find(n, "skin") or string.find(n, "shenti") or string.find(n, "tou") or string.find(n, "lian")\n` + +` local isClothing = string.find(n, "cloth") or string.find(n, "coat") or string.find(n, "skirt") or string.find(n, "pant") or string.find(n, "dress") or string.find(n, "top") or string.find(n, "bottom") or string.find(n, "jacket") or string.find(n, "yifu") or string.find(n, "kuzi") or string.find(n, "qun") or string.find(n, "shoe") or string.find(n, "sock") or string.find(n, "hat") or string.find(n, "wa") or string.find(n, "xie") or string.find(n, "under") or string.find(n, "suit") or string.find(n, "acc")\n` + +` if isClothing and not (string.find(n, "body") and not string.find(n, "cloth")) then\n` + ` smr.enabled = not _G._clothesHidden\n` + -` else\n` + +` elseif isBaseBody then\n` + ` smr.enabled = true\n` + +` else\n` + +` smr.enabled = not _G._clothesHidden\n` + ` end\n` + ` end\n` + ` end\n` + +` if gCS and gCS.MessageTipsMgr and gCS.MessageTipsMgr.ShowMessageTips then\n` + +` gCS.MessageTipsMgr:ShowMessageTips(_G._clothesHidden and "Outfit Hidden (Base Body)" or "Outfit Shown")\n` + +` end\n` + ` end)\n` + ` end\n` + `end\n\n` + @@ -430,7 +506,7 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` if not tbl or type(tbl) ~= "table" or tbl._cmdHooked then return end\n` + ` tbl._cmdHooked = true\n` + ` local oldSync = tbl.SyncNotice\n` + -` tbl.SyncNotice = function(...)\n` + +` local newSync = function(...)\n` + ` local allArgs = {...}\n` + ` for i = 1, #allArgs do\n` + ` if type(allArgs[i]) == "string" and string.sub(allArgs[i], 1, 4) == "CMD:" then\n` + @@ -440,6 +516,12 @@ gameSwitchDefaults.map((name) => `M.${name} = true\n`).join("") + ` end\n` + ` if oldSync then return oldSync(...) end\n` + ` end\n` + +` if tbl._meta and type(tbl._meta) == "table" then\n` + +` tbl._meta.SyncNotice = newSync\n` + +` end\n` + +` tbl.SyncNotice = nil\n` + +` tbl.SyncNotice = newSync\n` + +` rawset(tbl, "SyncNotice", newSync)\n` + `end\n\n` + `local function HookDisplayMessageMgr()\n` + ` if gDisplayMessageMgr and not gDisplayMessageMgr._cmdHooked then\n` +