Aller au contenu principal

Création de Quêtes

webapp_banner.jpg

Exemple de Quête

EliteMobs est livré avec un fichier test_quest.yml, qui sera analysé ici comme un format de quête simple à suivre.

Les Quêtes Personnalisées se trouvent dans le dossier ~plugins/EliteMobs/customquests !

test_quest.yml

isEnabled: true
customObjectives:
Objective1:
amount: '1'
filename: test_boss.yml
objectiveType: KILL_CUSTOM
customRewards:
- filename=magmaguys_toothpick.yml:amount=1:chance=1
name: "&aKill the Test Boss"
questLore:
- "&cEnd the test boss'' reign of terror!"

create_quest_quest.jpg

Si votre interface de quête ne ressemble pas à cela, vous pouvez la modifier pour qu'elle corresponde en utilisant /em alt.

Cet exemple de quête donnera aux joueurs la tâche de tuer 1 test_boss.yml. (Le nom réel du boss affiché dans le suivi de quête sera le name: défini dans test_boss.yml.) Et comme récompense pour avoir complété la quête, ils recevront 1 Magmaguy's Toothpick.

Création de Quêtes Personnalisées

customObjectives

Définit les objectifs de la quête.

CléValeursDéfaut
customObjectivesSpecial [1]aucun

Note : Si vous utilisez un boss multiphase comme objectif, l'objectif doit utiliser la première phase comme cible.

Exemples

KILL_CUSTOM:

customObjectives:
Objective1:
amount: '1'
filename: my_cool_boss.yml
objectiveType: KILL_CUSTOM

DIALOG:

customObjectives:
Objective1:
dialog:
- "&a[Dialog NPC] &fCome here often?"
- "&7&oI should eat more apples."
filename: dialog_npc.yml
npcName: Dialog NPC
location: at dialog location.
objectiveType: DIALOG

FETCH_ITEM:

customObjectives:
Objective1:
amount: '99'
itemName: Red Apples
filename: my_quest_item_red_apples.yml
objectiveType: FETCH_ITEM

ARENA:

customObjectives:
Objective1:
objectiveType: ARENA
filename: my_arena.yml
name: "Complete the Arena"

create_quest_objective.jpg

Special [1]

Développer le Tableau

Les Objectifs Personnalisés sont construits en utilisant les valeurs suivantes :

CléDescription
KILL_CUSTOM / FETCH_ITEM / DIALOG / ARENAUtilisé pour définir le type d'objectif que cela représente. KILL_CUSTOM indique que la quête implique de tuer un Boss Personnalisé spécifique, FETCH_ITEM indique que la quête implique d'obtenir un Objet Personnalisé spécifique, DIALOG indique que la quête implique de parler à un NPC, et ARENA indique que la quête implique de compléter une arène spécifique.
filenameUtilisé pour définir le nom de fichier du Boss Personnalisé, de l'Objet Personnalisé que le joueur doit tuer / obtenir, du NPC auquel il doit parler, ou de l'arène qu'il doit compléter.
amountUtilisé pour définir le nombre de Boss Personnalisés qui doivent être tués ou d'objets qui doivent être obtenus. Par défaut 1 si non spécifié.
dialogUtilisé pour définir le dialogue du NPC auquel le joueur parle.
nameUtilisé pour définir le nom de l'objectif de la quête, qu'il s'agisse d'un NPC, d'un objet personnalisé ou d'une arène. À des fins visuelles uniquement.
itemNameUtilisé uniquement avec FETCH_ITEM – Ce paramètre modifie la façon dont le nom de l'objet apparaît dans le suivi de quête. Il vous permet d'afficher un nom personnalisé différent du nom réel de l'objet dans le jeu.

Veuillez noter que chaque champ d'Objectif Personnalisé est séparé par un : !


customRewards

Définit les récompenses de la quête.

CléValeursDéfaut
customRewardsFormat de butin universel EliteMobsaucun
Exemple
customRewards:
- currencyAmount=50:amount=1:chance=0.05
- material=COOKED_COD:amount=3:chance=1.0
- filename=magmaguys_toothpick.yml:amount=1:chance=1.0

create_quest_rewards.jpg

