Da die derzeitigen MySQL-Funktionen "etwas" veraltet sind, hier mal eine neue:
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
Ich habe die Funktion absichtlich kurz gehalten (verglichen mit meiner alten Version ist die hier ein Witz). Sie liest die Zugangsdaten aus der CONFIG-Datei des Cores aus.
Neuer Output:
Output[Zeile][Reihe]
###
Jetzt auch (fast) Abwärtskompatibel
Output.Spaltenname[zeile]
###
Danke an: Paylasici für den Anstoß, die Userrechte aus der CONFIG-Datei zu lesen αddι für das ständige generve, ich solle die MySQL-Func überarbeiten .Active für die Unterhaltung und das Ablenken xD
Und natürlich an mein Prinzesschen ♥.Mercy.♥ für die viele gute Laune
lg Mijago
### Update
Nun Abwärtskompatibel zu meiner Questlib!
Bei MySQL55 müsst ihr ab und an --e= durch -e ersetzen!
quest teszteljunk begin
state start begin
when 53001.use begin
asd = mysql_query("SELECT name FROM player.player WHERE id="..pc.get_player_id()..";")
say(""..asd.."")
say(""..asd[1].."")
say(""..asd[1][1].."")
end
end
end
Habe mal die Funktion aus der Questlib hier eingefügt.
Und unten den Fix angefügt, weshalb viele Denken, diese Lib geht nicht (leute, der Fix ist seit Monaten bekannt xD)
Er ist auch in der Funktion mittlerweile.
PHP Code:
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 mal die Funktion aus der Questlib hier eingefügt.
Und unten den Fix angefügt, weshalb viele Denken, diese Lib geht nicht (leute, der Fix ist seit Monaten bekannt xD)
Er ist auch in der Funktion mittlerweile.
PHP Code:
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
MySQL51: --e=""
MySQL55: -e""
Wer wirklich mit dieser Funktion arbeiten will sollte wenigstens mySQL Grundkentnisse haben und dem wäre das auch alleine klar geworden.
[VIP-function] ToxicSYS [VIP-function] 08/14/2010 - WarRock Hacks, Bots, Cheats & Exploits - 1 Replies heeeey E-pvpers :pimp:
this is a new hack by TSYS
Status : UNDETECTED
Functions (VIDEO) :
YouTube - WarRock - Bikini event VIP hack
MySQL Navicat 1130-Host'5.xxx.xx.xxx' is not allowed to connect to the MySQL Server 08/07/2010 - Metin2 Private Server - 14 Replies Hallo com,
ich habe ein Problem mit Navicat. Undzwar habe ich diesen Fehler hier : "1130-Host'5.xxx.xx.xxx' is not allowed to connect to the MySQL Server" seid gestern.
Ich dachte mir mal ich änder mein Navicat Passwort um... Als ich dies getan habe, und meinen Server rebootet habe und Navicat neugestartet habe, und ich mich wieder in Navicat einloggen wollte kam diese Fehlermeldung. Nun habe ich das Problem das ich mich nicht mehr mit Navicat connecten kann. Habe schon alles versucht...