Aller au contenu principal

MMOItems

Donnez, comptez et suivez des objets MMOItems dans les quêtes, avec des infobulles d'objets dynamiques paginées.

Payantesv2.4RPG et progression

Vue d'ensemble​

MMOItems connecte le plugin MMOItems à TypeWriter. Vous choisissez un objet par son type MMOItems (par exemple SWORD) et son id, et TypeWriter peut le donner, le retirer, le compter, ou réagir lorsqu'un joueur le fabrique, l'utilise, l'équipe ou y sertit une gemme.

L'extension fournit aussi un Advanced Tooltip System. Il réécrit à la volée le lore des objets MMOItems, sous forme de paquets envoyés au joueur : un même objet peut ainsi afficher plusieurs pages, une marque « prérequis remplis » en direct et une comparaison de statistiques avec un autre objet. L'objet stocké n'est jamais modifié.

Tout se configure dans le panel web : les types et identifiants d'objets sont suggérés à partir de votre configuration MMOItems.

Fonctionnalités​

  • Donner et retirer des objets — distribuez ou retirez des objets MMOItems, pour un joueur ou un groupe entier, à partir d'une liste ou d'un fact.
  • Comptage d'objets — un fact compte les objets correspondants dans l'inventaire (armure, seconde main et curseur compris) et/ou la main principale.
  • Événement et objectif d'utilisation — réagissez au clic droit ou à la consommation d'un objet MMOItems.
  • Événement et objectif de fabrication — réagissez aux objets fabriqués dans une station de fabrication MMOItems, avec un filtre de station facultatif.
  • Événement et objectif de gemme — réagissez à une gemme appliquée à un objet, filtrée par objet cible et gemme.
  • Objectif d'équipement — comptez les pièces MMOItems enfilées dans un emplacement d'armure.
  • Objectif de lancement de capacité — comptez les lancements d'une capacité MMOItems.
  • Objectif de possession d'objets — se termine lorsque le joueur détient assez d'objets sélectionnés, avec des modifiers de complétion.
  • Variable d'objet — utilisez un objet MMOItems partout où un objet est attendu.
  • Infobulles avancées — lore multipage, marques de prérequis, comparaison de statistiques et icônes de catégorie.

Installation​

  1. Installez MMOItems et sa bibliothèque MythicLib. Installez aussi MMOCore si vous voulez que les marques de prérequis du système d'infobulles vérifient la classe, le niveau et les métiers.
  2. Installez l'extension officielle TypeWriter Quest (les objectifs en ont besoin).
  3. Obtenez l'extension depuis les boutiques (voir les boutons du panneau de résumé ci-dessus) et placez le JAR dans plugins/Typewriter/extensions/.
  4. Redémarrez le serveur. TypeWriter 0.9 s'appuie sur PacketEvents, que le système d'infobulles utilise pour réécrire le lore des objets.

Premiers pas​

Récompensez les joueurs avec une épée lorsqu'ils fabriquent une potion dans une station d'alchimie :

  1. Dans le panel web TypeWriter, ouvrez une page sequence et ajoutez une action Give MMOItem.
  2. Laissez items vide. Définissez item avec un type (par exemple SWORD) et un id (par exemple STEEL_BLADE), et amount sur 1.
  3. Ouvrez une page static et ajoutez un Craft Objective. Renseignez quest, display, amount, et un fact persistant dans fact pour stocker la progression.
  4. Dans items, ajoutez l'objet MMOItems fabriqué (vide signifie n'importe quel objet) et, si nécessaire, stationIds avec l'identifiant de station MMOItems.
  5. Définissez onComplete sur l'action Give MMOItem et publiez.

Pour ne réagir qu'une fois sans suivre la progression, utilisez plutôt le Craft Event et reliez l'action Give dans ses triggers.

Mode Créatif

Les événements et les infobulles ignorent les joueurs en mode Créatif. Testez avec un joueur en mode Survie ou Aventure.

Fonctionnement​

La correspondance des objets compare le type et l'id MMOItems, sans tenir compte de la casse. Un type et un id vides correspondent à n'importe quel objet MMOItems. Les objets qui ne sont pas des objets MMOItems ne correspondent jamais.

Les objectifs basés sur le champ fact (fabrication, utilisation, équipement, gemme, lancement de capacité, ouverture de l'établi) écrivent leur progression dans un fact persistant (cachable), et déclenchent onComplete une fois lorsque amount est atteint.

Infobulles avancées​

Ajoutez une entrée Advanced Tooltip System sur une page manifest et publiez. Elle s'applique à chaque objet MMOItems de l'inventaire, de la barre d'accès rapide et des conteneurs, pour tous les joueurs hors mode Créatif.

Survie et aventure uniquement

La pagination et le lore avancé ne s'appliquent qu'en survie et en aventure. En créatif, le lore d'origine de MMOItems est affiché tel quel, balises comprises, car le client créatif renvoie les objets tels qu'il les affiche et réécrire le lore altérerait l'objet réel.

Si le système est désactivé, si overrideDefaultLore est désactivé ou si aucune entrée n'est publiée, les balises sont retirées et tout le lore reste sur une seule page.

Modifiez le lore de vos objets MMOItems (dans l'éditeur d'objets MMOItems ou sa configuration) et ajoutez ces balises :

BaliseEffet
<page_break>Commence une nouvelle page. Les pages vides sont supprimées.
<category_image>Remplacée par l'icône définie dans categoryImages pour le type d'objet.
<pagination_indicator>Remplacée par paginationIndicator.
<comparison_indicator>Remplacée par comparisonIndicator.
<requirement_met> et <requirement_not_met>Une seule des deux s'affiche, en utilisant requirementMetSymbol ou requirementNotMetSymbol.
<comparison_value> et <comparison_sign>La différence de statistique avec l'objet de référence de la comparaison, et un + lorsqu'elle est positive.

Les pages et la comparaison sont pilotées par des touches, définies avec paginationKeybind (SWAP_OFFHAND par défaut, la touche F) et comparisonKeybind (SNEAK par défaut). Les valeurs acceptées sont SWAP_OFFHAND, DROP, SNEAK, SHIFT_LEFT, SHIFT_RIGHT, LEFT_CLICK, RIGHT_CLICK et MIDDLE_CLICK.

  • Appuyer sur la touche de pagination sur un objet MMOItems annule toujours l'action vanilla (échange, lâcher, clic) pour éviter les accidents, même pour les objets d'une seule page. Les pages reviennent à la page 1 après la dernière, avec un court délai entre deux appuis.
  • Appuyer sur la touche de comparaison sur un objet le définit comme référence de comparaison. Appuyer à nouveau sur le même objet l'efface. Seuls les objets du même type MMOItems sont comparés, et la référence est effacée à la fermeture de l'inventaire.
  • Les prérequis sont vérifiés à partir des données MMOCore : niveau, classe, niveau de métier et permission. Si un prérequis échoue, chaque <requirement_not_met> s'affiche.

Format d'affichage des objectifs​

La ligne d'un objectif dans le suivi de quêtes n'est pas figée dans le code. Elle est lue depuis des snippets TypeWriter, modifiés dans plugins/Typewriter/snippets.yml. Placeholders : <display> (le champ display de l'objectif), <current> et <required> ; les placeholders PlaceholderAPI sont aussi interprétés.

SnippetUtilisé parPar défaut
advancedQuest.displayObjectifs Craft, Use, Equip, Gem Stone, Ability Cast et Open Crafting Table, tant qu'ils sont en cours<display> (<current>/<required>), dans des tons de gris
advancedQuest.completedLes mêmes objectifs, une fois amount atteint✔, puis le <display> barré et la progression
mmoitems.countObjective.displayMmoitems Count Objective, tant qu'il est en cours<display> (<current>/<required>), dans des tons de gris
mmoitems.countObjective.completedLe même objectif, une fois amount atteint<display> barré en vert, puis la progression

Les deux clés advancedQuest.* sont partagées avec les autres extensions d'objectifs BTC : une seule modification restyle toutes ces extensions.

Entrées​

16 entrées, générées depuis la source de l'extension.

Actions3
Événements3
Objectifs7
Faits1
Variables1
Manifestes1

Dépannage​

La liste des types ou identifiants d'objets est vide dans le panel. Les listes proviennent de la configuration MMOItems du serveur en cours d'exécution. Assurez-vous que MMOItems est chargé et possède au moins un modèle de ce type, puis rouvrez la page dans le panel.

Give MMOItem ne fait rien. L'action exécute mmoitems give <type> <id> <player> <amount> depuis la console. Un type inconnu ignore l'objet silencieusement : vérifiez donc l'orthographe du type. Si fact est défini, seuls les objets fournis par ce fact (et correspondant à item / items lorsqu'ils sont renseignés) sont donnés, avec le amount de l'action.

Remove MMOItem ne retire rien. Par défaut, seul l'inventaire est analysé (checkInventory est activé, checkHand est désactivé). L'analyse de l'inventaire inclut l'armure, la seconde main et le curseur. Activez checkHand pour retirer d'abord de la main principale.

Un objectif de fabrication n'avance jamais. Par défaut, seules les recettes instantanées et la file de fabrication sont comptées. detectUpgradeRecipe existe mais les résultats d'amélioration ne sont jamais comptés par le code actuel. Vérifiez aussi l'identifiant de station (stationIds, fusionné avec l'ancien stationId) et qu'un fact persistant est relié dans fact.

Les événements et objectifs ne se déclenchent pas en Créatif. Les événements d'utilisation, de fabrication et de gemme se terminent immédiatement pour les joueurs en mode Créatif, et le système d'infobulles leur est désactivé. Testez en Survie.

Les balises du tooltip s'affichent en texte, ou les pages ne changent pas. Vérifiez d'abord que le joueur n'est pas en créatif, où le lore est laissé tel quel. Les pages ne changent que si une entrée Advanced Tooltip System est publiée avec isEnabled et overrideDefaultLore activés ; sinon les balises sont retirées et le lore reste sur une seule page. Si la touche F par défaut entre en conflit avec un autre plugin, choisissez une autre touche dans paginationKeybind.

Les marques de prérequis s'affichent toujours comme remplies. La vérification lit les données de joueur MMOCore. Sans MMOCore (ou pour un joueur sans profil), la vérification se rabat sur « remplie ».

Extensions associées​

  • MMOCore — classes, métiers et compétences de la même suite RPG de Phoenix Development.
  • MMO Inventory — intégration de MMOInventory, utilisable comme fact fournisseur d'objets pour les actions Give et Remove.