Note : Si vous ne spécifiez pas customRewards, le système de quêtes générera automatiquement des récompenses basées sur le niveau de la quête. La qualité de la récompense évolue avec la difficulté de la quête et inclut à la fois de la monnaie et des objets. Pour un contrôle précis des récompenses, spécifiez toujours customRewards explicitement.


questAcceptPermission

Définit la permission que le joueur doit avoir pour accepter la quête.

CléValeursDéfaut
questAcceptPermissionStringaucun
Exemple
questAcceptPermission: elitequest.my_permission

Note : Si vous ne spécifiez pas customRewards, le système de quêtes générera automatiquement des récompenses basées sur le niveau de la quête. La qualité de la récompense évolue avec la difficulté de la quête et inclut à la fois de la monnaie et des objets. Pour un contrôle précis des récompenses, spécifiez toujours customRewards explicitement.


questAcceptPermissions

Définit les permissions que le joueur doit avoir pour accepter la quête.

CléValeursDéfaut
questAcceptPermissionsString Listaucun
Exemple
questAcceptPermissions:
- elitequest.my_previous_quest_one.yml
- elitequest.my_previous_quest_two.yml

questLockoutPermission

Définit la permission que le joueur recevra après avoir terminé la quête, ce qui l'empêchera de refaire la quête. Si non spécifiée, la permission de verrouillage de quête est automatiquement générée comme elitequest.[filename].

CléValeursDéfaut
questLockoutPermissionStringelitequest.[filename]
Exemple
questLockoutPermission: elitequest.my_quest.yml

questLockoutMinutes

Définit combien de temps, en minutes, le joueur devra attendre avant de pouvoir refaire la quête (fonctionne en supprimant la permission de verrouillage de quête).

CléValeursDéfaut
questLockoutMinutesInteger-1(ne se répétera jamais)
Exemple
questLockoutMinutes: 60

name

Définit le nom de la quête. Accepte les Color Codes.

CléValeursDéfaut
nameStringaucun
Exemple
name: "&aMy Great Quest Name"

questLore

Définit la description de la quête qui apparaîtra dans le menu de quête en jeu.

CléValeursDéfaut
questLoreString Listaucun
Exemple
questLore:
- "Interesting lore sentence."
- "Yet another interesting lore sentence."

create_quest_lore.jpg


temporaryPermissions

Définit les permissions attribuées au joueur jusqu'à ce qu'il rende la quête.

Si vous utilisez ce paramètre pour vous assurer qu'un objet ne tombe que lorsque les joueurs ont une quête spécifique active, vous devrez également configurer la Même Permission dans le fichier de configuration de l'objet.

CléValeursDéfaut
temporaryPermissionsString Listaucun
Exemple
temporaryPermissions:
- elitequest.item_that_should_drop_only_during_quest.yml

questAcceptDialog

Définit le dialogue qui apparaît dans le chat lors de l'acceptation de la quête.

CléValeursDéfaut
questAcceptDialogString Listaucun
Exemple
questAcceptDialog:
- "My hero! You are so helpful!"
- "I wish you the best of luck!"

create_quest_accept.jpg


questCompleteMessage

Définit le dialogue qui apparaît dans le chat lors de la complétion de la quête.

CléValeursDéfaut
questCompleteMessageString Listaucun
Exemple
questCompleteMessage:
- "My hero! You have completed my difficult quest!"
- "As a reward you can have this loaf of bread!"

create_quest_complete.jpg


questCompleteCommands

Définit les commandes qui s'exécuteront lors de la complétion de la quête. Prend en charge les espaces réservés : $player pour le nom du joueur, et $getX, $getY, $getZ pour les coordonnées de localisation du joueur.

CléValeursDéfaut
questCompleteCommandsString Listaucun
Exemple
questCompleteCommands:
- say $player has finished a quest at $getX, $getY, $getZ!
- give $player diamond 1

create_quest_commands.jpg


turnInNPC

Définit le nom de fichier du NPC auquel les joueurs doivent parler/interagir pour terminer la quête. Cela ne doit pas nécessairement être le même NPC qui a donné la quête.

CléValeursDéfaut
turnInNPCFilenameaucun
Exemple
turnInNPC: my_cool_quest_npc.yml

Quest Givers

Pour assigner une quête à un NPC qui la donnera aux joueurs, vous devez configurer le fichier NPC, pas le fichier de quête.

Dans votre fichier de configuration NPC (~/plugins/EliteMobs/npcs/), ajoutez :

questFileName: my_quest.yml

Pour les NPC qui donnent plusieurs quêtes :

questFileName:
- quest_one.yml
- quest_two.yml

Consultez la documentation de création de NPC pour plus d'informations sur la configuration des NPC.


trackable

Définit si la quête utilisera le suivi de quête.

CléValeursDéfaut
trackableBooleantrue
Exemple
trackable: true

questLevel

Définit le niveau de la quête. Il s'agit uniquement d'un guide visuel pour que les joueurs puissent déterminer à quel point la quête sera difficile. Cela ne modifie en aucun cas les niveaux de boss, d'objets ou autres.

CléValeursDéfaut
questLevelInteger0
Exemple
questLevel: 10

create_quest_level.jpg


questAcceptSound

Définit le son qui se joue lorsqu'une quête est acceptée. Il est possible de jouer à la fois des sons Minecraft et des sons d'un resource pack.

CléValeursDéfaut
questAcceptSoundStringaucun
Exemple
questAcceptSound: entity.experience_orb.pickup

create_quest_level.jpg


questCompleteSound

Définit le son qui se joue lorsqu'une quête est terminée (rendue). Il est possible de jouer à la fois des sons Minecraft et des sons d'un resource pack.

CléValeursDéfaut
questCompleteSoundStringaucun
Exemple
questCompleteSound: entity.player.levelup

create_quest_level.jpg


Localization Support

Les champs suivants prennent en charge la localisation pour les serveurs multilingues :

  • name
  • questLore
  • questAcceptDialog
  • questCompleteMessage

Cela vous permet de fournir des traductions pour différentes langues sur votre serveur.


Permissions

Comme mentionné dans les tableaux ci-dessus, les permissions sont généralement des Strings ou des String Lists. Mais voyons plus en détail comment vous les utiliserez pour verrouiller et déverrouiller les quêtes.

Supposons que vous créez quest_3 dans une série de quêtes que vous avez prévues et que vous ne voulez pas que les joueurs puissent prendre quest_3 avant d'avoir terminé quest_2. Nous configurerions le fichier de quête comme ceci :

questAcceptPermission: elitequest.quest_2.yml
questLockoutPermission: elitequest.quest_3.yml

En définissant questAcceptPermissions sur elitequest.quest_2.yml, nous avons maintenant empêché les joueurs de prendre quest_3.yml avant de terminer quest_2.yml.
En définissant questLockoutPermission sur elitequest.quest_3.yml, nous avons empêché les joueurs de pouvoir recevoir cette quête tant qu'ils ont déjà cette quête dans leur suivi ou s'ils ont déjà terminé cette quête. Cela empêche les joueurs de pouvoir répéter la quête.

Si vous souhaitez créer une quête qui ne devient disponible qu'après que les joueurs aient terminé une série de quêtes, vous configureriez le fichier de quête comme ceci :

questAcceptPermissions:
- elitequest.quest_2.yml
- elitequest.quest_3.yml
- elitequest.quest_4.yml

Si vous voulez que les joueurs ne puissent piller certains objets que lorsqu'ils ont la bonne quête active, nous pouvons le faire en utilisant temporaryPermissions. Nous créerions une permission dans le fichier de quête en utilisant temporaryPermissions puis créerions une permission correspondante dans le fichier d'objet en utilisant permission.

Par exemple, nous ouvririons notre fichier de quête et ajouterions ce qui suit :

temporaryPermissions:
- elitequest.my_cool_item.yml

Ensuite, nous ouvririons le fichier d'objet, dans notre cas my_cool_item.yml et ajouterions ce qui suit :

permission: elitequest.my_cool_item.yml

Les deux fichiers ont maintenant des permissions correspondantes, ce qui devrait maintenant faire en sorte que notre objet ne tombe que lorsque les joueurs ont la bonne quête active.