Files
GaCy-GO/tools/event_stella_targeted_capture.lua
T
2026-10-28 18:54:43 +07:00

50 lines
2.0 KiB
Lua

-- Temporary analysis only. Keep outside scripts/ unless deliberately dispatched.
-- Twelve members per heartbeat, exact live module types, no scene factory calls.
do
local function capture()
local s=_G.__gacEventStellaMeta1 or {module=1,index=0,kind='fields'}
_G.__gacEventStellaMeta1=s
local names={'ComicDessertModule','ChenLingBattleModule','FiveDimModule'}
if s.module>#names 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
if not modules then return end
local value=modules[names[s.module]]
local log=function(v) CS.UnityEngine.Debug.Log('[GAC_EVENT_STELLA_META] '..tostring(v)) end
if not value then log('MISSING '..names[s.module]);s.module=s.module+1;return end
if not s.target then
s.target=value:GetType();s.members=s.target:GetFields(flags)
log('TYPE '..s.target.FullName)
end
for n=1,12 do
if s.index>=s.members.Length then
if s.kind=='fields' then
s.kind='methods';s.index=0;s.members=s.target:GetMethods(flags)
return
end
log('END_TYPE '..s.target.FullName)
s.module=s.module+1;s.target=nil;s.members=nil;s.kind='fields';s.index=0
if s.module>#names then log('END') end
return
end
local member=s.members[s.index];s.index=s.index+1
if member.DeclaringType==s.target then
if s.kind=='fields' then
log('FIELD '..member.Name..' '..member.FieldType.FullName)
else
log('METHOD '..tostring(member)..' HANDLE '..tostring(member.MethodHandle.Value))
end
end
end
end
local ok,e=pcall(capture)
if not ok then
_G.__gacEventStellaMeta1={module=99}
CS.UnityEngine.Debug.Log('[GAC_EVENT_STELLA_META] ERROR '..tostring(e))
end
end