Files
GaCy-GO/tools/cw_spotlight_getters.lua

25 lines
1.5 KiB
Lua

-- Named protobuf/accessor metadata only, maximum 24 getters per heartbeat.
do
local s=_G.__gacCwSpotGetters2 or {index=1,offset=0};_G.__gacCwSpotGetters2=s
if s.done then return end
local log=function(x)CS.UnityEngine.Debug.Log('[GAC_CW_SPOT_GETTER] '..tostring(x))end
local ok,err=pcall(function()
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
local manager=CS.RPG.Client.GlobalVars.s_GamePhaseManager
local phase=manager and 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 types={typeof(CS.BDLBHJGNCFM),typeof(CS.HLHHLIGPNOM),typeof(CS.FMBACDOFCAL),typeof(CS.RPG.Client.GridFightSpotLightSelectAction)}
local t=types[s.index];if not t then s.done=true;log('END');return end
if s.offset==0 then
log('TYPE '..t.FullName)
if s.index<=3 then local fs=t:GetFields(flags);for i=0,math.min(fs.Length-1,31)do log('FIELD '..tostring(fs[i]))end end
end
local ms=t:GetMethods(flags)
for i=s.offset,math.min(s.offset+23,ms.Length-1)do
local m=ms[i];if (s.index<=3 or m.Name:sub(1,4)=='get_') and m.DeclaringType==t then log('METHOD '..t.FullName..'.'..m.Name..' HANDLE '..tostring(m.MethodHandle.Value)..' SIGNATURE '..tostring(m))end
end
s.offset=s.offset+24;if s.offset>=ms.Length then s.offset=0;s.index=s.index+1 end
end)
if not ok then s.done=true;log('ERROR '..tostring(err))end
end