pre cw with probe and a bunch script to read game behavior

This commit is contained in:
CAtlas0784 committed 2026-10-21 20:40:13 +07:00
1 parent 5120219ae2
commit da8a32f60d
310 files changed
+219693 -872

No files matched your search

+31
View File
@@ -0,0 +1,31 @@
-- Read cached completed-battle statistics; never change the battle or modules.
do
local s=_G.__gacPeakCachedStats1 or {phase=1,index=0};_G.__gacPeakCachedStats1=s
if s.phase<=2 then
local function log(v)CS.UnityEngine.Debug.Log('[GAC_PEAK_CACHED_STATS] '..tostring(v))end
local ok,err=pcall(function()
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
if not s.obj then
local m=CS.RPG.Client.GlobalVars.s_ModuleManager.BattleModule
if s.phase==1 then s.obj=m.LastBattleStatistic else s.obj=m:GetType():GetField('_BattleResultInfo',flags):GetValue(m)end
if s.obj==nil then log('NIL '..s.phase);s.phase=s.phase+1;return end
s.fields=s.obj:GetType():GetFields(flags);log('TYPE '..s.phase..' '..tostring(s.obj:GetType()))
end
for i=s.index,math.min(s.index+15,s.fields.Length-1)do
local f=s.fields[i];local tn=tostring(f.FieldType);log('FIELD '..s.phase..' '..f.Name..' '..tn)
if not f.IsStatic then
local good,v=pcall(function()return f:GetValue(s.obj)end)
if good and v~=nil then
if f.FieldType.IsPrimitive or tn:find('System.String',1,true) or f.FieldType.IsEnum then log('VALUE '..s.phase..' '..f.Name..' '..tostring(v))
elseif f.Name:lower():find('statistic') or f.Name:lower():find('result') then
local encoded,bytes=pcall(function()return CS.Google.Protobuf.MessageExtensions.ToByteArray(v)end)
if encoded then log('PROTO '..f.Name..' '..CS.System.Convert.ToBase64String(bytes))end
end
end
end
end
s.index=s.index+16;if s.index>=s.fields.Length then s.phase=s.phase+1;s.index=0;s.obj=nil;log('END_PHASE')end
end)
if not ok then log('ERROR '..tostring(err));s.phase=3 end
end
end