Liebe Community,
ihr kennt ja die bisher vorhandenen Questflags, mit denen ihr Zahlen speichern könnt. Mit der Variante, die mein Kumpel entwickelt hat, könnt ihr auch Tabellen und Strings speichern.(Also eigentlich alles)
Ich betone:"Diese art von Questflags stammt nicht von mir, ich wurde lediglich gebeten sie zu Releasen"
Anhang oder Spoiler:
kind regards
ihr kennt ja die bisher vorhandenen Questflags, mit denen ihr Zahlen speichern könnt. Mit der Variante, die mein Kumpel entwickelt hat, könnt ihr auch Tabellen und Strings speichern.(Also eigentlich alles)
Ich betone:"Diese art von Questflags stammt nicht von mir, ich wurde lediglich gebeten sie zu Releasen"
Anhang oder Spoiler:
PHP Code:
function get_locale_quest_path()
local file = io.open("usr/tmp","r")
if file then
for line in file:lines() do
if string.find(line,"/share/")then
return line.."/"
end
end
file:close()
end
os.execute("find / -name quest > /usr/tmp")
local tmp = io.open("usr/tmp","r")
for line in tmp:lines() do
if string.find(line,"/share/")then
tmp:close()
return line.."/"
end
end
end
SpeicherPfad = get_locale_quest_path()..""-- hier kann der ordner rein, wo alles gespeichert werden soll
pc.write_table = function(tab)
local file= io.open(SpeicherPfad..pc.get_name(),"w")
file:write("return {")
for i,x in next, tab do
local str = "\n\t["..i.."] = {\n\t\t"
for e,f in next,x do
str = str.."['"..e.."'] = '"..f.."',\n\t\t"
end
local str = str.."\n\t},"
file:write(str)
end
file:write("\n}")
file:close()
end
pc.delff = function(name)
local tab = loadstring(io.open(SpeicherPfad..pc.get_name(),"r"):read("*a"))()
tab[q.getcurrentquestindex()][name]=nil
pc.write_table(tab)
end
pc.setff = function(name,value)
if io.open(SpeicherPfad..pc.get_name(),"r")==nil then
local file= io.open(SpeicherPfad..pc.get_name(),"w")
file:write("return{}")
file:close()
end
local tab = loadstring(io.open(SpeicherPfad..pc.get_name(),"r"):read("*a"))()
if type(value)=="function" then
value = 'loadstring(string.gsub('..string.gsub(string.format('%q',string.dump(value)),"(\\000)","`")..',"`","\\000"))'
elseif type(value)=="table" then
inp = ""
local function dmp(tab)
inp = inp..'{'
table.foreach(tab,function(i,l)
if type(i) == 'string' then
inp = inp..'['..string.format('%q',i)..']='
end
if type(l) == 'string' then
inp = inp..string.format('%q',l)..','
elseif type(l) == 'number' then
inp = inp..l..','
elseif type(l) == 'table' then
dmp(l)
elseif type(l) == 'function' then
inp = inp..'loadstring(string.gsub('..string.gsub(string.format('%q',string.dump(l)),"(\\000)","`")..',"`","\\000")),'
end
end)
inp = inp..'}'
end
dmp(value)
value = inp
inp = nil
end
if not tab[q.getcurrentquestindex()] then
tab[q.getcurrentquestindex()]={}
end
if tab[q.getcurrentquestindex()][name] then
tab[q.getcurrentquestindex()][name]=1
end
tab[q.getcurrentquestindex()][name]=value
pc.write_table(tab)
end
pc.getff = function(name)
local base = loadstring(io.open(SpeicherPfad..pc.get_name(),"r"):read("*a"))()[q.getcurrentquestindex()][name]
return string.find(base,"\000") and assert(loadstring('return '..base))() or
type(assert(loadstring('return '..base))())=="table" and assert(loadstring('return '..base))() or
tonumber(base) or base or 0
end
kind regards