Register for your free account! | Forgot your password?
Rust Cheats

Go Back   elitepvpers > Popular Games > Metin2 > Metin2 Private Server
You last visited: Today at 05:15

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Quest MYSQL-Abfrage fail?

Discussion on Quest MYSQL-Abfrage fail? within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
Quest MYSQL-Abfrage fail?

Hallu,
ich habe eine Pet-Quest mit MYSQL-Abfrage, diese habe ich auf meinen alten Serverfiles ohne Probleme benutzen können, ich habe dort auch die selbe Schnittstelle benutzt. Bei meinen neuen Files, klappt das mit der MYSQL-Erweiterung nicht mehr, es kann daran liegen, dass das MYSQL Kennwort ein !@# hat, per hand kann ich mich so auch nicht einloggen.... Ich habe deshalb in der Erweiterung schon:

PHP Code:
os.execute('mysql '..pre..' --e='..string.format('%q',query)..' > '..fi) -- für MySQL51 
zu

PHP Code:
os.execute("mysql -u mt2pet --password='test' --e='"..string.format('%q',query).."' > "..fi) -- für MySQL51 
geändert und so lasse ich den Server ja über einen anderen User, als in den Configs bestimmt connecten. Dennoch geht die Abfrage noch immer nicht. Syserr bleibt leer....

Weiß jmd. wie ich das beheben kann?

Vielen Dank!

Quest:

PS: Ich habe es per
PHP Code:
local pet_name os.execute("mysql -u mt2pet --password='test' --e='SELECT name FROM player.pet_name WHERE id = '"..pc.get_player_id().."';'"
Auch schon getestet
xGr33n is offline  
Old 06/13/2013, 16:06   #2
 
SinSay's Avatar
 
elite*gold: 120
Join Date: May 2013
Posts: 419
Received Thanks: 208
Haben die Mysql benutzer die richtigen rechte zum verändern &erstellen ?
SinSay is offline  
Old 06/13/2013, 16:07   #3
 
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
Ja, alle rechte... Die quest nennen wir es "bricht" bei der mysql-abfrage auch ab...
xGr33n is offline  
Old 06/13/2013, 16:10   #4
 
SinSay's Avatar
 
elite*gold: 120
Join Date: May 2013
Posts: 419
Received Thanks: 208
okey... naja ich kenne mich damit nicht so gut aus... aber wieso willst du das mit einer DB abfrage machen?
SinSay is offline  
Old 06/13/2013, 16:12   #5
 
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
Um die Haustiernamen zu speichern & wd auszulesen oder gibt es auch eine andere Möglichkeit?
xGr33n is offline  
Old 06/13/2013, 16:20   #6
 
Mijago's Avatar
 
elite*gold: 191
Join Date: May 2009
Posts: 1,214
Received Thanks: 2,598
Sicher dass du MySQL 5.1 und nicht 5.5 hast? Die Funktion bietet beides, jedoch ist 5.5 standardmäßig auskommentiert (Steht ja extra in der Zeile dabei).

Standardmäßig sieht die MySQL-Funktion so aus: ()
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
Möchtest du sie mit 5.5 nutzen, so musst du die Kommentare austauschen:
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
Nur ein kleiner Lösungsansatz c:


Dann noch eine kleine Anpassung für dich:
Code:
mysql_query = function(query)
    local user = 'a';
    local pass = 'b';

    local pre = ' -u'..user.. '-p'..pass
    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
Weiterhin MySQL-Version beachten; Tippe bei dir lediglich auf eine Fehlkonfiguration
Die Änderung solltest du eigl nicht brauchen, denn er nimmt ja 1:1 den MySQL-User des Cores, das heißt, er hat die selben Rechte.
Mijago is offline  
Old 06/14/2013, 08:00   #7
 
elite*gold: 5
Join Date: Mar 2013
Posts: 1,986
Received Thanks: 2,254
Der Meister selber *-*
Danke erstmal für deine Antwort, an das MYSQL 5.5 hatte ich auch schon gedacht und getestet hat leider nicht funktioniert...
Deine zweite Lösung habe ich gerade getestet, natürlich habe ich den MYSQL-User eingetragen, funktioniert leider auch nicht. Wenn ich die Querrys per Hand in Vbox eingebe:

mysql -u mt2pet --password='test' --e='SELECT * FROM player.pet_name WHERE id = '12345';

funktioniert es. Ich bin am verzweifeln

mfg
xGr33n is offline  
Old 06/14/2013, 10:06   #8
 
Mijago's Avatar
 
elite*gold: 191
Join Date: May 2009
Posts: 1,214
Received Thanks: 2,598
Ich seh's mir heute Abend eventuell mal an, ich schicke dir eine PN mit meiner Skype-ID, dann kannst du mich hinzufügen. Ich werde die dann die Tage mal unter die Arme greifen.
Mijago is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
MySQL <=> Quest abfrage Problem
04/03/2013 - Metin2 Private Server - 12 Replies
Moin, Ich habe ein kleines Problem mit meiner Quest, und zwar wollte ich mit Hilfe einer mysql_query - Abfrage die Coins eines Accounts auslesen, nur leider klappt es nicht ganz... Hier mal der ausschnitt der Quest: elseif f==3 then say_title("Lagerverwalter:") say("Gebe nun den Spielernamen ein.") local name_of_char_to_check_coins = input()
Quest mit MySQL-Abfrage
01/14/2013 - Metin2 Private Server - 2 Replies
Wie man aus der Überschrift schon entnehmen kann, hab ich eine Frage zu Quests und zwar: Wenn ich mit os.execute arbeite, lässt sich damit etwas aus der Datenbank abfragen, weil updaten kann man ja die db, aber eben das abfragen. Ich würde mich über konstruktive Antworten freuen.
[mysql]Abfrage?
12/13/2012 - Metin2 Private Server - 9 Replies
Wie kann ich in einer quest eine Mysql abfrage machen? zb Das Geld von mein gerade gespielten Spieler??
MySQL Abfrage item_proto
04/18/2011 - Metin2 Private Server - 3 Replies
ich möchte ganz einfach und simpel alle codes anzeigen lassen in einer Tabelle : Name: Code: das wars das ist mein bisheriger code <?php
[PHP]Mysql Abfrage Problem
08/30/2010 - Web Development - 4 Replies
Hallo zusammen, ich wollte mal fragen ob mit jemand hier helfen kann. Ich habe Folgende Funktion public function getStats() { if($this->getLogin()) { $sql = "SELECT * FROM character WHERE accountID = '".$this->getAccID()."'"; $stats = Game::getDB()->getFirstRow($sql);



All times are GMT +1. The time now is 05:17.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.