pre cw with probe and a bunch script to read game behavior
This commit is contained in:
1 parent
5120219ae2
commit
da8a32f60d
310 files changed
+219693
-872
No files matched your search
@@ -0,0 +1,52 @@
|
||||
-- Temporary observation of timers created by the named CW page. No timer or
|
||||
-- UI values are changed. Restore the original method after two minutes.
|
||||
do
|
||||
local function log(v)CS.UnityEngine.Debug.Log('[GAC_CW_TIMER_TRACE] '..tostring(v))end
|
||||
local state=_G.__gacCwTimerTrace1
|
||||
if not state then
|
||||
local class=package.loaded['Ui.GridFight.Entrance.S2.GridFightS2EntrancePage']
|
||||
if type(class)=='table' and type(class._refresh_remain_timer)=='function' then
|
||||
state={class=class,original=class._refresh_remain_timer,deadline=CS.UnityEngine.Time.realtimeSinceStartup+120}
|
||||
_G.__gacCwTimerTrace1=state
|
||||
local function pack(...)return {n=select('#',...),...}end
|
||||
state.wrapped=function(self,...)
|
||||
local results=pack(state.original(self,...))
|
||||
local ok,err=pcall(function()
|
||||
local flags=CS.System.Enum.ToObject(typeof(CS.System.Reflection.BindingFlags),60)
|
||||
local timers=CS.UnityEngine.Resources.FindObjectsOfTypeAll(typeof(CS.RPG.Client.MonoRemainTimer))
|
||||
log('COUNT '..timers.Length)
|
||||
for i=0,math.min(timers.Length-1,63)do
|
||||
local timer=timers[i]
|
||||
local transform=timer.transform
|
||||
local path=tostring(transform.name)
|
||||
for j=1,12 do
|
||||
transform=transform.parent
|
||||
if not transform then break end
|
||||
path=tostring(transform.name)..'/'..path
|
||||
end
|
||||
if path:lower():find('gridfight') then
|
||||
log('PATH '..path)
|
||||
local target=timer:GetType():GetField('_targetTime',flags):GetValue(timer)
|
||||
local fields=target:GetType():GetFields(flags)
|
||||
for j=0,math.min(fields.Length-1,31)do
|
||||
local f=fields[j]
|
||||
if not f.IsStatic then
|
||||
local v=f:GetValue(target)
|
||||
local good,text=pcall(function()return tostring(v)end)
|
||||
if good then log('TARGET '..tostring(f)..' '..text)end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end)
|
||||
if not ok then log('ERROR '..tostring(err))end
|
||||
return (table.unpack or unpack)(results,1,results.n)
|
||||
end
|
||||
class._refresh_remain_timer=state.wrapped
|
||||
log('READY')
|
||||
end
|
||||
elseif not state.done and (state.stop or CS.UnityEngine.Time.realtimeSinceStartup>=state.deadline)then
|
||||
if state.class._refresh_remain_timer==state.wrapped then state.class._refresh_remain_timer=state.original end
|
||||
state.done=true;log('RESTORED')
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user