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

Tout ce qui a été posté par thomasx3

  1. Bonjour, Bonsoir, Je possede des files 2016 modifié en dedié. Recemment, j'ai voulu installer le Anyshop(Item-Shop In game) Cependant, j'ai cette erreur : SYSERR: Sep 3 04:49:51 :: RunState: LUA_ERROR: locale/france/quest/questlib.lua:2680: attempt to index a nil value SYSERR: Sep 3 04:49:51 :: WriteRunningStateToSyserr: LUA_ERROR: quest AnyShop.start click Voici la fonction de la ligne 2680 : 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); <---------Celle ci la 2680 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 Et maintenant la quête : -- Quest File written by Kilroy. -- 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_direct_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_direct_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_direct_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_direct_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_direct_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_direct_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_direct_query("SELECT cash FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1] cmdchat("AnyShop setmoney/"..shopId.."/"..money) -- mysql_direct_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_direct_query("UPDATE account.account SET account.mileage = account.mileage+"..itemPrice.." WHERE account.id = "..pc.get_account_id()..";") money2 = mysql_direct_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_direct_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_direct_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_direct_query("SELECT mileage FROM account.account WHERE id = "..pc.get_account_id()..";")[1][1] cmdchat("AnyShop setmoney/"..shopId.."/"..money) mysql_direct_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_direct_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 J'ai cherché mainte et mainte fois, toujours sans succé. Merci pour votre aide !
  2. thomasx3

    Erreur Sql

    Ne cerais-ce pas une mauvaise configuration du My.cnf ?
  3. thomasx3

    [Résolu]Valeur skil

    Quel serais le fichier donc ? Merci
  4. Version des fichiers/ Type d'émulateur : Files FE2016 Domaine (Base de données, Client, Core...) : Source, Base de donnée ? Votre niveau (Débutant, Intermédiaire, Avancé..) : Intermédiaire Bonjour, Voulant reprendre l'émulation, je me demande, comment par exemple bride t'on la protection MN, ou on augmente les dégats des Guerrier Mental ...? Skill_proto ? Fichiers dans Srcs ? Merci à tous pour vos réponses
  5. Certain serveur aiment les mettent en P, je trouve cela dommage egalement, mais l'actuelle population de metinien préfère la facilité....
  6. Centre de Téléchargement Télécharger ( Interne ) Bonsoir, Ce matin je rechercher la quête pour le skill P, mais elle ne ma pas trop plus, j'ai alors décidé de la refaire en la simplifiant. Elle met les skills ainsi que les competence en P En espérant qu'elle voit soit utile !
  7. thomasx3

    Operation timed out

    Merci beaucoup pour l'aide !
  8. thomasx3

    Operation timed out

    Non non , j'ai touché a rien , j'ai juste installé les files
  9. Bonjour , bonsoir, J'ai decidé de me "moderniser" en passant par les files 2016, cependant, j'ai une erreur de Timed Out, je ne sais pas comment la résoudre... Version des files : 2016 Domaine (Base de données, Core, etc.) : Cores Votre niveau (débutant, intermédiaire, avancé) : Intermediaire Description du problème : Je viens d'installer les files 2016 sur mon dedier , mais lorsque je le open , tout va bien 2 minutes grand max puis plein de connection Timed Out Recherches et tests effectué : Suite à l'utilisation de la commande Ps et a l'inactivité de DB , j'ai regardé le syserr et le syslog. Résultat des recherches et tests : Fin du syslog : [Hidden Content] Fin du syserr : [Hidden Content] Merci a tous pour votre aide. En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.
  10. thomasx3

    Item-Shop site

    Merci , je déplace.
  11. thomasx3

    Item-Shop site

    Peux tu nous partager ta solution ? Merci.
  12. Sujet résolu , je déplace.
  13. thomasx3

    Bug IP

    Merci Azasal d'avoir posté la réponse. Je déplace.
  14. thomasx3

    Resolution de quête

    Sujet résolu , je déplace.

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.