Files

28 lines
1.6 KiB
Lua
Raw Permalink Normal View History

2026-10-28 18:54:43 +07:00
-- Exact named types only; metadata batches are bounded per heartbeat.
do local function capture()
local s=_G.__GacRankMetadata1 or {target=1,index=0};_G.__GacRankMetadata1=s
if s.done then return end
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
local mgr=CS.RPG.Client.GlobalVars.s_GamePhaseManager
local phase=mgr and typeof(CS.RPG.Client.GamePhaseManager):GetField('_CurrentPhase',flags):GetValue(mgr)
if not phase or typeof(CS.RPG.Client.BattleGamePhase):IsInstanceOfType(phase) then return end
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_RANK_METADATA] '..tostring(v))end
local names={'RPG.GameCore.AvatarRankConfigRow','RPG.GameCore.AvatarRankConfigExcelTable'}
if not s.members then
if s.target>#names then s.done=true;log('END');return end
s.t=typeof(CS.RPG.GameCore.AvatarRankConfigRow).Assembly:GetType(names[s.target])
if not s.t then error('missing exact type '..names[s.target])end
s.members=s.t:GetFields(flags);s.stage='fields';s.index=0;log('TYPE '..s.t.FullName)
end
for n=1,8 do
if s.index>=s.members.Length then
if s.stage=='fields' then s.members=s.t:GetMethods(flags);s.stage='methods';s.index=0;return end
s.target=s.target+1;s.members=nil;s.t=nil;return
end
local m=s.members[s.index];s.index=s.index+1
if m.DeclaringType==s.t then
if s.stage=='fields' then log('FIELD '..m.Name..' '..m.FieldType.FullName)
else log('METHOD '..tostring(m)..' HANDLE '..tostring(m.MethodHandle.Value))end
end
end
end local ok,e=pcall(capture);if not ok then _G.__GacRankMetadata1={done=true};CS.UnityEngine.Debug.Log('[GAC_RANK_METADATA] ERROR '..tostring(e))end end