Hello there,
verwende folgende questlib-erweiterung von Mijago:
PHP Code:
function split(str, delim, maxNb)
if str == nil then return str end
if string.find(str, delim) == nil then return { str } end
if maxNb == nil or maxNb < 1 then maxNb = 0 end
local result = {}
local pat = "(.-)" .. delim .. "()"
local nb = 0
local lastPos
for part, pos in string.gfind(str, pat) do
nb = nb + 1
result[nb] = part
lastPos = pos
if nb == maxNb then break end
end
if nb ~= maxNb then result[nb + 1] = string.sub(str, lastPos) end
return result
end
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) -- für MySQL51
--os.execute('mysql '..pre..' -e='..string.format('%q',query)..' > '..fi) -- für MySQL55
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
habe an meinen Testserverfiles sonst nichts geändert, nur die questlib-erweiterung eingefügt, und folgendes Problem:
local v = mysql_query('SELECT name FROM player.player WHERE id = 57710')
say(v)
Wenn ich obrigen Questausschnitt in 'nem questfile stehen habe - ist die ausgabe von variable "v" leer, 0, nichts drin.
dasselbe wenn ich das ganze z.B. so verwende:
local v = mysql_query('SELECT name FROM player.player WHERE id = 57710')
pc.select(find_pc_by_name(v))
-> Gewünschter Spieler wird nicht ausgewählt.
Wenn statt v direkt der Name steht funktioniert das ganze dagegen.
Gibt es irgendetwas zu beachten?
Irgendwelche Ideen?