Un système de boss Metin2 solide définit le contenu le plus joué d'un serveur privé : les joueurs savent quand un grandboss va apparaître, se rassemblent sur la carte à cette heure et se disputent les drops rares. Mais derrière cette expérience, trois fichiers distincts doivent fonctionner en harmonie — le regen.txt ou le quest Lua qui déclenche le spawn, le mob_drop_item.txt qui définit les drops, et les messages d'annonce qui alertent les joueurs. Dans ce guide, je détaille pas à pas la configuration des timers de spawn, de la table de drop et des annonces.
La différence entre un boss et un grandboss
Techniquement, les deux ne sont qu'une ligne de monstre dans mob_proto ; la différence tient au champ rang/type et à la logique de spawn. Un boss normal vit généralement en permanence sur une carte et réapparaît peu après sa mort. Un grandboss est une entité rare et puissante qui apparaît souvent selon un horaire — par exemple à heures fixes chaque jour ou lorsqu'une condition est remplie.
- Boss : défini dans
regen.txtavec une position fixe et un timer de réapparition. Le cœur du serveur gère le reste automatiquement. - Grandboss : généralement invoqué par un quest, piloté par un timer ou un event flag, avec une annonce à tout le serveur dès son apparition.
Clarifier cette distinction d'emblée vous indique quel outil employer. Gérer un boss en patrouille constante avec un quest ajoute une complexité inutile ; à l'inverse, vouloir construire un grandboss programmé avec le seul regen.txt vous prive d'un contrôle souple.
Régler les spawns de boss avec regen.txt
Chaque carte possède son propre fichier regen.txt dans son dossier (par exemple map_a1/regen.txt). Pour faire apparaître un boss en permanence, il suffit d'ajouter une seule ligne. L'ordre des colonnes est :
# type agressif x y x_portee y_portee z dir temps pourcent nombre vnum
m 1 512 480 0 0 0 0 30m 100 1 2492
Signification des champs :
m: un seul monstre (utilisezgpour un groupe,rpour un groupe de regen).- agressif :
1signifie qu'il attaque à vue,0qu'il est passif. - x / y : les coordonnées locales de la carte (par rapport au coin supérieur gauche).
- temps : délai de réapparition après la mort — écrit
5s,10m,1h. - vnum : l'identifiant du monstre dans
mob_proto.
Après avoir enregistré le fichier, vous devez soit redémarrer le serveur, soit rafraîchir les données avec une commande GM comme /reload pour que le changement prenne effet. Le moyen le plus simple de trouver les bonnes coordonnées est de se connecter, de se placer sur l'emplacement cible et de lire les x/y locaux avec une commande GM telle que /where.
Spawns de grandboss programmés avec quest Lua
Pour un grandboss programmé, nous utilisons le système de quêtes. L'outil central est la fonction game.spawn_mob(vnum, x, y), qui fait apparaître un monstre à la coordonnée locale indiquée sur la carte où elle est appelée. L'exemple ci-dessous construit un squelette simple qui surveille la mort du boss et l'annonce :
quest grandboss begin
state start begin
function spawn_meley()
local x, y = 1023, 875
game.spawn_mob(2493, x, y)
notice_all("[Grandboss] Meley Lady est apparue sur la carte !")
end
when 2493.kill begin
notice_all("Le grandboss a ete vaincu ! Preparez-vous au prochain spawn.")
server_timer("meley_respawn", 6 * 60 * 60) -- dans 6 heures
end
when meley_respawn.server_timer begin
grandboss.spawn_meley()
end
end
end
Ici, le bloc when 2493.kill se déclenche lorsque le monstre de vnum 2493 est tué. server_timer lance un compte à rebours à l'échelle du serveur, non lié à un joueur — c'est le cœur du timing d'un grandboss, car le boss doit apparaître même si personne n'est connecté. Si vous voulez un spawn à l'horloge réelle (par exemple chaque jour à 21h00), vous pouvez vérifier l'heure avec os.date dans un déclencheur de connexion et utiliser un event flag :
when login begin
local heure = tonumber(os.date("%H"))
if heure == 21 and game.get_event_flag("meley_aujourdhui") == 0 then
game.set_event_flag("meley_aujourdhui", 1)
grandboss.spawn_meley()
end
end
Cette méthode est simple et lisible ; sur des serveurs plus grands et plus robustes, on préfère un quest « boss timer » distinct qui gère le spawn depuis un point unique, afin que le même boss n'apparaisse jamais deux fois.
Configuration des drops : mob_drop_item.txt
Les drops de boss sont en grande partie gérés par des groupes dans mob_drop_item.txt. Chaque groupe est lié à un vnum Mob, et chaque ligne définit un objet, sa quantité et sa chance de drop (en pourcentage, pas en pour mille) :
Group GrandbossMeley
{
Mob 2493
Type drop
1 71001 1 30.000000
2 72003 5 15.000000
3 50300 1 2.500000
}
Les lignes se lisent : index item_vnum quantite chance. Le champ Type contrôle le comportement du drop :
- drop : chaque ligne est tirée indépendamment selon sa chance ; un boss peut lâcher plusieurs objets.
- kill : un seul objet est choisi dans le groupe ; adapté à une logique de pool de butin.
- limit / level_limit : utilisé pour des drops liés à une tranche de niveau.
En fixant les chances, tenez compte du nombre de joueurs et du taux du serveur : sur un serveur à taux élevé, un objet rare à 30 % provoque vite de l'inflation. Garder les objets rares bas (disons 1 à 3 %) et les drops fréquents raisonnables maintient une économie saine. Après modification du fichier, appliquez le changement avec une commande GM comme /reload d ou un redémarrage du serveur.
Messages d'annonce de spawn et de drop
Un bon système de boss tient les joueurs informés. Les deux fonctions les plus utilisées sont :
notice_all("..."): envoie un message d'info jaune à chaque joueur du serveur — idéal pour un spawn de grandboss.notice("..."): envoie un message uniquement au joueur qui a déclenché le quest.
Une fonctionnalité très appréciée consiste à annoncer au serveur la chute d'un objet rare. Vous pouvez la construire dans un quest de drop en vérifiant l'objet lâché :
when kill with npc.is_pc() == false begin
if npc.get_race() == 2493 then
local joueur = pc.get_name()
notice_all(string.format("%s a recupere un objet legendaire sur Meley Lady !", joueur))
end
end
Ce type d'annonce renforce le sentiment « je devrais y être aussi » et augmente l'affluence aux heures de boss. N'en abusez pas pour autant — si vous annoncez chaque drop ordinaire, les messages deviennent du bruit et perdent leur impact.
Tester et erreurs fréquentes
Avant la mise en ligne, testez avec les commandes GM : /mob 2493 fait apparaître le boss devant vous, /notice test essaie une annonce. Les problèmes les plus fréquents :
- Mauvaise coordonnée :
regen.txtattend la coordonnée locale de la carte, pas la globale. Si le boss n'apparaît pas, c'est presque toujours la cause. - vnum incohérent :
mob_proto,regen.txtetmob_drop_item.txtdoivent utiliser le même vnum. Une erreur d'un seul chiffre laisse le boss « sans drop ». - Oublier le reload : enregistrer les fichiers ne suffit pas ; les données doivent être rechargées dans le cœur. Dans le doute, redémarrez le serveur.
- Vérifier syserr : les erreurs de quest atterrissent dans les journaux
syserr. Si un grandboss refuse d'apparaître, c'est le premier endroit à regarder.
Tant que vous gardez ces trois fichiers (spawn, drop, annonce) cohérents, vous aurez bâti un contenu de boss scalable que les joueurs attendent avec impatience.
Questions fréquentes
Le grandboss apparaît-il quand personne n'est connecté ?
Si vous utilisez server_timer ou un mécanisme à l'horloge réelle, oui — le spawn est indépendant des joueurs. Cependant, la carte doit être chargée par le cœur au moment où game.spawn_mob est appelée ; sur la plupart des serveurs, les cartes principales sont toujours chargées, donc ce n'est pas un problème.
J'écris les chances de drop en pour mille ou en pourcentage ?
Dans mob_drop_item.txt, la chance s'écrit en pourcentage (30.000000 = 30 %). Avec des décimales, vous pouvez définir de très petites chances (0.100000 = 0,1 %). D'autres fichiers comme common_drop_item.txt peuvent utiliser un format différent, ne les confondez pas.
Pourquoi le même boss apparaît-il deux fois ?
Le plus souvent, regen.txt et un quest font apparaître le même boss, ou l'event flag n'est pas réinitialisé correctement. Gérez un grandboss programmé depuis une seule source et assurez-vous de réinitialiser le flag avant la réapparition.
Vous voulez un système de boss et de grandboss équilibré pour votre serveur ? Nous pouvons mettre en place le timing des spawns, l'économie des drops et le flux d'annonces de façon à fidéliser vos joueurs. Pour discuter de votre projet, contactez-moi.