Codex NG
Recurrent Flamer
- Joined
- Jul 24, 2015
- Messages
- 2,994
- Solutions
- 12
- Reaction score
- 1,657
I am sure this could be written better...
Ever wanted to know what the server loads when it starts up?
I created a talkaction which creates a log file to traverse the global _G metatable.
Ever wanted to know what the server loads when it starts up?
I created a talkaction which creates a log file to traverse the global _G metatable.
Code:
function onSay(player, words, param)
if param == 'clear' then
_G = nil
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, ' _G has been set to nil.')
return true
end
if _G ~= nil then
local file = '_G.lua'
local fileCreated = file
file = io.open(file, "w+")
file:write("_G = {\n")
for x, n in pairs(_G) do
if type(n) == 'number' or type(n) == 'string' then
file:write('\t['..x ..'] = '..n.. ",\n")
elseif type(n) == 'table' then
file:write("\t["..x.."] = {\n")
for k, v in pairs(n) do
if type(v) == 'number' or type(v) == 'string' then
file:write('\t\t['..k ..'] = '..v.. ",\n")
elseif type(v) == 'table' then
file:write("\t\t["..k.."] = {\n")
for kk, vv in pairs(v) do
if type(vv) == 'function' then
file:write('\t\t\t'..k..'.'..kk.. "() end,\n")
elseif type(vv) == 'number' or type(vv) == 'string' then
file:write('\t\t\t['..kk..'] = '..vv.. ",\n")
elseif type(vv) == 'userdata' then
file:write('\t\t\tuserdata '..kk.. ",\n")
elseif type(vv) == 'table' then
file:write('\t\t\t['..kk.. "] = {\n")
for kkk, vvv in pairs(vv) do
if type(vvv) == 'function' then
file:write('\t\t\t\t'..kk..'.'..kkk.. "() end,\n")
elseif type(vvv) == 'number' or type(vvv) == 'string' then
file:write('\t\t\t\t['..kkk..'] = '..vvv.. ",\n")
elseif type(vvv) == 'userdata' then
file:write('\t\t\t\tuserdata '..kkk.. ",\n")
elseif type(vvv) == 'table' then
file:write('\t\t\t\t['..kkk.. "] = {--[[ need to find a new way to access nested]]}\n")
end
end
file:write("\t\t\t},\n")
end
end
file:write("\t\t},\n")
elseif type(v) == 'userdata' then
file:write('\t\tuserdata '..k.. ",\n")
else
file:write('\t\t'..x..'.'..k.. "() end,\n")
end
end
file:write("\t},\n")
else
file:write('\tfunction '..x.. "() end,\n")
end
end
file:write("}\n")
file:close()
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, fileCreated..' created.')
else
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, ' _G is nil.')
end
return true
end