Ce qui maintient un serveur Metin2 en vie, ce ne sont pas ses cartes, ce sont les quêtes. Apprendre la création de quêtes Metin2, c'est apprendre le cœur du système qui dit aux joueurs quoi faire, les récompense et fait avancer l'histoire. Bonne nouvelle : le système de quêtes de Metin2 est un mini-langage basé sur Lua, étonnamment facile à apprendre. Dans ce guide, j'écris une quête de zéro avec la structure que j'utilise sur mon serveur, Runa2.
Comment fonctionne un fichier de quête ?
Chaque quête repose sur trois blocs principaux, et chaque begin doit avoir un end :
- quest — la quête elle-même (un nom unique).
- state — l'étape de la quête.
startest toujours l'étape de départ ; on passe aux autres avecset_state(). - when — un déclencheur d'événement comme
login,levelup,kill, ou un PNJ.click/.chat.
L'ordre d'imbrication est toujours quest → state → when.
Votre première quête : parler à un PNJ et obtenir une récompense
L'exemple ci-dessous est une quête complète, donnée en cliquant sur un PNJ, qui demande confirmation au joueur et accorde un objet, de l'expérience et de l'or une fois terminée :
quest welcome begin
state start begin
when 20095.chat."Start the quest" begin
say_title("Villager:")
say("Welcome, adventurer!")
say("Will you help me?")
local answer = select("Sure", "Not now")
if answer == 2 then
return
end
pc.setqf("welcome_step", 1)
set_state(active)
end
end
state active begin
when 20095.chat."Finish the quest" begin
if pc.getqf("welcome_step") == 1 then
say("Thank you! Here is your reward.")
pc.give_item2(27003, 5) -- example item vnum
pc.give_exp2(10000)
pc.change_gold(50000)
set_state(done)
end
end
end
state done begin
when 20095.chat."Finish the quest" begin
say("You have already finished this quest.")
end
end
end
Quelques détails : le texte entre guillemets "Start the quest" est l'option de menu affichée au joueur — écrivez-le dans votre langue. select() renvoie l'indice de l'option choisie (1, 2…). pc.give_item2(vnum, quantité) donne un objet ; 27003 n'est qu'un vnum d'exemple.
Les flags de quête : enregistrer la progression
On enregistre l'étape d'une quête avec des flags de quête. pc.setqf("nom", valeur) écrit un flag et pc.getqf("nom") le lit. Ces flags sont propres à chaque joueur et persistants. Par exemple, une quête « tuer 10 loups » :
when 101.kill begin
local count = pc.getqf("wolf_count") + 1
pc.setqf("wolf_count", count)
if count >= 10 then
say("You killed 10 wolves!")
pc.give_exp2(50000)
set_state(done)
end
end
Ici, 101 est le vnum du loup. Chaque mise à mort incrémente le compteur ; à 10, la récompense est donnée et la quête passe à l'étape done.
Déclencheurs courants
when login begin— à la connexion du joueur.when levelup begin— à la montée de niveau (lisez le niveau avecpc.get_level()).when <vnum>.kill begin— quand un monstre précis est tué.when <vnum>.click/.chat."Texte"— au clic sur un PNJ ou à l'ouverture d'un menu.
Compiler et déployer la quête
Votre fichier .quest ne s'exécute pas directement ; il doit d'abord être compilé avec le compilateur qc. Le flux typique : placez le fichier dans le dossier quest du serveur, ajoutez-le à la liste des quêtes et compilez (généralement make appelle qc). Puis rechargez en jeu avec /reload q ou redémarrez le cœur. En cas d'erreur de syntaxe, qc indique le numéro de ligne — compiler après chaque petite modification est donc une bonne habitude.
Conseils de débogage
- Ajoutez des lignes temporaires
say("arrivé ici")pour suivre le flux. - S'il manque un
end,qcvous avertit à la compilation ; indentez vos blocs imbriqués pour vous y retrouver. - Gardez des noms de flags uniques ; réutiliser le même nom entre quêtes casse la progression.
Questions fréquentes
Faut-il connaître Lua pour écrire des quêtes ?
Pas besoin d'être un expert Lua. Connaître les bases — if, variables et appels de fonction — combiné aux fonctions intégrées du système (say, select, pc.give_item2…) suffit largement.
Dois-je arrêter le serveur pour modifier une quête ?
Non. Le plus souvent, vous compilez avec qc et rechargez instantanément avec la commande en jeu /reload q.
Combien d'états une quête peut-elle avoir ?
Pas de limite pratique. Les quêtes simples se terminent en 2–3 états ; pour de longues chaînes, ajoutez autant d'étapes que nécessaire.
Vous voulez un système de quêtes sur mesure ? Du battle pass aux quêtes journalières, je peux créer des systèmes de quêtes en Lua — contactez-moi.