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

aminalibi1

Membre
  • Compteur de contenus

    178
  • Inscription

  • Dernière visite

Tout ce qui a été posté par aminalibi1

  1. Oui @"ASIKOO", la fonction mysql_query est publique mais la quête et l'idée de passer via mysql sont les miennes.
  2. aminalibi1

    [Partage] Instance Nemere

    Avec plaisir @"ASIKOO"
  3. Centre de Téléchargement Télécharger ( Interne ) Salut, Je vous partage une petite quete qui compte le nombre des kills selon la royaume de la personnage tuée et stock les données dans une table mysql : quest killselonempire begin state start begin when kill begin if npc.is_pc() then if npc.empire == 1 then local query = mysql_query("UPDATE player.player SET rouge_tuer=rouge_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT rouge_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local rouge_tuer_p = rr[1][1] elseif npc.empire == 2 then local query = mysql_query("UPDATE player.player SET jaune_tuer=jaune_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT jaune_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local jaune_tuer_p = rr[1][1] elseif npc.empire == 3 then local query = mysql_query("UPDATE player.player SET bleu_tuer=bleu_tuer+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT bleu_tuer from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local bleu_tuer_p = rr[1][1] end else local query = mysql_query("UPDATE player.player SET pve=pve+1 WHERE id='"..pc.get_player_id().."';") local rr = mysql_query("SELECT pve from player.player WHERE id='"..pc.get_player_id().."' LIMIT 1") local pve_p = rr[1][1] end end end end Dans queslib.lua , ajoutez : 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 Ensuite , allez dans navicat , clic droite sur la base de donnée Player et choisissez "Console..". Collez : ALTER TABLE player ADD( rouge_tuer int(11), jaune int(11), bleu_tuer int(11), pve int(11) ); Et ENTRER.
  4. aminalibi1

    [Partage] Instance Nemere

    Salut Taku , Non celle ci était sur Corpse.
  5. Centre de Téléchargement Télécharger ( Interne ) Salut FE, Je vous partage l'instance glaciale (Nemeres) , modifiée par moi même et fonctionnelle. ---------------------- -- Corpse II : Nemeres ---------------------- quest snowdungeon begin state start begin when 20397.chat."Tour de Nemeres" begin say_title("Statue Roi de gheata") say("Le mal ravage notre monde depuis des années et cela de différentes manières.") say("son pouvoir est plus fort de jour en jour.") say("Nos Royaumes commencent à tomber, mais qui pour arrêter ce cauchemar ?") say("De simple personne lambda, n'écoutant que leurs courages !") if pc.get_level() >= 90 then if party.is_party() or pc.is_gm() then if party.is_leader() or pc.is_gm() then say_reward("Êtes-vous prêt à affronter le mal et faire face à vos destins ?") if select("Oui, nous croyons en nos forces !","Non, nous sommes bien trop faibles.") == 1 then pc.remove_item(30256,1) d.join(240) end else say_reward("Vous devez être le Chef du groupe.") end else say_reward("Vous devrez faire partie d'un groupe.") end else say_reward("Vous devez etre level 100.") end end when 20397.chat."La place de Nemeres" with d.getf("actual_round") == 9 begin if party.is_leader() or pc.is_gm() then say_title("Statue Roi de gheata") say("L'aventure fut longue et périlleuse mais finalement") say("Je suis arrivé à la source de la rivière.") say("Nemeres est de l'autre côté, allez le vaincre !") say_reward("Êtes-vous prêt à y faire face ?") if select("Oui, nous sommes toujours confiants !","Non, nous ne croyons plus en nos forces.") == 1 then if d.getf("used_statue", 0) then d.setf("used_statue", 1) syschat("Dans les 10 prochaines secondes, vous serez téléporté avec votre groupe !") timer("nextlevel",10) end end end end when login with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin d.notice("[Tour de Nemeres] La bataille a commencé.") d.notice("[Tour de Nemeres] Exterminez les ennemies ! bonne chance.") if party.is_party() then if party.is_leader() then snowdungeon.start() end else if pc.is_gm() then snowdungeon.start() end end end when 20398.take begin if d.getf("actual_round") == 5 then if item.get_vnum() == 30332 then pc.remove_item(item.get_vnum(),1) npc.purge() d.setf("box_opened", d.getf("box_opened")+1) if d.getf("box_opened") == 6 then d.notice("[Tour de Nemeres] Les joints ont été ouverts") d.notice("[Tour de Nemeres] Vous allez jusqu'au 6ème étage !") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Courage, Il vous reste "..6-d.getf("box_opened").." sceaux à ouvrir !") end end end end when 30331.use begin if d.getf("actual_round") == 2 then if pc.get_job() == 3 or pc.get_job() == 7 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else syschat("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") syschat("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30331,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman.") end end end when 30333.use begin if pc.get_job() == 3 or pc.get_job() == 7 or pc.get_job() == 1 or pc.get_job() == 5 then if d.getf("actual_round") == 8 then if number(1,8) == 5 then d.notice("[Tour de Nemeres] La chance vous sourit. La clé était parfaite !.") d.notice("[Tour de Nemeres] Bientôt vous serez redirigé vers le prochain étage.") snowdungeon.purge() timer("nextlevel",10) else d.notice("[Tour de Nemeres] Suite à son impuissance la clé s'est brisée.") d.notice("[Tour de Nemeres] Trouvez une autre clé et réessayez.") pc.remove_item(30333,1) end else syschat("La clé ne peut être utilisé seulement par un puissant chaman ou un ninja.") end end end when kill with pc.get_map_index() >= 2400000 and pc.get_map_index() <= 2405000 begin if d.getf("actual_round") == 6 and npc.get_race() == 6109 then d.notice("[Tour de Nemeres] Félicitations, vous avez détruit la source de ses pouvoirs") d.notice("[Tour de Nemeres] Dans quelques instants, vous monterez au 7ème étage.") timer("nextlevel",10) end if d.getf("actual_round") == 7 and npc.get_race() == 6151 then d.notice("[Tour de Nemeres] Félicitations, tuant Le fidèle Nemeres, vous serez amené au 8ème étage .") snowdungeon.purge() timer("nextlevel",10) end if d.getf("actual_round") == 9 and npc.get_race() == 20399 then d.notice("[Tour de Nemeres] Le dernier pilier de sa défense a été démoli ") d.notice("[Tour de Nemeres] Le Lion de glace est apparu.") snowdungeon.purge() d.spawn_mob(20397, 848, 669) end if d.getf("actual_round") == 10 and npc.get_race() == 6191 then d.notice("[Tour de Nemeres] Félicitations, vous avez tuer Nemeres, vous êtes les combattants de la destinée !") notice_all("Avec un dernier souffle de chef de file de l'espoir "..pc.get_name().."") notice_all("Suivi par ses guerriers fidèles ont réussi à battre le redoutable Nemeres.") d.setf("actual_round","0") ------------------ local time = get_time() d.setqf2("snowdungeon","daily_nemeres_last_kill", time) d.setqf2("snowdungeon","daily_nemeres", 1) ------------------ d.clear_regen() d.kill_all() d.spawn_mob(9012, 928, 338) timer("exit_snow", 60) d.notice("En 60 secondes, vous serez téléporté en dehors.") end if d.getf("actual_round") == 1 then d.setf("kill_count_sd1",d.getf("kill_count_sd1") +1) if d.getf("kill_count_sd1") == d.getf("sd_kill_to_next") then d.notice("[Tour de Nemeres] Vous avez terminé le premier étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 2ème étage.") snowdungeon.purge() timer("nextlevel",10) end elseif d.getf("actual_round") == 2 then if number(1,50) == 1 then game.drop_item_with_ownership(30331,1) end elseif d.getf("actual_round") == 3 then d.setf("kill_count_sd3",d.getf("kill_count_sd3") +1) if d.getf("kill_count_sd3") == d.getf("sd3_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] Vous avez terminé le 3ème étage .") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 4ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 4 then d.setf("kill_count_sd4",d.getf("kill_count_sd4") +1) if d.getf("kill_count_sd4") == d.getf("sd4_kill_to_next") then snowdungeon.purge() d.notice("[Tour de Nemeres] La 4ème vague a été détruite.") d.notice("[Tour de Nemeres] Dans quelques instants, vous montez au 5ème étage.") timer("nextlevel",10) end elseif d.getf("actual_round") == 5 then if number(1,100) == 1 then game.drop_item_with_ownership(30332,1) end elseif d.getf("actual_round") == 6 then d.setf("kill_count_sd6",d.getf("kill_count_sd6") +1) if d.getf("kill_count_sd6") == d.getf("sd6_kill_to_next") then d.notice("[Tour de Nemeres] Ce qui se produit ? Il voit un ciel bleu !?") snowdungeon.purge() timer("level7metin",5) end elseif d.getf("actual_round") == 8 then if number(1,50) == 1 then game.drop_item_with_ownership(30333,1) end end end when level7metin.timer begin if d.getf("actual_round") == 6 then d.spawn_mob(6109, 743, 495) end end when nextlevel.timer begin if d.getf("actual_round") == 1 then -- Niveau 2 d.jump_all(5120+421,1536+264) d.setf("actual_round",2) d.set_regen_file("data/dungeon/snowdungeon/nivel_2.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 2ème étage ") d.notice("[Tour de Nemeres] Cherchez la bonne clé pour avancer au niveau suivant.") elseif d.getf("actual_round") == 2 then -- Niveau 3 d.jump_all(5120+761,1536+268) d.setf("actual_round",3) d.setf("kill_count_sd3","0") d.setf("sd3_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_3.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 3ème étage") d.notice("[Tour de Nemeres] Exterminez l'armée de Nemeres jusqu'au dernier pour avancer.") elseif d.getf("actual_round") == 3 then -- NIVEL 4 d.jump_all(5120+174,1536+526) d.setf("actual_round",4) d.setf("kill_count_sd4","0") d.setf("sd4_kill_to_next","300") d.set_regen_file("data/dungeon/snowdungeon/nivel_4.txt") d.notice("[Tour de Nemeres] Vouz êtes montés au 4ème étage.") d.notice("[Tour de Nemeres] Détruisez-les tous pour avancer.") elseif d.getf("actual_round") == 4 then -- Niveau 5 d.jump_all(5120+421,1536+533) d.setf("actual_round",5) d.set_regen_file("data/dungeon/snowdungeon/nivel_5.txt") local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}} local n = number(1,5) local coords = {{391,490},{451,490},{463,455},{380,456},{420,422}} for i = 1, 5 do d.spawn_mob(20398, coords[i][1],coords[i][2]) end d.setf("box_opened", 1) d.setf("sequence",n) d.notice("[Tour de Nemeres] Vous êtes dans le 5ème étage") elseif d.getf("actual_round") == 5 then -- Niveau 6 d.jump_all(5120+746,1536+536) d.setf("actual_round",6) d.setf("kill_count_sd6","0") d.setf("sd6_kill_to_next","200") d.set_regen_file("data/dungeon/snowdungeon/nivel_6.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 6ème étage.") d.notice("[Tour de Nemeres] Ses troupes ont commencé à se désagréger.") elseif d.getf("actual_round") == 6 then -- Niveau 7 d.jump_all(5120+304,1536+719) d.setf("actual_round",7) d.regen_file("data/dungeon/snowdungeon/nivel_7.txt") d.spawn_mob(6109, 326, 657) elseif d.getf("actual_round") == 7 then -- Niveau 8 d.jump_all(5120+569,1536+642) d.setf("actual_round",8) d.set_regen_file("data/dungeon/snowdungeon/nivel_8.txt") d.notice("[Tour de Nemeres] Vous êtes dans le 8ème étage.") elseif d.getf("actual_round") == 8 then -- Niveau 9 d.notice("[Tour de Nemeres] Vous êtes dans le 9ème étage.") d.jump_all(5120+848,1536+689) d.set_regen_file("data/dungeon/snowdungeon/nivel_9.txt") d.setf("actual_round",9) d.spawn_mob(20399, 849, 659) elseif d.getf("actual_round") == 9 then -- NIVEL 10 BOSS ROOM d.setf("used_statue", 0) d.spawn_mob(6191, 927, 323) d.jump_all(5120+928,1536+390) d.setf("actual_round",10) d.set_regen_file("data/dungeon/snowdungeon/nivel_10.txt") end snowdungeon.NoticeTime() end function start() d.set_regen_file("data/dungeon/snowdungeon/nivel_1.txt") d.setf("actual_round",1) d.setf("time", get_time()+60*60*1) d.setf("sd_kill_to_next",100) d.setf("kill_count_sd1",0) server_timer("snowdungeontime",3600,pc.get_map_index()) --server_loop_timer("snowdungeontimenotice",300) snowdungeon.NoticeTime() end when snowdungeontimenotice.server_timer begin if pc.get_map_index()<= 2405000 then snowdungeon.NoticeTime() end end function GetPillarID() if pc.get_local_x() >= 391 - 5 and pc.get_local_x() <= 391 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 1 elseif pc.get_local_x() >= 451 - 5 and pc.get_local_x() <= 451 + 5 and pc.get_local_y() >= 490 - 5 and pc.get_local_y() <= 490 + 5 then return 2 elseif pc.get_local_x() >= 463 - 5 and pc.get_local_x() <= 463 + 5 and pc.get_local_y() >= 455 - 5 and pc.get_local_y() <= 455 + 5 then return 3 elseif pc.get_local_x() >= 380 - 5 and pc.get_local_x() <= 380 + 5 and pc.get_local_y() >= 456 - 5 and pc.get_local_y() <= 456 + 5 then return 4 elseif pc.get_local_x() >= 420 - 5 and pc.get_local_x() <= 420 + 5 and pc.get_local_y() >= 422 - 5 and pc.get_local_y() <= 422 + 5 then return 5 else return false end end when snowdungeontime.server_timer begin if d.select(get_server_timer_arg()) then d.notice("............!") d.exit_all() end end when exit_snow.timer begin d.exit_all() end function NoticeTime() local secondsLeft = (d.getf("time") - get_time()) local minutesLeft = math.ceil(secondsLeft / 60) d.notice("[Tour de Nemeres] Temps Restant: "..minutesLeft.." minutes.") end function purge() d.kill_all() d.clear_regen() end end end Installer une quête : ici Pour les regen.txt/quest_function/group.txt vous les trouverez :Ici
  6. Bonjour , Juste une petite question , vous avez le lycan dans votre serveur ?
  7. quest give_item_selon_empire begin state start begin when login begin if pc.getqf("basic_weapon") == 0 then pc.setqf("basic_weapon", 1) if pc.get_empire()==1 then --(Empire Rouge) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2, quantité) elseif pc.get_empire()==2 then --(Empire Jaune) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2) elseif pc.get_empire()==3 then --(Empire Bleu) pc.give_item2(id_item_1, quantité) pc.give_item2(id_item_2, quantité) end end end end end
  8. Lien C'est pas complet mais ça aide Si tu parles de créer une quête , elle va juste bloquer le pvp des joueurs du même royaume en désactivant le mode Pvp.
  9. aminalibi1

    AntiFlags

    Pour un item porté juste par guerrier et ninja l'antiflag est : 48
  10. quest anneau_magique begin state start begin when 40004.use begin say_title("Anneau d'Entrepôt/Banque") say("Veuillez choisir une fonction :") local a=select( "Banque" , "Entrepôt" , "Fermer" ) if a==3 then return end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Banque -- ---------------------------------------------------------------------------------------------------------------------------------------- if a==1 then say_title("Banque") say("Veuillez choisir une fonction :") local s=select("Stocker des yangs", "Retirer des yangs", "Voir létat de mon compte", "Fermer") -- Stock yangs -- if s==1 then say_title("Banque") say("Combien de yangs voulez-vous stocker ?") say_reward("Vous avez : "..pc.gold.." yangs.") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.gold then i = pc.gold end j = i + pc.getqf("nb_yang") while j >= 1000000000 do pc.setqf("nb_milliard", pc.getqf("nb_milliard")+1) j = j - 1000000000 end pc.setqf("nb_yang", j) pc.change_gold(-i) syschat(i.." yangs stockés.") -- Retire et voir le compte -- elseif s==2 or s==3 then say_title("Banque") say("") say("Yangs sur votre compte :") a = "" c = "" if pc.getqf("nb_milliard") > 0 then a = pc.getqf("nb_milliard") b = 100000000 while b > pc.getqf("nb_yang") and b != 1 do c = c.."0" b = b/10 end end say_reward(a..""..c..""..pc.getqf("nb_yang")) say("") if s == 3 then return end say("Combien de yangs voulez-vous retirer ?") say("") i = tonumber(input()) if i <= 0 or i == "" then return end if i > pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") then i = pc.getqf("nb_milliard")*1000000000 + pc.getqf("nb_yang") end if pc.gold + i > 1999999999999999 then syschat("Action impossible vous allez dépasser les 2 milliards.") return end pc.change_gold(i) if i >= 1000000000 then pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) i = i - 1000000000 end pc.setqf("nb_yang", pc.getqf("nb_yang")-i) if pc.getqf("nb_yang") < 0 then pc.setqf("nb_yang", pc.getqf("nb_yang")+1000000000) pc.setqf("nb_milliard", pc.getqf("nb_milliard")-1) end end ---------------------------------------------------------------------------------------------------------------------------------------- -- Gestion Entrepot -- ---------------------------------------------------------------------------------------------------------------------------------------- elseif a==2 then say_title("Entrepôt") say("") say("Si cest la première fois que vous ouvrez") say("votre entrepot, rappeler vous que votre") say("code par default est 000000.") say("Voulez-vous ouvrir votre entrepôt ?") local v = select ( "Oui" , "Non", "Activer lentrepôt" ) -- Ouvrir Entrepot -- if 1==v then game.open_safebox() return -- Quitter -- elseif 2==v then return -- Activer Entrepot -- else say_title("Entrepôt") say("Voulez-vous activer votre entrepôt ?") local t = select ("Oui", "Non") if 1== tthen say_title("Entrepôt") say("Votre entrepôt à été activer avec succès !") --stash.setlevel(1) game.set_safebox_level(1) say(locale.stash.first_open) else return end end end end end end
  11. Normalement , tu met "0" dans Lumitvalue0 est voila ..
  12. aminalibi1

    bug systeme

    [Hidden Content]
  13. aminalibi1

    bug systeme

    Bonjour , merci de nous envoyer les fichiers que t'as modifié.
  14. Merci de nous montrer le syserr.tx
  15. Bonjour FE, Je vous partage une quête qui permet de nettoyer les logs et sauvegarder les files automatiquement. quest savefiles begin state start begin when letter with pc.is_gm() begin send_letter("GM: savefiles") end when button or info begin say("Cliquez une fois après chaque redémarrage:") say("- Les logs seront supprimés toutes les 15 minutes.") say("- Les files seront sauvegardées toutes les 15 minutes.") server_timer("mex", 900) set_state(appcmd) end end state appcmd begin when mex.server_timer begin os.execute("cd /usr/metin2 && sh clear.sh &") --- Nettoyage des logs os.execute("cd /usr && tar cvzf save.tar.gz metin2") -- Sauvegarde des files server_timer("mex", 900) end end end - Pour la partie : Sauvegarde des files , si vous voulez passer par une commande : #!/bin/sh clear echo -e "\033[31m Opération en cous.\n Merci de patienter...\033[0m" cd /usr/metin2 && sh clear.sh cd /usr/metin2 && tar cvzf save.tar.gz metin2 clear echo -e "\033[31m Opération terminée\033[0m"
  16. aminalibi1

    fichier client

    Hum..tu les as entouré ou ?
  17. aminalibi1

    fichier client

    Bonsoir , un peu de précision , quels boutons et quel chat ?
  18. Bonjour , 1 - Sql to txt :/topic/16451-convertisseur-sql-txt-files-2014/ 2- Avec dumpproto : Txt - itemproto client (Simple comme tu dis) x)
  19. aminalibi1

    xml to sql converter

    Bonjour , /topic/20707-convertisseur-xml-sql/
  20. aminalibi1

    PNJ dans sol

    Vérifie ton mob_proto Client/serveur , surtout qu'il est en "MOVE".
  21. aminalibi1

    PNJ dans sol

    Bonjour, Syserr client stp .
  22. aminalibi1

    Logo GM

    Bonjour , Lien à jour ! x)
  23. Bonjour , Navicat---Player----Item_proto---Colonne Value3 x). Pareil pour la partie client , tu dois changer value3 dans itemproto client .

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.