aslain.dev
0%
01 Hizmetler 02 Hakkımda 03 Projeler 04 Stack 05 Blog 06 İletişim
← Tüm makaleler Metin2

Guild War Metin2 : règles, arène et récompenses

Metin2 guild war est la mécanique PvP fondamentale où deux guildes se déclarent officiellement la guerre, accumulent un score de kills selon un ensemble de règles, et où le vainqueur remporte la cagnotte de mise et des points de classement. Bien configurée, elle offre à votre serveur une rivalité vivante et un objectif social à toute heure ; mal configurée, elle devient une fonctionnalité qui reste ouverte en permanence, qui peut être exploitée, ou qui ne se conclut jamais. Dans cet article, je détaille pas à pas les types de guerre, la déclaration et l'acceptation d'une guerre, les règles de score et de mise, les cartes de warp war et la configuration des récompenses pour la guilde gagnante.

Types de guild war

La plupart des sources Metin2 prennent en charge trois types de guerre, et celui que vous proposez façonne le caractère de votre serveur :

  • Guerre normale (guerre de score) : La guerre se déroule dans le monde ouvert. Partout où les membres des deux guildes s'entretuent, le kill compte pour le score. La première guilde à atteindre la limite de score prédéfinie gagne. C'est le plus simple à mettre en place, mais exposé à l'interférence de tiers en monde ouvert.
  • Warp war (arène / guerre sur invitation) : Les membres des deux guildes sont téléportés sur une carte de guerre séparée. Ils combattent dans une zone isolée sans interférence extérieure, ce qui en fait le type le plus équitable et le plus populaire.
  • Guerre de drapeaux (CTF) : Bâtie sur la capture de points symbole/drapeau sur la carte ; elle récompense le contrôle de zone plutôt que les kills purs. Moins utilisée, mais elle procure une sensation distincte.

Les trois partagent le même squelette : déclaration, acceptation, comptage du score et résultat. Elles ne diffèrent que par le lieu de la guerre et la façon dont le score est gagné.

Déclarer une guerre et le flux d'acceptation

Une guerre se lance depuis le menu de guilde en jeu. Le chef de guilde attaquant sélectionne la guilde cible, choisit le type de guerre et saisit le montant de la mise éventuelle. Le système envoie une invitation de guerre au chef de la guilde cible ; si l'autre chef accepte dans un délai imparti, la guerre commence, sinon la demande expire. Cette logique de « double validation » est importante car elle empêche d'imposer une guerre.

Pour que la déclaration soit valide, deux conditions sont généralement requises : les deux guildes doivent atteindre le nombre minimum de membres, et le chef doit disposer d'assez de yang pour couvrir le montant de la mise. Vous trouverez ces règles dans la configuration guild war de votre source ; le code concerné se trouve typiquement dans guild.cpp, guild_manager.cpp et, côté quête, questlua_guild.cpp.

Configurer les règles de score et de mise

Les règles fondamentales d'une guerre sont conservées dans une table de configuration avec une ligne distincte pour chaque type de guerre. Le nom varie selon la source mais la logique est la même : par type, vous définissez une limite de mise, un nombre minimum de membres et un score de victoire. Voici un exemple de table :

// pour chaque type : { score_victoire, min_membres, limite_mise }
const SGuildWarInfo c_aGuildWarInfo[GUILD_WAR_TYPE_MAX_NUM] =
{
    // NORMAL : 100 score, au moins  7 membres, mise max  5 000 000 yang
    { 100,  7,  5000000 },
    // WARP   : 100 score, au moins 10 membres, mise max 10 000 000 yang
    { 100, 10, 10000000 },
    // CTF    : 100 score, au moins 10 membres, mise max 10 000 000 yang
    { 100, 10, 10000000 },
};

Adaptez ces valeurs à la population de votre serveur. Sur un petit serveur, une exigence min_membres = 10 signifie qu'aucune guilde ne pourra jamais déclarer la guerre ; garder un minimum bas (disons 3 à 5) au lancement est donc plus réaliste. Testez aussi le score de victoire avec une guilde de test : 100 points peuvent prendre quelques minutes entre guildes actives, tandis qu'entre petites guildes cela peut s'éterniser.

L'arène : les cartes de warp war

Le cœur du warp war, ce sont les cartes de guerre dédiées où le combat se déroule. Ce sont des index de carte distincts, isolés du monde ouvert et alloués aux deux guildes uniquement pendant la durée de la guerre. La source maintient un pool de cartes de guerre afin que plusieurs guerres puissent se dérouler simultanément ; au lancement d'une guerre une carte libre est louée au pool puis rendue à la fin. Les étapes typiques sont :

  • Enregistrez les cartes de guerre dans la configuration CONFIG/atlas de votre serveur ; chaque carte doit être chargée avec son propre index et fermée aux joueurs ordinaires.
  • Téléportez les guildes vers deux points d'apparition distincts sur la carte ; laissez de la distance entre les spawns pour éviter un contact immédiat.
  • À la fin de la guerre, téléportez tous les joueurs à leur position d'origine et rendez la carte au pool.

