Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...

thomasx3

Membre
  • Compteur de contenus

    232
  • Inscription

  • Dernière visite

  • Jours gagnés

    3

Messages posté(e)s par thomasx3

  1. Version des fichiers/ Type d'émulateur : Files 2014 By FE

    Domaine (Base de données, Client, Core...) : Bonne question

    Votre niveau (Débutant, Intermédiaire, Avancé..) : Intermédiaire

     

    Bonjour, Bonsoir.

    J'ai un petit problème  sur mon serveur et je ne suis pas le seul, je pense que la résolution ferait plaisir à plusieurs personnes !

    Le voici en image, ça concerne le skill Contre-sortilège des Suras AM.


    142742Screenshot-2.png

     

    Merci à tous pour votre aide !

     

    En postant ma demande d'aide, j'affirme avoir lu et accepté le Règlement de Funky-Emulation.

  2. Oui je ne sais pas du tout d'ou vient ce probleme !

    De l'execution de la query ?Donc de la fonction dans 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) -- 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


     

  3. Domaine (Base de données, Client, Core...) : Base de donnée/Core

    Votre niveau (Débutant, Intermédiaire, Avancé..) : Intermédiaire

     

    Bonjour, Bonsoir,

     

    J'ai un petit soucis auquel je ne trouve aucune réponse malgré de nombreuses recherches.
    Lors de l'execution d'une quête utilisant MYSQL, j'ai une erreur qui s'affiche sur putty

     

    Citation

    Syntax error: ")" unexpected


    Et la quête ne s’exécute pas du tout, savez vous d'ou cela peut t'il provenir ?

    Voici la quête en question !
     

    -- Quest File written by Kilroy.
    -- Function: AnyShop Lua/Python/Sql
    -- Questpart: 1/1
    quest AnyShop begin
    	state start begin
    		when login begin
    			cmdchat(string.format("AnyShop index/%d", q.getcurrentquestindex()))
    		end
    		when button begin
    			cmdchat("getinputbegin")
    			local INPUT = AnyShop.stringSplit(input(cmdchat("AnyShop input/")), "/")
    			cmdchat("getinputend")
    			if INPUT[1]=="open" then
    				if not AnyShop.AntiFlood_(1, 3) then return end
    
    				local stringTable, tableItems = {}, mysql_query("SELECT shopitems.vnum, shops.shop_id, categories.name as category, shopitems.preis, shopitems.rabatt, IFNULL(TIMESTAMPDIFF(second, NOW(), shopitems.angebot),0) as seconds, shops.suffix, categories.cat_id FROM anyshop.shopitems JOIN anyshop.shops ON shops.shop_id = shopitems.shop_id JOIN anyshop.categories ON categories.cat_id = shopitems.cat_id ORDER BY verkauft DESC;")
    				if (tableItems==nil or tableItems[1]==nil) then syschat("Erreur. Configuration incorrecte dans la table 1") return end
    				local tableCount = table.getn(tableItems)
    				cmdchat("AnyShop ClearBoard/")
    
    
    				local moneyQuery, cashs = "", mysql_query("SELECT coin_column, suffix, name, shop_id FROM anyshop.shops;")
    				if (cashs==nil or cashs[1]==nil) then syschat("Erreur. Configuration incorrecte dans la table 2") return end 
    				for i=1, table.getn(cashs), 1 do moneyQuery = moneyQuery..(i==1 and "" or ",")..cashs[i][1] end
    				local money = mysql_query("SELECT "..moneyQuery.." FROM account.account WHERE id = "..pc.get_account_id()..";")
    				if (money==nil or money[1]==nil) then syschat("Erreur. Configuration incorrecte dans la table 3") return end 
    				local moneyCMD = "AnyShop config/"
    				for i=1, table.getn(money[1]), 1 do moneyCMD = moneyCMD..(i==1 and "" or "|")..money[1][i]..","..cashs[i][2]..","..cashs[i][3]..","..cashs[i][4] end
    				cmdchat(moneyCMD)
    				item.select_cell(204)
    				money = item.get_socket(0)
    				cmdchat("AnyShop setmoney/3/"..money)
    
    
    				if tableCount==0 then return end
    				for i=1, tableCount, 1 do table.insert(stringTable, string.format("%d,%d,%s,%d,%d,%d,%s,%d", unpack(tableItems[i]))) end
    				local AddToListCMD = "AnyShop AddToList/"..stringTable[1]
    				for i=2, tableCount, 1 do
    					if string.len(AddToListCMD)+string.len(stringTable[i])>=490 then
    						cmdchat(AddToListCMD)
    						AddToListCMD = "AnyShop AddToList/"..stringTable[i]
    					else
    						AddToListCMD = AddToListCMD.."|"..stringTable[i]
    					end
    					if i==tableCount then
    						cmdchat(AddToListCMD)
    						break
    					end
    				end
    				cmdchat("AnyShop FinishSending/")
    
    			elseif INPUT[1]=="buy" then
    				if not AnyShop.AntiFlood_(2, 3) then return end
    
    				local itemVnum = tonumber(INPUT[2])
    				local itemCount = tonumber(INPUT[3])
    				local shopId = tonumber(INPUT[4])
    				
    				if (itemVnum==nil or itemVnum<10) or (itemCount==nil or itemCount<1) then return end
    
    				local choosenItem = mysql_query("SELECT shopitems.vnum, shopitems.preis, shopitems.rabatt, IFNULL(TIMESTAMPDIFF(second, NOW(), shopitems.angebot),0) as seconds, shops.coin_column, shops.suffix, shops.shop_id FROM anyshop.shopitems JOIN anyshop.shops ON shops.shop_id = shopitems.shop_id WHERE shopitems.vnum="..itemVnum.." and shopitems.shop_id="..shopId..";")
    				if (choosenItem[1]~=nil or table.getn(choosenItem[1]))==0 then syschat("L'article n'est plus disponible !") return end
    				local sqlVnum, itemPrice, itemRabatt, itemAngebotSek, cash, Suffix, sqlShopId = tonumber(choosenItem[1][1]),tonumber(choosenItem[1][2]),tonumber(choosenItem[1][3]),tonumber(choosenItem[1][4]),choosenItem[1][5],choosenItem[1][6],tonumber(choosenItem[1][7])
    				if (sqlVnum~=itemVnum) or (sqlShopId~=shopId) then return end
    
    				itemPrice = itemPrice * itemCount
    				if (itemAngebotSek>=0 and itemRabatt>0) then
    					itemPrice = itemPrice-math.floor(itemPrice*(itemRabatt/100))
    				end
    				
    				if shopId == 1 then
    					local money = mysql_query("SELECT cash FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1]
    					if money < itemPrice then 
    						syschat("<Shop> Vous n'avez pas assez de "..Suffix.." pour cette article !") 
    						cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    						return 
    					end
    
    					mysql_query("UPDATE account.account, anyshop.shopitems SET account.cash = account.cash-"..itemPrice..", shopitems.verkauft = shopitems.verkauft+1 WHERE account.id = "..pc.get_account_id().." AND (shopitems.vnum="..itemVnum.." AND shopitems.shop_id="..shopId..") ;")
    					money = mysql_query("SELECT cash FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1]
    					cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    				--	mysql_query("INSERT INTO anyshop.islog (pseudo, id_compte, id_item, prix_item, quantite) VALUES('"..pc.get_name().."', '"..pc.get_account_id().."', '"..itemVnum.."', '"..itemPrice.."', '"..itemCount.."') ;")
    					if itemVnum != 80014 and itemVnum != 80015 and itemVnum != 80016 then
    						mysql_query("UPDATE account.account SET account.mileage = account.mileage+"..itemPrice.." WHERE account.id = "..pc.get_account_id()..";")
    						money2 = mysql_query("SELECT mileage FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1]
    						local shopId2 = 2
    						cmdchat("AnyShop setmoney/"..shopId2.."/"..money2)
    					end
    
    					pc.give_item2_select(itemVnum, 1)
    					itemCount = itemCount - 1
    					if item.has_flag(4) and itemCount>0 then
    						for i=1, math.floor(itemCount/200), 1 do
    							pc.give_item2(itemVnum, 200)
    						end
    						pc.give_item2(itemVnum, (itemCount - math.floor(itemCount/200)*200))
    					else
    						for i=1, itemCount, 1 do pc.give_item2(itemVnum) end
    					end
    				end
    				if shopId == 2 then
    					local money = mysql_query("SELECT mileage FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1]
    					if money < itemPrice then 
    						syschat("<Shop> Vous n'avez pas assez de "..Suffix.." pour cette article !") 
    						cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    						return 
    					end
    
    					mysql_query("UPDATE account.account, anyshop.shopitems SET account.mileage = account.mileage-"..itemPrice..", shopitems.verkauft = shopitems.verkauft+1 WHERE account.id = "..pc.get_account_id().." AND (shopitems.vnum="..itemVnum.." AND shopitems.shop_id="..shopId..") ;")
    					money = mysql_query("SELECT mileage FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1]
    					cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    					mysql_query("INSERT INTO anyshop.islog (pseudo, id_compte, id_item, prix_item, quantite) VALUES('"..pc.get_name().."', '"..pc.get_account_id().."', '"..itemVnum.."', '"..itemPrice.."', '"..itemCount.."') ;")
    
    					pc.give_item2_select(itemVnum, 1)
    					itemCount = itemCount - 1
    					if item.has_flag(4) and itemCount>0 then
    						for i=1, math.floor(itemCount/200), 1 do
    							pc.give_item2(itemVnum, 200)
    						end
    						pc.give_item2(itemVnum, (itemCount - math.floor(itemCount/200)*200))
    					else
    						for i=1, itemCount, 1 do pc.give_item2(itemVnum) end
    					end
    				end
    				if shopId == 3 then
    					item.select_cell(204)	
    					local money = item.get_socket(0)
    					if money < itemPrice then 
    						syschat("<Shop> Vous n'avez pas assez de "..Suffix.." pour cette article !") 
    						cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    						return 
    					end
    
    					item.set_socket(0, (item.get_socket(0)-itemPrice))	
    					money = item.get_socket(0)
    					cmdchat("AnyShop setmoney/"..shopId.."/"..money)
    					mysql_query("INSERT INTO anyshop.islog (pseudo, id_compte, id_item, prix_item, quantite) VALUES('"..pc.get_name().."', '"..pc.get_account_id().."', '"..itemVnum.."', '"..itemPrice.."', '"..itemCount.."') ;")
    
    					pc.give_item2_select(itemVnum, 1)
    					itemCount = itemCount - 1
    					if item.has_flag(4) and itemCount>0 then
    						for i=1, math.floor(itemCount/200), 1 do
    							pc.give_item2(itemVnum, 200)
    						end
    						pc.give_item2(itemVnum, (itemCount - math.floor(itemCount/200)*200))
    					else
    						for i=1, itemCount, 1 do pc.give_item2(itemVnum) end
    					end
    				end
    			end
    		end
    		function stringSplit(str, sep)
    			local sep, fields = sep or ",", {}
    			local pattern = string.format("([^%s]+)", sep)
    			string.gsub(str, pattern, function(c) table.insert(fields, c) end)
    			return fields
    		end
    		function AntiFlood_(n, t)
    			if pc.getqf("AntiFlood"..n)>get_time() then
    				syschat(string.format("Veuillez patientez %d seconde avant de pouvoir effectuer un autre achat.", pc.getqf("AntiFlood"..n)-get_time()))
    				return false
    			end
    			pc.setqf("AntiFlood"..n, get_time()+t)
    			return true
    		end
    	end
    end

    Merci à tous pour vos réponses :)
     

     

    En postant ma demande d'aide, j'affirme avoir lu et accepté le Règlement de Funky-Emulation.

  4. Lors de l'execution de cette  requete, j'obtiens un empty set,

     

    SELECT shopitems.vnum, shops.shop_id, categories.name as category, shopitems.preis, shopitems.rabatt, IFNULL(TIMESTAMPDIFF(second, NOW(), shopitems.angebot),0) as seconds, shops.suffix, categories.cat_id FROM anyshop.shopitems JOIN anyshop.shops ON shops.shop_id = shopitems.shop_id JOIN anyshop.categories ON categories.cat_id = shopitems.cat_id ORDER BY verkauft DESC;

     

     

     

    Or les tables sont bel et bien remplie !

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.