There is. You can read it in the actual globals processing; the problem is Lua doesn't work with pointers, so custom adjustments have to be made to list the hexa of the address. Adjusted this implementation from " u nknowncheats.me/forum/986704-post47.html " (full credits to CoMPMStR user):
Code: Select all
local tDumpCFn = true -- C Functions
local tDumpLFn = false -- LUA Functions
local tDumpDat = false -- UserData
local tDumpUnk = false -- Others (strings, numbers)
local tDumpedTables = {}
local tFile = nil
local function OpenFile(name)
if (tFile == nil) then
tFile = io.open(name, "w")
end
end
local function CloseFile()
if (tFile ~= nil) then
tFile:close()
tFile = nil
end
end
local function PrintLine(text)
if (tFile ~= nil) then
tFile:write(text .. "\n")
end
end
local function GetLFnParams(fn)
if (fn == nil) then return end
local co = coroutine.create(fn)
local paramStr = "("
debug.sethook(co, function()
local idx = 0
while true do
idx = idx+1
local n, v = debug.getlocal(co, 2, idx)
if not n then break end
if (n ~= "(*temporary)") then
paramStr = paramStr .. n .. ", "
end
end
end, "c")
local ret, err = coroutine.resume(co)
if (string.len(paramStr) > 1) then
paramStr = string.sub(paramStr, 1, string.len(paramStr) - 2) .. ")"
else
paramStr = paramStr .. ")"
end
return paramStr
end
local function DumpTableList(tbl)
for k, v in pairs(tbl) do
PrintLine(v)
end
end
local function DumpTable(name, tbl)
local tableString = tostring(tbl)
if (tDumpedTables[tableString] == nil) then
tDumpedTables[tableString] = tbl
else return end
local tableList = {}
local cfnList = {}
local cfnCount = 0
local lfnList = {}
local lfnCount = 0
local datList = {}
local datCount = 0
local unkList = {}
local unkCount = 0
for k, v in pairs(tbl) do
local itemNameString = tostring(k)
local itemString = tostring(v)
local itemType = type(v)
if (itemType == "table" and tableList[itemNameString] == nil) then
tableList[itemNameString] = v
elseif (itemType == "function") then
local funcInfo = debug.getinfo(v, 'S')
if (funcInfo.what == "C") then -- C Function
if (tDumpCFn == true) then
cfnList[itemNameString] = "\tCFN: " .. itemNameString .. " - " .. itemString
cfnCount = cfnCount + 1
end
else -- Lua function
if (tDumpLFn == true) then
lfnList[itemNameString] = "\tLFN: " .. itemNameString .. " - " .. itemString .. " " .. GetLFnParams(v)
lfnCount = lfnCount + 1
end
end
elseif (itemType == "userdata") then
if (tDumpDat == true) then
datList[itemNameString] = "\tDAT: " .. itemNameString .. " - " .. itemString
datCount = datCount + 1
end
else
if (tDumpUnk == true) then
unkList[itemNameString] = "\tUNK: ( " .. itemType .. " ) " .. itemNameString .. " - " .. itemString
unkCount = unkCount + 1
end
end
end
if (cfnCount > 0 or lfnCount > 0 or datCount > 0 or unkCount > 0) then
PrintLine(tableString .. " [ " .. name .. " ]:")
DumpTableList(cfnList)
DumpTableList(lfnList)
DumpTableList(datList)
DumpTableList(unkList)
PrintLine("")
end
for k, v in pairs(tableList) do
DumpTable(name .. "." .. k, v)
end
end
local function DumpAllTables()
OpenFile("D:/lua_dump.txt")
DumpTable("_G", _G)
CloseFile()
end
local success, result = xpcall(DumpAllTables, function(err) return debug.traceback(err) end)
As far as function's arguments, like Norway said, you can use pcall with a print:
Code: Select all
print(pcall(SpawnEntityFromArchetype))
I'll see if I can simplify the code with just a regular interface (not a DX-based one), as I can't get the damn DX11 hook to render ImGUI content.
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1