-- Read current CW role/player containers only; no game action. do if _G.__gacCwLiveRoleState1 then return end;_G.__gacCwLiveRoleState1=true local log=function(v)CS.UnityEngine.Debug.Log('[GAC_CW_LIVE_ROLES] '..tostring(v))end local ok,err=pcall(function() local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60) local session=CS.RPG.Client.GlobalVars.s_ModuleManager.GridFightModule.CurGameSession if not session then log('NO_SESSION');return end log('SESSION '..session:GetType().FullName) local t=session:GetType();local fs=t:GetFields(flags) for i=0,math.min(fs.Length-1,95)do local f=fs[i];local n=f.Name:lower() if n:find('role') or n:find('player') or n:find('team') or n:find('shop')then local v=f:GetValue(session);log('FIELD '..tostring(f)..' VALUE '..tostring(v)) if v then local vt=v:GetType();local fields=vt:GetFields(flags) for j=0,math.min(fields.Length-1,63)do local x=fields[j];local xn=x.Name:lower();if xn:find('role') or xn:find('count') or xn:find('level') or xn:find('gold') then local z=x:GetValue(v);local count=nil;if z then pcall(function()count=z.Count end)end;log('INNER '..tostring(x)..' VALUE '..tostring(z)..' COUNT '..tostring(count)) end end end end end end) if not ok then log('ERROR '..tostring(err))end end