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

34 lines
1.8 KiB
Lua

-- Read only the established Orb consumer, eight members per heartbeat. Keep
-- outside scripts/ until deliberately staged by the runtime investigator.
do local function capture()
local state=_G.__gacCwOrbRuntimeMetadata1 or {index=0,beats=0}
_G.__gacCwOrbRuntimeMetadata1=state
if state.done then return end
state.beats=state.beats+1
local function log(s)CS.UnityEngine.Debug.Log('[GAC_CW_ORB_RUNTIME_META] '..tostring(s))end
if state.beats>36 then state.done=true;state.members=nil;log('END beat budget');return end
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
local f=manager and manager:GetType():GetField('_CurrentPhase',flags)
local phase=f and f:GetValue(manager)
if not phase or typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase)then return end
if not state.members then
state.type=typeof(CS.RPG.Client.GridFightModule).Assembly:GetType('RPG.Client.GridFightOrbServerData')
if not state.type then state.done=true;log('MISSING established Orb consumer');return end
state.members=state.type:GetMembers(flags)
if state.members.Length>192 then error('Orb member bound')end
log('TYPE '..state.type.FullName..' members='..state.members.Length)
end
for _=1,8 do
if state.index>=state.members.Length then state.done=true;state.members=nil;state.type=nil;log('END');return end
local m=state.members[state.index];state.index=state.index+1
if m.DeclaringType==state.type then
if m.MemberType==CS.System.Reflection.MemberTypes.Method then log('METHOD '..tostring(m)..' HANDLE '..tostring(m.MethodHandle.Value))
else log(tostring(m.MemberType)..' '..tostring(m))end
end
end
end
local ok,e=pcall(capture)
if not ok then _G.__gacCwOrbRuntimeMetadata1={done=true};CS.UnityEngine.Debug.Log('[GAC_CW_ORB_RUNTIME_META] ERROR '..tostring(e))end
end