Le nombre de guerres simultanées est limité par le nombre de cartes que vous définissez. Si vous ne réservez pas assez de cartes de guerre sur un serveur chargé, les guildes rencontrent une erreur « pas d'arène de guerre libre ». Documentez quels index de carte sont réservés à la guerre ; n'ajoutez pas ces cartes à la liste normale de portails/téléportation, sinon les joueurs peuvent s'infiltrer dans l'arène.

Récompenses et points de classement de guilde

La partie qui motive les joueurs, c'est le résultat. Il existe deux mécanismes de récompense fondamentaux :

  • Cagnotte de mise : Si les deux guildes misent le même montant, toute la cagnotte est transférée dans le stockage de la guilde gagnante. Cela ajoute un véritable sentiment de pari ; mais si vous fixez la limite de mise trop haut, une seule guerre peut ébranler l'économie.
  • Points de classement de guilde (ladder) : La guilde gagnante gagne des points de classement et la perdante en perd. Publier ce score sous forme de classement de guildes sur un site web donne du prestige aux guerres et rend la rivalité durable.

En plus, vous pouvez réagir au résultat de la guerre côté quête et distribuer des récompenses supplémentaires. L'exemple ci-dessous donne un coffre de récompense symbolique au chef de la guilde gagnante :

when button or info begin
    local gagnant = guild.get_guild_id()    -- guilde dans le contexte
    if gagnant == arg1 then                 -- arg1 : id de la guilde gagnante
        pc.give_item2(50300, 1)             -- coffre de récompense (vnum exemple)
        notice_all("Guild war remportée par "..guild.get_name().." !")
    end
end

Remplacez toujours le vnum de l'objet et les noms de fonction par les vraies valeurs de votre propre source ; le bloc ci-dessus ne montre que la logique. Gardez des récompenses modérées : si chaque guerre déverse des objets précieux, cela les dévalorise et pousse les joueurs à organiser de fausses guerres juste pour le butin.

Équilibrage et erreurs fréquentes

Une fois le système de guild war activé, les problèmes les plus fréquents viennent de la configuration :

  • Fausses guerres : Deux guildes appartenant à la même personne se déclarent sans cesse la guerre pour farmer des récompenses. Garder mises et récompenses basses, plus ajouter un contrôle même-IP/même-joueur, dissuade cela.
  • Minimum de membres trop élevé : Aucune guilde ne peut remplir la condition et le système reste inutilisé. Réglez-le selon votre population.
  • Interférence extérieure en monde ouvert : Dans une guerre normale, des guildes tierces peuvent s'immiscer et casser l'équilibre. Si vous voulez une compétition équitable, faites du warp war le mode par défaut.
  • Fuite de carte de guerre : Si des index de carte de guerre se retrouvent dans la liste de téléportation normale, les joueurs entrent dans l'arène. Gardez toujours ces cartes fermées.
  • Abus de score : Vous pouvez limiter le farm de score en tuant le même joueur encore et encore avec un court délai (cooldown) entre les kills.

Après chaque modification, menez une guerre complète de bout en bout avec deux guildes de test : déclaration, acceptation, téléportation, comptage du score, résultat et récompense. Passer en production sans ce test de bout en bout est la cause commune de la plupart des pannes de guild war.

Questions fréquentes

Je déclare une guild war mais elle ne démarre pas, pourquoi ?

Il y a généralement deux raisons : soit l'une des guildes n'atteint pas le nombre minimum de membres, soit le chef de la guilde cible n'a pas accepté l'invitation avant son expiration. Baissez la valeur min_membres dans la table de configuration, réessayez, et assurez-vous que la fenêtre d'acceptation s'ouvre réellement.

En warp war nous ne sommes pas téléportés sur la carte, quel est le problème ?

En général, les cartes de guerre ne sont pas chargées correctement dans la configuration du serveur, ou il ne reste plus de carte de guerre réservée. Vérifiez que les index de carte de guerre sont définis dans votre fichier atlas/CONFIG et que vous avez réservé assez de cartes pour le nombre de guerres simultanées.

La guilde gagnante ne reçoit pas la mise, comment corriger ?

Le transfert de la mise est lié au code qui traite le résultat de la guerre ; vérifiez que la limite de mise est correctement définie et que la condition de victoire (atteindre la limite de score) est bien déclenchée. Si la guerre se termine sur le temps avant que la limite de score soit atteinte, certaines sources considèrent le résultat comme un match nul et remboursent la cagnotte.

Vous voulez mettre en place un système de guild war équitable et stable sur votre serveur ? Nous pouvons travailler ensemble sur les cartes de warp war, l'équilibre score/mise et l'intégration des points de classement. Pour parler de votre projet, contactez-moi.

Bu kategorideki tüm yazılar →

Devamı için