Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?xml version="1.0" encoding="utf-8"?>
- <CheatTable>
- <CheatEntries>
- <CheatEntry>
- <ID>9999</ID>
- <Description>"Dump Commands List"</Description>
- <LastState/>
- <VariableType>Auto Assembler Script</VariableType>
- <AssemblerScript>[ENABLE]
- {$lua}
- if syntaxcheck then return end
- local commands = readPointer("cmdList")
- if not commands or commands == 0 then
- print("please load a saved game first")
- assert(false,"can't activate yet")
- return
- end
- local size = readInteger(commands + 0x2C)
- if size <= 0 then
- print("please load a saved game first")
- assert(false,"can't activate yet")
- return
- elseif size > 3000 then
- size = 3000 -- just in case
- end
- commands = readPointer(commands + 0x20)
- if not commands or commands == 0 then
- print("please load a saved game first")
- assert(false,"can't activate yet")
- return
- end
- local paramtypes = {
- "int",
- nil,
- "float",
- "strVar",
- "strObj",
- "strChar",
- "strItem"
- }
- local COMMAND_LIST = "Index;Command Name\n"
- --local COMMAND_LIST2 = "Index;Table Address;Cmd Address;Name;# of Arguments\n"
- for i = 1, size do
- local addr = readPointer(commands)
- if addr and addr ~= 0 then
- local name = readPointer(addr + 0x08)
- if name and name ~= 0 then
- name = readString(name, 256, false)
- if type(name) == "string" then
- local self = readPointer(addr + 0x40)
- local faddr = readPointer(addr + 0x48)
- local numParam = readInteger(addr + 0x18)
- local argtable = readPointer(addr + 0x10)
- local cmdargs = ""
- for j = 1, numParam do
- local argcur = (j - 1) * 0x10 + argtable
- local argname = readPointer(argcur)
- local argtype = readInteger(argcur + 0x08)
- local isResult = readInteger(argcur + 0x0C)
- argtype = paramtypes[argtype] or "type"..tostring(argtype)
- if isResult ~= 1 then cmdargs = cmdargs.."-> " end
- cmdargs = cmdargs..argtype.." "..readString(argname, 256, false)
- if j ~= numParam then cmdargs = cmdargs..", " end
- end
- COMMAND_LIST = COMMAND_LIST..string.format("%d;%s ( %s )\n", i, name, cmdargs)
- -- COMMAND_LIST2 = COMMAND_LIST2..string.format("%d;%X;%X;%s;%d\n", i, commands, addr, name, numParam)
- end
- end
- end
- commands = commands + 0x08
- end
- --print(COMMAND_LIST)
- local file = io.output('bg3_commandslist.csv')
- io.write(COMMAND_LIST)
- io.close(file)
- {$asm}
- [DISABLE]
- </AssemblerScript>
- </CheatEntry>
- </CheatEntries>
- </CheatTable>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement