Aller au contenu principal

Créer des PNJ

webapp_banner.jpg

Paramètres de configuration

isEnabled

Définit si un PNJ est activé.

CléValeursDéfaut
isEnabledBooleantrue
Exemple
isEnabled: true

name

Définit le nom d'affichage d'un PNJ. Prend en charge les Codes de couleur et les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
nameStringaucun
Exemple
name: "&aEnn Peecee"

create_npc_name.jpg


scale

Définit l'échelle (la taille) du PNJ.

CléValeursDéfaut
scaleMultiplier1.0

Lors de la mise à l'échelle, 1.0 représente la taille par défaut. Pour agrandir l'entité, augmentez la valeur (par exemple, 1.2). Pour rapetisser l'entité, diminuez la valeur (par exemple, 0.8).

Exemple
scale: 1.2

role

Définit le rôle du PNJ, sous le nom. Purement visuel. Prend en charge les Codes de couleur et les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
roleStringaucun
Exemple
role: "&c<Red Fellow>"

create_npc_role.jpg


profession

Définit la profession du PNJ, qui détermine son apparence (skin) lorsqu'il n'utilise pas de déguisement.

CléValeursDéfaut
professionProfessionNITWIT
Exemple
profession: NITWIT

create_npc_profession.jpg


greetings

Définit la liste des salutations que le PNJ prononce lorsqu'un joueur approche. Prend en charge les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
greetingsString Listaucun
Exemple
greetings:
- Hi there!
- Good day.

create_npc_greetings.jpg


dialog

Définit le dialogue que le PNJ prononce lorsqu'un joueur se trouve à proximité (dans le cas de l'interactionType DIALOG, ce serait le dialogue). Prend en charge les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
dialogString Listaucun
Exemple
dialog:
- I like apples!
- Sure is hot.

create_npc_dialog.jpg


farewell

Définit le message d'adieu du PNJ. Prend en charge les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
farewellString Listaucun
Exemple
farewell: 
- Until next time!
- Bye!

create_npc_farewell.jpg


canTalk

Définit si le PNJ peut parler.

CléValeursDéfaut
canTalkBooleantrue
Exemple
canTalk: true

activationRadius

Définit le rayon auquel un PNJ peut détecter l'approche d'un joueur.

CléValeursDéfaut
activationRadiusDouble3.0
Exemple
activationRadius: 3.0

scripts

Définit les scripts Lua attachés à ce PNJ. Les fichiers de script sont chargés depuis plugins/EliteMobs/npc_scripts/ et les noms de fichiers doivent correspondre exactement, y compris l'extension .lua.

CléValeursDéfaut
scriptsString Listaucun

Les scripts de PNJ peuvent réagir aux hooks de cycle de vie, d'interaction et de proximité tels que on_npc_proximity_enter. Consultez Scripts Lua de PNJ pour l'API complète et des exemples.

Exemple
scripts:
- wave.lua

interactionType

Définit le type d'interaction que le PNJ effectuera.

CléValeursDéfaut
interactionTypeSpécial [1]aucun
Exemple
interactionType: TELEPORT_BACK

noPreviousLocationMessage

Lorsqu'un PNJ Téléporteur n'a aucun emplacement précédent vers lequel téléporter un joueur, il affichera ce message. Accepte les Codes de couleur et les clés de traduction pour les serveurs multilingues.

CléValeursDéfaut
noPreviousLocationMessageStringaucun
Exemple
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

create_npc_noteleportlocation.jpg


timeout

Définit la durée, en minutes, avant qu'un PNJ ne disparaisse définitivement.

CléValeursDéfaut
timeoutDouble0 (jamais)
Exemple
timeout: 0

questFileName

Définit les quêtes que le PNJ donne.

CléValeursDéfaut
questFileNameString Listaucun
Exemple
questFileName:
- my_quest_one.yml
- my_quest_two.yml

disguise

Définit le déguisement LibsDisguises du PNJ.

CléValeursDéfaut
disguiseFormat LibsDisguisesaucun
Exemple
disguise: SKELETON

create_npc_disguise.jpg


customDisguiseData

