Saltar al contenido principal

Crear NPCs

webapp_banner.jpg

Ajustes de configuración

isEnabled

Establece si un NPC está habilitado.

KeyValoresPredeterminado
isEnabledBooleantrue
Ejemplo
isEnabled: true

name

Establece el nombre visible de un NPC. Admite Color Codes y claves de traducción para servidores multiidioma.

KeyValoresPredeterminado
nameStringninguno
Ejemplo
name: "&aEnn Peecee"

create_npc_name.jpg


scale

Establece la escala (tamaño) del NPC. Esto se aplica mediante el atributo vanilla generic_scale sobre la entidad subyacente.

KeyValoresPredeterminado
scaleMultiplier1.0

Al escalar, 1.0 representa el tamaño predeterminado. Para hacer la entidad más grande, aumenta el valor (por ejemplo, 1.2). Para hacer la entidad más pequeña, disminuye el valor (por ejemplo, 0.8).

Ejemplo
scale: 1.2

role

Establece el rol del NPC, bajo el nombre. Solo es visual. Admite Color Codes y claves de traducción para servidores multiidioma.

KeyValoresPredeterminado
roleStringninguno
Ejemplo
role: "&c<Red Fellow>"

create_npc_role.jpg


profession

Establece la profesión del NPC, que define su skin cuando no se usa un disfraz.

KeyValoresPredeterminado
professionProfessionNITWIT
Ejemplo
profession: NITWIT

create_npc_profession.jpg


greetings

Establece la lista de saludos que el NPC puede decir cuando un jugador entra por primera vez en su activationRadius. Se elige una entrada al azar y se muestra como un bocadillo de chat flotante sobre el NPC (visible solo para ese jugador, durante unos 5 segundos). Admite claves de traducción para servidores multiidioma.

KeyValoresPredeterminado
greetingsString Listninguno

Un saludo solo se dispara al entrar en el radio, no repetidamente mientras el jugador permanece dentro.

Ejemplo
greetings:
- Hi there!
- Good day.

create_npc_greetings.jpg


dialog

Establece las líneas que el NPC puede decir como bocadillo de chat flotante. Cada vez se elige una entrada al azar (la lista no se lee en orden). Admite claves de traducción para servidores multiidioma.

Cuándo se dispara depende del interactionType:

  • Los NPC CHAT dicen una línea de diálogo cuando un jugador les hace clic derecho.
  • Cualquier otro interactionType dice una línea de diálogo en cada escaneo de proximidad mientras un jugador permanece dentro del activationRadius.

Un \n literal dentro de una línea la divide en varias líneas apiladas del bocadillo.

KeyValoresPredeterminado
dialogString Listninguno
Ejemplo
dialog:
- I like apples!
- Sure is hot.

create_npc_dialog.jpg


farewell

Establece los mensajes de despedida del NPC. Se elige una entrada al azar y se muestra como un bocadillo de chat flotante. Admite claves de traducción para servidores multiidioma.

KeyValoresPredeterminado
farewellString Listninguno

Las despedidas se disparan cuando un jugador cierra un menú de inventario estando a menos de 5 bloques del NPC, normalmente justo después de cerrar un menú de tienda, misión o arena. No se disparan cuando un jugador simplemente sale caminando del activationRadius.

Ejemplo
farewell: 
- Until next time!
- Bye!

create_npc_farewell.jpg


canTalk

Establece si el NPC puede hablar. Cuando se establece en false, el NPC nunca muestra un bocadillo de chat, así que greetings, dialog y farewell quedan todos suprimidos.

KeyValoresPredeterminado
canTalkBooleantrue
Ejemplo
canTalk: true

activationRadius

Establece el radio, en bloques, en el que un NPC puede detectar a un jugador acercándose.

KeyValoresPredeterminado
activationRadiusDouble3.0

La proximidad se escanea cada 5 segundos. Mientras un jugador está dentro del radio, el NPC gira para mirarle, se muestran los indicadores de misión (en los NPC QUEST_GIVER / CUSTOM_QUEST_GIVER) y se activan greetings / dialog. Establecer esto en 0 (o menos) desactiva por completo la detección de proximidad para ese NPC.

Ejemplo
activationRadius: 3.0

scripts

Establece los scripts Lua adjuntos a este NPC. Los archivos de script se cargan desde plugins/EliteMobs/npc_scripts/. La extensión .lua es opcional: se añade automáticamente si la omites.

KeyValoresPredeterminado
scriptsString Listninguno

Los scripts de NPC se ejecutan en el motor Lua compartido de MagmaCore y admiten los siguientes hooks: on_spawn, on_tick, on_remove, on_npc_interact, on_npc_proximity_enter, on_npc_proximity_leave, on_zone_enter y on_zone_leave. Consulta Scripts Lua de NPC para ver la API completa y ejemplos.

Un nombre de archivo de script que no se corresponda con un archivo de npc_scripts/ se omite con una advertencia; el NPC aparece igualmente.

Ejemplo
scripts:
- wave.lua

interactionType

Establece el tipo de interacción que realizará el NPC.

KeyValoresPredeterminado
interactionTypeEspecial [1]ninguno
Ejemplo
interactionType: TELEPORT_BACK

noPreviousLocationMessage

Cuando un NPC Teletransportador no tiene una ubicación anterior a la que pueda teletransportar a un jugador, mostrará este mensaje. Acepta Color Codes y claves de traducción para servidores multiidioma.

KeyValoresPredeterminado
noPreviousLocationMessageStringninguno
Ejemplo
noPreviousLocationMessage: '&8[EliteMobs] &cCouldn''t send you back to your previous location - no previous location found!'

create_npc_noteleportlocation.jpg


timeout

Establece la cantidad de tiempo, en minutos, antes de que un NPC desaparezca permanentemente.

KeyValoresPredeterminado
timeoutDouble0 (nunca)
Ejemplo
timeout: 0

questFileName

Establece las misiones personalizadas que da el NPC. Requiere el interactionType CUSTOM_QUEST_GIVER. Ten en cuenta que la clave está en singular (questFileName) aunque acepte una lista.

KeyValoresPredeterminado
questFileNameString Listninguno
Ejemplo
questFileName:
- my_quest_one.yml
- my_quest_two.yml

disguise

Establece el disfraz de LibsDisguises que tiene el NPC.

KeyValoresPredeterminado
disguiseFormato de LibsDisguisesninguno
Ejemplo
disguise: SKELETON

create_npc_disguise.jpg


customDisguiseData

Establece los datos de un disfraz personalizado de LibsDisguises.

KeyValoresPredeterminado
customDisguiseDataFormato de LibsDisguisesninguno
Ejemplo
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

Establece el modelo personalizado de ModelEngine que usará el NPC.

KeyValoresPredeterminado
customModelStringninguno
Ejemplo
customModel: MY_MODEL_ONE

arena

Establece el nombre de archivo de la arena para la que el NPC abrirá un menú (requiere el interactionType ARENA_MASTER).

KeyValoresPredeterminado
arenaFilenameninguno
Ejemplo
arena: my_arena.yml

command

Establece el comando que ejecutará el NPC (requiere el interactionType COMMAND). Los comandos se ejecutan como el jugador, no como la consola. No incluyas la barra inicial (/).

KeyValoresPredeterminado
commandStringninguno
Ejemplo
command: say Look at me running a command, how cool!

create_npc_command.jpg


spawnLocation

Establece una única ubicación de aparición para el NPC. Esta es la clave antigua de ubicación única: solo se lee cuando spawnLocations está ausente o vacía. Las nuevas ubicaciones colocadas dentro del juego se escriben en spawnLocations, así que es preferible usar esa clave.

El formato es world,x,y,z,yaw,pitch.

KeyValoresPredeterminado
spawnLocationStringninguno
Ejemplo
spawnLocation: my_world,10,50,10,0,0

spawnLocations

Establece las ubicaciones de aparición del NPC. El mismo archivo de NPC puede colocarse en varios sitios; se genera un NPC por cada entrada. Deberías establecer esto mediante el comando /em place npc <npcfilename.yml>, que añade tu ubicación actual (incluida la dirección hacia la que miras) a esta lista y también establece isEnabled: true.

El formato de cada entrada es world,x,y,z,yaw,pitch.

KeyValoresPredeterminado
spawnLocationsString Listninguno
Ejemplo
spawnLocations: 
- my_world,10,50,10,0,0
- my_world,-10,50,-10,0,0

instanced

Establece si el NPC debe estar instanciado (para uso en mazmorras instanciadas). Cuando se establece en true, el NPC no aparece en el mundo plantilla; en su lugar se registra como plantilla y se clona para cada instancia de mazmorra, y cada clon existe en el mundo de instancia correspondiente.

KeyValoresPredeterminado
instancedBooleanfalse
Ejemplo
instanced: false

syncMovement

Establece si el modelo personalizado del NPC debe tener su movimiento sincronizado con la entidad subyacente. Esto solo tiene efecto cuando customModel está establecido y el modelo está cargado: se ignora en los NPC normales y en los de LibsDisguises.

KeyValoresPredeterminado
syncMovementBooleantrue
Ejemplo
syncMovement: true

Ejemplo de configuración de NPC
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


Especial [1]

La siguiente es la lista de tipos de interacción de NPC válidos:

TipoDescripción
GUILD_GREETERAbre el menú de selección de bono de habilidad de arma
CHATEl clic derecho dice una línea aleatoria de dialog
CUSTOM_SHOPAbre el menú de la tienda personalizada
PROCEDURALLY_GENERATED_SHOPAbre la tienda generada proceduralmente
BARSin implementar. Indica al jugador que la característica llegará pronto.
ARENANo hace nada. Usa ARENA_MASTER en su lugar.
QUEST_GIVERAbre el menú de misiones generadas proceduralmente
CUSTOM_QUEST_GIVERAbre el menú de misiones para una misión específica establecida en questFileName
NONESin interacciones
SELLAbre el menú de venta
TELEPORT_BACKTeletransporta a los jugadores de vuelta a la última ubicación de mundo no perteneciente a elitemobs en la que estuvieron
SCRAPPERAbre el menú de desguace
REPAIRMANAbre el menú de reparación
ENCHANTERAbre el menú de encantamiento
REFINERREEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC
SMELTERREEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC
ENHANCERREEMPLAZADO - Indica al jugador que la característica fue reemplazada; a los administradores se les indica que eliminen el NPC
UNBINDERAbre el menú de desvinculación
ARENA_MASTERAbre el menú de la arena establecida en arena
COMMANDEjecuta el comando establecido en command
SCROLL_APPLIERAbre el menú de pergaminos de objeto élite. El NPC no aparece en absoluto mientras useEliteItemScrolls esté desactivado
ARROW_SHOPAbre el menú de la tienda de flechas
GAMBLING_BLACKJACKAbre el juego de apuestas de blackjack
GAMBLING_COINFLIPAbre el juego de apuestas de cara o cruz
GAMBLING_SLOTSAbre el juego de apuestas de tragaperras
GAMBLING_HIGHERLOWERAbre el juego de apuestas de mayor/menor

Para más información sobre lo que hacen el SCRAPPER y tipos de interacción similares haz clic aquí.

Notas sobre el comportamiento de los NPCs

Los NPCs tienen varios comportamientos preprogramados que no se pueden configurar:

  • IA Deshabilitada: Los NPCs no pueden moverse ni buscar rutas. Permanecen en su ubicación de aparición. Sí giran sobre sí mismos para mirar a un jugador que esté dentro del activationRadius.
  • Visualización del Rol: El texto de role se dibuja en una entidad de texto flotante sobre el NPC. El desplazamiento vertical depende de cómo se represente el NPC: 2.52 para un NPC normal, 2.30 para un NPC con LibsDisguises y 2.3 para uno que use un customModel.
  • Etiqueta de rol en Bedrock: Los clientes de Bedrock no pueden mostrar entidades de texto, así que un NPC disfrazado recibe además un soporte de armadura marcador invisible que lleva el texto del rol, visible solo para los jugadores de Bedrock y oculto para los de Java. Su altura la establece bedrockNPCRoleYOffset en config.yml (por defecto 2.2). Esta alternativa requiere Geyser o Floodgate en el servidor de destino; una instalación de Geyser solo en el proxy la desactiva.
  • Tiempo de espera de diálogo: Los NPCs esperan 3 segundos entre eventos de habla para evitar que los mensajes se solapen. Los bocadillos de chat son texto flotante por jugador que desaparece tras unos 5 segundos, no mensajes de chat.
  • Invisibilidad: Un NPC bajo el efecto de poción de invisibilidad no mostrará bocadillos de chat.
  • Ciclo de vida del Chunk: Los NPCs desaparecen cuando su chunk se descarga y reaparecen cuando se vuelve a cargar. Las entidades de NPC nunca se guardan en el mundo: se recrean a partir de su archivo de configuración.
  • Renombrado bloqueado: Hacer clic derecho en un NPC sosteniendo una etiqueta de nombre se cancela y se indica al jugador que el NPC no puede renombrarse.