Update GaCy-GO

This commit is contained in:
CAtlas0784 committed 2026-10-28 18:54:43 +07:00
1 parent da8a32f60d
commit 0cbe460e49
345 files changed
+98202 -77559

No files matched your search

+80
View File
@@ -0,0 +1,80 @@
-- Offline-analysis data capture only; do not keep in the heartbeat scripts/.
-- Reads already constructed repositories. Never initializes a repository,
-- invokes a gameplay method, creates a scene, or changes live state.
do
local function capture()
local s=_G.__gacComicStellaConfig1 or {stage=1,row=0}
_G.__gacComicStellaConfig1=s
if s.stage>5 then return end
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
if not manager then return end
local phase=typeof(CS.RPG.Client.GamePhaseManager):GetField('_CurrentPhase',flags):GetValue(manager)
if not phase or typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase) then return end
local modules=CS.RPG.Client.GlobalVars.s_ModuleManager
local comic=modules and modules.ComicDessertModule
if not comic then return end
local log=function(v) CS.UnityEngine.Debug.Log('[GAC_COMIC_STELLA_CONFIG] '..tostring(v)) end
local function json(v)
local text=CS.Newtonsoft.Json.JsonConvert.SerializeObject(v)
if #text>32768 then error('single configuration exceeds 32768-byte output bound') end
return text
end
if s.stage==1 then
-- Exact existing named method handles, no assembly enumeration.
local t=comic:GetType()
for _,name in ipairs({'_OnGetDataSuccess','_SetUpProgress','_SetUpUpgradeTree'}) do
local method=t:GetMethod(name,flags)
if method then log('METHOD '..t.FullName..' '..tostring(method)..' HANDLE '..tostring(method.MethodHandle.Value)) end
end
local network=comic.NetworkService
local method=network and network:GetType():GetMethod('NPFCAEIAFOM',flags)
if method then log('METHOD '..network:GetType().FullName..' '..tostring(method)..' HANDLE '..tostring(method.MethodHandle.Value)) end
s.stage=2;return
end
if s.stage==2 then
-- Callback parameter supplies the true response type, avoiding xLua placeholders.
local method=comic:GetType():GetMethod('_OnGetDataSuccess',flags)
local parameters=method:GetParameters()
local t=parameters[0].ParameterType
log('RESPONSE_TYPE '..t.FullName)
s.fields=t:GetFields(flags);s.index=0;s.stage=3;return
end
if s.stage==3 then
for n=1,8 do
if s.index>=s.fields.Length then s.fields=nil;s.stage=4;return end
local f=s.fields[s.index];s.index=s.index+1
log('RESPONSE_FIELD '..f.Name..' '..f.FieldType.FullName)
end
return
end
if s.stage==4 or s.stage==5 then
local name=s.stage==4 and 'CycleConfigRepository' or 'LevelConfigRepository'
local repository=comic[name]
if not repository then log('MISSING '..name);s.stage=s.stage+1;return end
if not s.enumerator then
local t=repository:GetType()
local f=t:GetField('BDBOGJHLEIG',flags)
local dictionary=f and f:GetValue(repository)
if not dictionary then log('MISSING_DICTIONARY '..name);s.stage=s.stage+1;return end
if dictionary.Count>256 then error('repository row bound') end
log('BEGIN '..name..' count='..dictionary.Count)
s.enumerator=dictionary:GetEnumerator();s.row=0
end
if s.enumerator:MoveNext() then
local pair=s.enumerator.Current;s.row=s.row+1
log('ROW '..name..' '..json(pair.Value))
else
s.enumerator:Dispose();s.enumerator=nil
log('END_REPOSITORY '..name..' rows='..s.row);s.stage=s.stage+1
if s.stage>5 then log('END') end
end
return
end
end
local ok,e=pcall(capture)
if not ok then
_G.__gacComicStellaConfig1={stage=99}
CS.UnityEngine.Debug.Log('[GAC_COMIC_STELLA_CONFIG] ERROR '..tostring(e))
end
end