Jump to content
×
×
  • Create New...
  • 0

Core Dumped mysql_query


luuzia
 Share

Question

Bonjour a tous , 

 

J'ai une petit problème avec une quest , pour crée des item directement In Game vicie la quest

 

J'ai nommer le fichier : itemIG.quest  -> 

                                    J'ai ajouter parmi les autres quest < /usr/metin2/share/locale/france/quest>

                                    Dans les proprieter j'ai mis l'autorisation "0777"

                                    j'ai ajouter dans local_list "j'ai laisser une ligne a la fin "

                                    est j'ai modifier dans navicat le table  : Player -> Item-> Ctrl+D tout la colone Type par varchar sauf la ligne "window"

Fini tout ça j'ai reload q Ig est BDD ./quest.sh

  Est voila ce que ça me met :

v68T0.jpg

 

8n57M.jpg

 

UwD3.jpg

 

OWacm.jpg

 

Quand ils faut choisir les pierres plus aucune fenêtre s 'ouvre :/

--------------------------------------------------------------------

 

-- Quête: Item avec bonus  --

-- By: Prof-Stof                --

-- Skype: XProfStof  --

-- Cette quête est créé par Prof-Stof sur son serveur Fechkel-MT2 --

-- Merci de ne pas effacer ce commentaire  --

--------------------------------------------------------------------

quest objet_bonus begin

state start begin

when 40002.use with pc . is_gm ( ) begin

say_title("Item avec bonus:")

say("")

---                                                   l

say("Ici vous pouvez créer des items avec des bonus et")

say("des pierres de votre choix.")

say("")

say("N'abusez pas !")

say("Un bug est prévu en cas d'abuse d'utlisation")

say("")

local s = select("Commencer la fabriquation", "Fermer")

if s==2 then

return

else

say("Entrez l'ID du joueur:")

local id = tonumber(input())

say("Entrez l'ID de l'objet:")

local item = tonumber(input())

mysql_query("INSERT INTO player.item (owner_id, window, pos, count, vnum) VALUES ('".. id .."', 'MALL', '34', '1', '".. item .."')");

say("Entrez l'ID de la pierre 1:")

local p1 = tonumber(input())

mysql_query("UPDATE player.item SET socket0='".. p1 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID de la pierre 2:")

local p2 = tonumber(input())

mysql_query("UPDATE player.item SET socket1='".. p2 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID de la pierre 3:")

local p3 = tonumber(input())

mysql_query("UPDATE player.item SET socket2='".. p3 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 1:")

local b1 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype0='".. b1 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 1:")

local vb1 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue0='".. vb1 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 2:")

local b2 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype1='".. b2 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 2:")

local vb2 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue1='".. vb2 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 3:")

local b3 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype2='".. b3 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 3:")

local vb3 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue2='".. vb3 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 4:")

local b4 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype3='".. b4 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 4:")

local vb4 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue3='".. vb4 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 5:")

local b5 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype4='".. b5 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 5:")

local vb5 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue4='".. vb5 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 6:")

local b6 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype5='".. b6 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 6:")

local vb6 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue5='".. vb6 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez l'ID du bonus 7:")

local b7 = tonumber(input())

mysql_query("UPDATE player.item SET attrtype6='".. b7 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

say("Entrez la valeur du bonus 7:")

local vb7 = tonumber(input())

mysql_query("UPDATE player.item SET attrvalue6='".. vb7 .."' WHERE (owner_id='".. id .."' and window='MALL' and pos=34 and count=1)");

end

say_title("Item avec bonus:")

say("")

---                                                   l

say("Votre item a été bien créer !")

say("Vérifiez votre inventaire d'Item-Shop.")

say("")

say("")

syschat("Vérifiez votre inventaire d'Item-Shop.")

end

end

end

Edited by Funky Emulation
Core X - External 2 Internal
Link to comment
Share on other sites

  • Answers 15
  • Created
  • Last Reply

Top Posters For This Question

15 answers to this question

Recommended Posts

  • 0
  • Bot

Essayes de déclarer ta fonction mysql_query dans le fichier quest_functions et dis moi quoi tu copies colles juste mysql_query dedans ^^

Il y a aussi un code à mettre dans le questlib

 

Pour ma part j'ai ça dans le miens :

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? MySQL51
   os.execute('mysql '..pre..' -e'..string.format('%q',query)..' > '..fi) -- f? 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

french_banner.gif

Link to comment
Share on other sites

  • 0
  • Retraité

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.

You can't be immortal,
But you can make people remember
you for thousands of years...

Link to comment
Share on other sites

  • 0

J'ai tout fait tout marche bien , il y a plus le core dumped , la quette marche parfaitement mais je reçoit pas l'item dans l'item shop

 

est je vienne de remarquer que j'ai une erreur BD

wYkb4.jpg

Edited by Funky Emulation
Core X - External 2 Internal
Link to comment
Share on other sites

  • 0

Tu insert une position déjà existante '1'

 

mysql_query("INSERT INTO player.item (owner_id, window, pos, count, vnum) VALUES ('".. id .."', 'MALL', '34', '1', '".. item .."')");

 Et deuxième chose, pourquoi faire sa ? déjà il faudrait calculer une position libre, et deuxièmement, un insert en SQL dans la table item n'a pas un résultat immédiat IG

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share



  • Flux d'Activité

    1. 0

      Projet Genesis

    2. 4

      Shiva.international serveur privé metin2 Oldschool Start 16.09.2022

    3. 0

      Metin2 Champions - Accès anticipé

    4. 0

      Barbok

    5. 4

      Shiva.international serveur privé metin2 Oldschool Start 16.09.2022

    6. 2

      Partage Émulateur 2.63

    7. 2

      Partage Émulateur 2.63

  • Recently Browsing

    • No registered users viewing this page.

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.