Définit les données d'un déguisement LibsDisguises personnalisé.

CléValeursDéfaut
customDisguiseDataFormat LibsDisguisesaucun
Exemple
disguise: custom:my_cool_disguise_name
customDisguiseData: player my_cool_disguise_name setskin {"id":"364acb6d-9050-46f7-b5fb-f8c3fd83a6fc","name":"Unknown","properties":[{"name":"textures","value":"ewogICJ0aW1lc3RhbXAiIDogMTYxMTk4ODA4Nzc1NSwKICAicHJvZmlsZUlkIiA6ICJkZGVkNTZlMWVmOGI0MGZlOGFkMTYyOTIwZjdhZWNkYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJEaXNjb3JkQXBwIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzliYmVkODQzNWY4YmYyNzhhZmUyNmU2NGZkOTI2YjhiMzc3MzJkODhlMzM0ODk3ZGJkNTI3ZDU2ZmY5MTk5MGUiCiAgICB9CiAgfQp9","signature":"ujLq1joYVktuQAp1xpFKlxQFUVinSePiDBiVCAxxix/mA5vP86i/eAOfb1mtGjaAZ6sO0l2olbzvycnGXNBtbAxgqprguROXY4tpWiePVTDmy3iD4GdOCxHAkYLoyMV5qTT4SNsldUFFuND8GSEgbNMltKDLmhNKwzm08iCigPfpeuYpwljgJPxu6ka54PKNaQu4doI0ZDZXKqq4hPhR3Bs2Sz9MI0SmdmQWwcCzUz3DFdVno27fmQ6LwqmT+eSoOv0EttVG/XMaTYQ5lhBY61mqf6WlJyYVUSfjJk1AbYsctu7dWM+sbY8jFq5ljvXJGGr5TyKi+fs8vHy06Z2go20QgTYOw+caFxFijAS6fgm3oY57VEO/+/9OLHdD+Z9BrWqQWcIIrVeIfxjue/yt4pyeVv9jX59hjNFjhcPEwotkxJ+vZ96WlTLWDG4BiqauDr2VeGyLlVaygO9ZU0wwsN65iSh91GI3tMIA5wbDR0Hts/9ABvt9eafHbowS+4SZXN0i9mYnKg7op1eiB8nMEAGsPJg3DwsmUrh3ACAapQ6eYHiJpo59RXDqKlRcXwo7wsEFp//5LgQWbPj0NP3nxnywdpozqSAeq6236qlhE9BT9eiyJ41V9sMelYFEWMlUAltR40NdbIrHB0J3nmfuLJz44/sTwWf6P1khOy//XX0="}],"legacy":false}

create_npc_custom_disguise.jpg


customModel

Définit le modèle personnalisé ModelEngine que le PNJ utilisera.

CléValeursDéfaut
customModelStringaucun
Exemple
customModel: MY_MODEL_ONE

arena

Définit le nom de fichier de l'arène pour laquelle le PNJ ouvrira un menu (nécessite l'interactionType ARENA_MASTER).

CléValeursDéfaut
arenaFilenameaucun
Exemple
arena: my_arena.yml

command

Définit la commande que le PNJ exécutera (nécessite l'interactionType COMMAND). Les commandes sont exécutées en tant que joueur, pas en tant que console. N'incluez pas le slash initial (/).

CléValeursDéfaut
commandStringaucun
Exemple
command: say Look at me running a command, how cool!

create_npc_command.jpg


spawnLocation

Définit l'emplacement d'apparition des PNJ. Vous devriez le définir via la commande /em place npc <npcfilename.yml>.

CléValeursDéfaut
spawnLocationStringaucun
Exemple
spawnLocation: my_world,10,50,10,0,0

spawnLocations

Définit les emplacements d'apparition des PNJ. Vous devriez les définir via la commande /em place npc <npcfilename.yml>.

CléValeursDéfaut
spawnLocationsString Listaucun
Exemple
spawnLocations: 
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0

instanced

Définit si le PNJ doit être instancié (pour une utilisation dans les donjons instanciés). Lorsqu'il est défini sur true, le PNJ est automatiquement cloné pour chaque instance de donjon, chaque clone existant dans le monde d'instance correspondant.

CléValeursDéfaut
instancedBooleanfalse
Exemple
instanced: false

syncMovement

Définit si le mouvement du PNJ doit être synchronisé. Sert à contrôler si les mises à jour de position du PNJ sont synchronisées.

CléValeursDéfaut
syncMovementBooleantrue
Exemple
syncMovement: true

Exemple de configuration de PNJ
isEnabled: true
name: "&cRed Rubin"
role: "&a<Generic NPC>"
profession: NITWIT
greetings:
- Hiya!
- Hello!
dialog:
- Great conversation!
- Pleasure talking with you!
farewell:
- Goodbye!
- Laters!
canTalk: true
activationRadius: 4
interactionType: CHAT
timeout: 0
questFileName:
- my_quest.yml #npc interactionType must be set to CUSTOM_QUEST_GIVER
disguise: SKELETON
customDisguiseData: #used when a custom libsdisguise is being set
customModel: MODEL_ONE
arena: my_arena.yml #npc interactionType must be set to ARENA_MASTER
command: say Hello World! #npc interactionType must be set to COMMAND (do not include the leading slash)
spawnLocation: my_world,584,55,127,90,10 #remember that NPCs use pitch and yaw to set where they are looking at. this is also automatically set when running the /em place npc <npcfilename.yml> command, so make sure you pose where you want the NPC to be facing when running the command.

create_npc_npc.jpg


Spécial [1]

Voici la liste des types d'interaction de PNJ valides :

TypeDescription
GUILD_GREETEROuvre le menu de sélection du bonus de compétence d'arme
CHATLe clic droit fait défiler le dialog
CUSTOM_SHOPOuvre le menu de la boutique personnalisée
PROCEDURALLY_GENERATED_SHOPOuvre la boutique générée procéduralement
BARNon implémenté. Indique au joueur que la fonctionnalité arrive bientôt.
ARENANe fait rien. Utilisez ARENA_MASTER à la place.
QUEST_GIVEROuvre le menu des quêtes générées procéduralement
CUSTOM_QUEST_GIVEROuvre le menu de quête pour une quête spécifique définie dans questFileName
NONEAucune interaction
SELLOuvre le menu de vente
TELEPORT_BACKTéléporte les joueurs vers le dernier emplacement hors monde elitemobs où ils se trouvaient
SCRAPPEROuvre le menu de récupération (scrap)
REPAIRMANOuvre le menu de réparation
ENCHANTEROuvre le menu d'enchantement
REFINERREMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ
SMELTERREMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ
ENHANCERREMPLACÉ - Indique au joueur que la fonctionnalité a été remplacée ; les administrateurs sont invités à retirer le PNJ
UNBINDEROuvre le menu de déliaison
ARENA_MASTEROuvre le menu d'arène pour l'arène définie dans arena
COMMANDExécute la commande définie dans command
SCROLL_APPLIERApplique les parchemins d'objet élite aux objets
ARROW_SHOPOuvre le menu de la boutique de flèches
GAMBLING_BLACKJACKOuvre le jeu d'argent de blackjack
GAMBLING_COINFLIPOuvre le jeu d'argent de pile ou face
GAMBLING_SLOTSOuvre le jeu d'argent de machine à sous
GAMBLING_HIGHERLOWEROuvre le jeu d'argent plus haut/plus bas

Pour plus d'informations sur ce que font les types d'interaction SCRAPPER et similaires, cliquez ici.

Notes sur le comportement des PNJ

Les PNJ ont plusieurs comportements codés en dur qui ne peuvent pas être configurés :

  • IA désactivée : les PNJ ne peuvent pas se déplacer de manière autonome. Ils restent à leur emplacement d'apparition.
  • Affichage du rôle : le texte du rôle est affiché sur un support à armure invisible au-dessus du PNJ, à une hauteur fixe.
  • Temps de recharge des dialogues : les PNJ attendent 3 secondes entre deux prises de parole pour éviter le chevauchement des messages.
  • Cycle de vie des chunks : les PNJ disparaissent lorsque leur chunk est déchargé et réapparaissent lorsqu'il est rechargé.