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

Système de pets Metin2 : guide d'ajout de familiers

Le système de pets Metin2 est la manière de gérer les familiers qui suivent votre personnage, lui accordent des bonus passifs et peuvent même monter de niveau. Sur les serveurs classiques, un pet est purement cosmétique, alors qu'un système de pets moderne apporte le nourrissage, les niveaux, les bonus et parfois des compétences. Dans ce guide, j'explique comment le système fonctionne, d'où viennent les bonus, la mécanique de nourrissage, et les étapes précises pour ajouter un tout nouveau modèle de pet à votre serveur.

Comment fonctionne le système de pets

Dans Metin2, un pet est en pratique une entrée mob spéciale. Le personnage active le pet depuis un objet d'invocation de l'inventaire (un œuf, un sifflet ou un collier) ; c'est un objet de type USE, et son utilisation fait apparaître une entité temporaire liée au joueur. Le pet n'est pas créé comme un ennemi au sol, mais comme un PNJ qui suit son propriétaire.

  • Objet d'invocation — défini dans item_proto, généralement avec type = USE et un sous-type du genre USE_PET.
  • Modèle de pet — correspond à un vnum dans mob_proto ; son visuel provient d'un fichier modèle .gr2 côté client.
  • Comportement — le code d'apparition verrouille le pet sur son propriétaire ; il n'attaque pas, il reste simplement à proximité (sauf pour les variantes de pet de combat).

Les systèmes de pets plus récents (l'extension communément appelée « pet system ») ajoutent par-dessus cette structure de base des niveaux, une barre de faim, une durée et des bonus. Ces couches sont surtout pilotées par le moteur de quêtes (Lua) et quelques tables supplémentaires.

D'où viennent les bonus de pet

Les bonus de pet sont des augmentations temporaires de statistiques appliquées au joueur qui porte le pet. Vous pouvez les brancher de deux façons principales :

  • Bonus d'objet — définir les bonus directement sur l'objet d'invocation via item_proto (par exemple APPLY_MAX_HP, APPLY_ATT_SPEED). Ils s'appliquent tant que le pet est actif.
  • Bonus basés sur les quêtes — si vous voulez des bonus qui évoluent avec le niveau du pet, les ajouter depuis une quête Lua via des appels comme apply_bonus est bien plus flexible.

L'exemple ci-dessous est une logique de quête simplifiée qui accorde au joueur un bonus d'attaque selon le niveau du pet lorsqu'il est invoqué :

quest pet_bonus begin
    state start begin
        when 53001.use begin
            local lvl = pc.getqf("pet_level")
            -- +5 valeur d'attaque par niveau
            apply.apply("ATT_GRADE_BONUS", lvl * 5, 60 * 30)
            chat("Ton pet te renforce !")
        end
    end
end

Le point clé : liez la durée du bonus à celle du pet et réappliquez le bonus de manière cohérente lors de l'invocation ou du rappel du pet. Sinon, un joueur peut l'exploiter en réinvoquant le pet en boucle.

La mécanique de nourrissage

Le nourrissage est la partie du système de pets qui occupe le joueur. La logique est la suivante : le pet a une valeur de faim/satiété qui décroît avec le temps, et le joueur la recharge avec un objet spécial de nourriture pour pet. Si la satiété tombe à zéro, le pet cesse de donner des bonus ou disparaît.

  • Stockez la valeur de satiété dans un flag de quête sur le joueur : pc.setqf("pet_food", 100).
  • Faites décroître la valeur régulièrement avec un minuteur (quête when … with timer).
  • Quand l'objet de nourriture est utilisé, augmentez la valeur et empêchez-la de dépasser le plafond (par ex. 100).
quest pet_feed begin
    state start begin
        when 53010.use begin
            local food = pc.getqf("pet_food")
            food = math.min(food + 25, 100)
            pc.setqf("pet_food", food)
            item.remove()
            chat("Satiete du pet : "..food.."/100")
        end
    end
end

Vous pouvez combiner le nourrissage avec le système de niveaux : à mesure que le pet est nourri, il gagne une petite valeur pet_exp, monte de niveau à certains seuils et ses bonus grandissent. Cette boucle incite le joueur à s'occuper régulièrement du pet.

Étapes pour ajouter un nouveau modèle de pet

Ajouter un pet visuellement nouveau à votre serveur nécessite des fichiers côté client et côté serveur. L'ordre est le suivant :

  • 1. Fichiers de modèle : placez les fichiers de modèle .gr2 et d'animation du nouveau pet, ainsi que les fichiers de texture (.dds), dans le dossier pack approprié du client.
  • 2. Entrée mob_proto : ajoutez le pet à mob_proto sous un nouveau vnum, en type PNJ/pet, avec ses valeurs de vitesse et de taille. Le serveur doit lire correctement cette entrée.
  • 3. Définition client : faites correspondre le mob_proto côté client (ou la définition .txt) et le chemin du modèle ; le lien entre le vnum et le fichier .gr2 doit être correct.
  • 4. Objet d'invocation : créez une nouvelle entrée item_proto et liez-la, à l'utilisation, à la quête ou au code qui invoque le pet portant ce nouveau vnum.
  • 5. Localisation : ajoutez le nom/la description du pet et de l'objet dans les fichiers locale.

Lors des tests, procédez étape par étape : d'abord, l'objet apparaît-il dans l'inventaire ; ensuite, le pet apparaît-il à l'utilisation ; puis, le modèle et l'animation sont-ils corrects ; et enfin, la boucle bonus/nourrissage fonctionne-t-elle. Isoler chaque étape facilite énormément le débogage.

Erreurs fréquentes

  • Pet invisible : le vnum existe sur le serveur mais le chemin du modèle ne correspond pas côté client — il apparaît mais reste invisible. mob_proto doit être cohérent des deux côtés.
  • Bonus permanent : le bonus n'est pas effacé au rappel du pet. Liez la durée à la vie du pet et réinitialisez le bonus au rappel.
  • Incompatibilité de proto : les versions item_proto/mob_proto du client et du serveur diffèrent ; cela se manifeste par un « objet inconnu » ou un plantage. Distribuez toujours le même proto des deux côtés.

Questions fréquentes

Un pet peut-il blesser le personnage ou attaquer ?

Un pet standard ne fait que suivre son propriétaire et n'attaque pas. Si vous voulez un « pet de combat », vous devez définir un comportement distinct (IA de mob) et coder le pet pour qu'il attaque les ennemis ; c'est une tâche de développement différente du pet de suivi classique.

Le pet disparaît-il si je ne le nourris pas ?

Cela dépend entièrement de la conception de votre système. Une approche courante est que le pet cesse de donner des bonus une fois la satiété à zéro ; sur certains serveurs, le pet est complètement rappelé. Vous définissez la logique dans la quête Lua.

Un système de niveau de pet est-il obligatoire ?

Non. Pour un pet purement cosmétique, un objet d'invocation et un modèle suffisent. Les couches de niveaux, de nourrissage et de bonus sont des fonctionnalités optionnelles ajoutées pour augmenter l'engagement des joueurs.

Vous voulez un système de pets solide et à l'épreuve des exploits pour votre serveur ? Je peux construire et tester tout le flux — ajout d'un modèle de pet, mécanique de nourrissage et bonus — de bout en bout. Contactez-moi pour parler de votre projet.

Devamı için