41 lines
2.4 KiB
Lua
41 lines
2.4 KiB
Lua
-- Read only the active dialog's pending instance, not all runtime types.
|
|
do local function capture()
|
|
if _G.__gacBonfireLivePending1 then return end
|
|
local page=CS.RPG.Client.GlobalVars.s_UIManager:GetPageByName('GridFightBonfireDialog')
|
|
local lua=page and page.LuaTable;local action=lua and lua._pending_action
|
|
if not action then
|
|
local session=CS.RPG.Client.GlobalVars.s_ModuleManager.GridFightModule.CurGameSession
|
|
local manager=session and session.PrepPendingAction
|
|
if manager then
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
local f=manager:GetType():GetField('_ActionQueue',flags);local queue=f and f:GetValue(manager)
|
|
if queue and queue.Count<=16 then
|
|
for i=0,queue.Count-1 do local v=queue[i];if v and v:GetType().Name:find('Bonfire',1,true)then action=v;break end end
|
|
end
|
|
end
|
|
if manager and not _G.__gacBonfireManagerMetadata1 then
|
|
_G.__gacBonfireManagerMetadata1=true
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
local fs=manager:GetType():GetFields(flags)
|
|
for i=0,math.min(fs.Length-1,31)do local f=fs[i];local v=f:GetValue(manager);CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] MANAGER '..f.Name..' '..f.FieldType.FullName..' '..tostring(v))end
|
|
end
|
|
if not action then return end
|
|
end
|
|
_G.__gacBonfireLivePending1=true
|
|
local log=function(v)CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] '..tostring(v))end
|
|
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
|
local t=action:GetType();log('TYPE '..t.FullName);log('HAS_SELECTED '..tostring(action.HasSelected))
|
|
for _,name in ipairs({'get_HasSelected','Sync','TakeReward','SelectOption','HealHp'})do
|
|
local ms=t:GetMethods(flags)
|
|
for i=0,math.min(ms.Length-1,127)do local m=ms[i];if m.Name==name then log('METHOD '..tostring(m)..' HANDLE '..tostring(m.MethodHandle.Value))end end
|
|
end
|
|
local fs=t:GetFields(flags)
|
|
for i=0,math.min(fs.Length-1,31)do
|
|
local f=fs[i];local v=f:GetValue(action);log('FIELD '..f.Name..' '..f.FieldType.FullName..' '..tostring(v))
|
|
if f.FieldType.IsEnum then
|
|
local names=CS.System.Enum.GetNames(f.FieldType);local values=CS.System.Enum.GetValues(f.FieldType)
|
|
for j=0,math.min(names.Length-1,15)do log('ENUM '..names[j]..' '..CS.System.Convert.ToInt32(values:GetValue(j)))end
|
|
end
|
|
end
|
|
end local ok,e=pcall(capture);if not ok then _G.__gacBonfireLivePending1=true;CS.UnityEngine.Debug.Log('[GAC_BONFIRE_PENDING] ERROR '..tostring(e))end end
|