Salut,
Il te manque tout bonnement la fonction mysql_query.
Ajoute ceci à ton questlib :
mysql_query = function(query)
if not pre then
local rt = io.open('CONFIG','r'):read('*all')
pre,_= string.gsub(rt,'.+PLAYER_SQL:%s(%S+)%s(%S+)%s(%S+)%s(%S+).+','-h%1 -u%2 -p%3 -D%4')
end
math.randomseed(os.time())
local fi,t,out = 'mysql_data_'..math.random(10^9)+math.random(2^4,2^10),{},{}
os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi)
for av in io.open(fi,'r'):lines() do table.insert(t,split(av,'\t')) end; os.remove(fi);
for i = 2, table.getn(t) do table.foreach(t[i],function(a,b)
out[i-1] = out[i-1] or {}
out[i-1][a] = tonumber(b) or b or 'NULL'
out[t[1][a]] = out[t[1][a]] or {}
out[t[1][a]][i-1] = tonumber(b) or b or 'NULL'
end) end
return out
end
N'oublie pas d'ajouter la fonction :
mysql_query
dans ton fichier quest_function.
Petit plus dont tu auras surement besoin si tu prends ce genre de quête :
function execute_query(db, query)
local PROGRAM_PATH = "/game/mysql_query/"
query = string.gsub(query, "`", "")
local out_file = PROGRAM_PATH..math.random(100000,1000000).."_"..os.time()
os.execute("cd "..PROGRAM_PATH.." && ./mysql_query "..db.." \""..query.."\" \""..out_file.."\"")
if io.open(out_file) == nil then
return -3, "Unable to read query result"
end
local _func = loadfile(out_file)
os.remove(out_file)
if _func == nil then
return -2, "Invalid query result"
end
local out_array = _func()
return out_array[1], out_array[2]
end
A ajouter comme l'autre dans ton questlib et bien sur, la fonction "execute_query" dans ton quest_function.
A mon avis ton module est déjà installé.
Dernier détail si tu es en mysql 51 (par défaut mysql55), modifie :
os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi)
dans ta fonction mysql_query par :
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi)
simple détail.
Voilà, tu disposes de deux fonctions utilisées dans pas mal de quête partagé dans les divers forums.