Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El diálogo de ramificación te permite crear un script de diálogo de NPC dinámico que puede proporcionar un diálogo actualizado basado en las acciones o respuestas de un jugador en el juego. El sistema de diálogo de ramificación consta de tres partes: la entidad del NPC, los comandos de diálogo y los archivos de escena de recursos.
Requisitos
Se recomienda que completes lo siguiente antes de comenzar este tutorial.
El archivo de escena
El archivo de escena es un archivo json ubicado dentro de la carpeta dialogue en el directorio raíz de tu pack de comportamiento (%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_behavior_packs\<your behavior pack folder>
) que contiene toda la información necesaria para tu diálogo de ramificación. Puedes crear tantos archivos de escena como necesites. Puedes crear un archivo de escena para cada NPC en tu mundo o crear un archivo de escena para cada capítulo de tu historia, o simplemente puedes tener un archivo de escena para el mundo; la elección es completamente tuya, ya que la función de diálogo de ramificación leerá todos los archivos de la carpeta de diálogo, independientemente de cómo decidiste organizarlos.
Propiedades
La primera propiedad es el encabezado que define este archivo json como un archivo de escena válido.
Ejemplo:
{
"format_version": "1.17",
"minecraft:npc_dialogue": {}
}
Dado que este es un archivo json, necesitamos incluir corchetes. La siguiente propiedad que agregaremos es la propiedad "escenas", el lugar donde vivirá todo nuestro diálogo de ramificación.
{
"format_version": "1.17",
"minecraft:npc_dialogue": {
"scenes": []
}
}
Con las propiedades del archivo de encabezado y escena en su lugar, ahora podemos crear nuestras escenas individuales para nuestro diálogo de ramificación del NPC. Cada instancia nueva de diálogo del NPC requerirá una nueva escena. Esto se define en el archivo de escena con la creación de una etiqueta de escena. Usarás la etiqueta de escena en el juego para llamar al texto que proporciones en el archivo de escena. También puedes configurar botones y comandos del NPC que se comportarán de manera idéntica a como lo harían si los hubieras configurado usando el editor de NPC del juego.
Examinemos la estructura de la escena del NPC:
{
"scene_tag": "ducky_intro",
"npc_name": "Ducky",
"text": "Hello. My name is Ducky. Take this gold!",
"on_open_commands": [
"/clear @p"
],
"on_close_commands": [
"/say Enjoy the gold! "
],
"buttons": [
{
"name": "Take Gold",
"commands": [
"/give @initiator gold_ingot"
]
}
]
}
Propiedades de la escena
scene_tag: Este es el nombre que usarás para llamar a esta escena en el juego. Esta es una propiedad necesaria.
npc_name: Aquí es donde puede agregar o cambiar un nombre para el cuadro de diálogo de tu NPC. Esta es una propiedad opcional que es útil para cambiar dinámicamente los nombres de los NPC.
Text: Aquí es donde ingresas el diálogo que deseas que tu NPC muestre en el juego para esta escena. Puedes escribir el texto del diálogo directamente aquí o utilizar texto sin formato si estás usando un archivo de idioma. Esta es una propiedad opcional, pero sin ella tu cuadro de diálogo de NPC estará vacío.
on_open_commands: Aquí es donde puedes definir qué comandos se activarán cuando se abra el cuadro de diálogo del NPC. Propiedad opcional.
on_close_commands: Aquí es donde puedes definir qué comandos se activarán cuando se cierra el cuadro de diálogo del NPC. Propiedad opcional.
Buttons: Aquí es donde puedes crear botones para tu NPC. El subconjunto incluye propiedades de "name" y "commands". La propiedad "name" te permite establecer el texto que se mostrará en el botón de tu NPC. La segunda propiedad, "commands", te permite agregar comandos que se ejecutarán en el juego cuando se presione el botón. Propiedad opcional; requerido para los botones del NPC.
Texto sin formato
Todas las propiedades de la escena detalladas anteriormente admiten texto sin formato.
{
"scene_tag": "ducky_intro",
"npc_name": { "rawtext": [ { "translate": "character.name", "with": ["\n"] } ] },
"text": { "rawtext": [ { "translate": "ducky.intro.text", "with": ["\n"] } ] },
"on_open_commands": ["/clear @p"],
"on_close_commands": ["/say Enjoy the gold! "],
"buttons": [
{
"name": { "rawtext": [ { "translate": "dialogue.button.name" } ] },
"commands": [
"/give @initiator gold_ingot"
]
}
]
}
Comando Dialogue
El comando Dialogue es lo que permite a los NPC abrir o leer archivos de escenas. El comando tiene dos modos distintos, cada uno con su propio propósito y sintaxis únicos.
Dialogue Open
Dialogue Open se usa para forzar la apertura de un cuadro de diálogo de NPC para los jugadores objetivo. Esta función se denominó antes Fuego remoto, ya que simula la experiencia de hacer clic en un NPC. Este comando se puede usar en cualquier NPC y no requiere un pack de comportamiento a menos que desees que el NPC use un archivo de escena para su diálogo (que no es un requisito cuando se usa el diálogo abierto).
La sintaxis de Dialogue Open es la siguiente:
/dialogue open <npc: target> <player: target> [sceneName:string]
/dialogue
: El comando inicial.
open
: La variante de comando.
<npc: target>
: El NPC al que te diriges.
<player: target>
: El jugador al que te diriges. Este es el jugador que verá el cuadro de diálogo del NPC.
[sceneName:string]
: Este es el nombre que se utiliza si deseas utilizar el diálogo contenido en un archivo de escena. La cadena debe ser un nombre de etiqueta de escena válido o fallará. Este es un parámetro opcional.
Nota
Si no se especifica un sceneName, se mostrará el último diálogo que tuvo el NPC.
Uso práctico
En principio, Dialogue Open se utiliza de dos formas.
La primera es iniciar un cuadro de diálogo de NPC sin que el jugador interactúe directamente con el NPC. Para ello, se usará el NPC como una ventana emergente que no requiere que el jugador haga clic en NPC. El NPC en este escenario ni siquiera tiene que ser visible para el jugador en el mundo (aunque debe estar en una pieza cargada y a una distancia mínima del jugador que recibe el diálogo) y podría estar escondido bajo tierra o en algún otro lugar inaccesible.
La segunda forma en que se utiliza Dialogue Open es para crear árboles de diálogo de ramificación utilizando el archivo de escena. Cuando usas el comando Dialogue Open dentro de un archivo de escena de NPC, el NPC puede abrir automáticamente el siguiente cuadro de diálogo para un jugador. Para ello, usará un comando On Close o un comando Button. Esta es la base de todas las rutas de ramificación del árbol de diálogo.
Dialogue Change
Dialogue Change se utiliza para indicar a un NPC que utilice el diálogo proporcionado en un archivo de escena específicamente designado. Este comando requiere el uso de un pack de comportamiento que contiene una carpeta de diálogo y un archivo de escena para funcionar de manera correcta. El comando indicará al NPC objetivo que extraiga su diálogo de la ubicación designada por el nombre de la etiqueta de la escena. El comando debe ejecutarse antes de que el jugador inicie el contacto con el NPC.
La sintaxis de Dialogue open es la siguiente:
/dialogue change <npc: target> <sceneName:string> [player: target]
/dialogue
: El comando inicial.
change
: La variante de comando.
<npc: target>
: El NPC al que te diriges.
<sceneName:string>
: Este es el nombre que se utiliza si deseas utilizar el diálogo contenido en un archivo de escena. La cadena debe ser un nombre de etiqueta de escena válido o fallará.
[player: target]
: El jugador al que te diriges (este es el jugador que verá el cuadro de diálogo). Si se omite en un comando "/dialogue change", el diálogo de NPC se actualizará para todos los jugadores.
Uso práctico
Dialogue Change se utiliza principalmente para cambiar el diálogo de un NPC con comandos. El comando puede provenir de un bloque de comando activado por un jugador en el mundo, activado por otro NPC o puede ejecutarse desde el propio NPC objetivo.
Es posible que desees cambiar el diálogo de un NPC en función de las acciones de un jugador en el mundo, como ingresar a un área en particular, hablar con otro NPC o realizar una tarea específica. Si se puede evaluar la acción, se puede utilizar para ejecutar el comando de diálogo y cambiar el diálogo del NPC.
Dialogue Change no muestra el cuadro de diálogo NPC como lo hace Dialogue Open, solo apunta al NPC al diálogo del archivo de escena que desea que el jugador vea durante su próxima interacción con ese NPC.
Dirección
La dirección es una parte esencial del sistema de ramificación de diálogo de NPC. Determina qué NPC reciben los comandos y qué jugadores ven el diálogo. También se utiliza para garantizar que cada jugador vea el diálogo que quieres que vea y no se pierda el diálogo en escenarios multijugador.
Cómo dirigirse a los NPC
Para usar el comando /dialogue
, debes dirigirte a un NPC. Esto actuará como el NPC desde el que se muestra el diálogo y usará la imagen de ese NPC dentro del retrato del diálogo.
El NPC desde el que deseas activar el diálogo debe existir dentro del mundo.
Cómo dirigirse a los jugadores
Cuando usas el comando /dialogue
, habrá ocasiones en las que también necesitarás dirigirte a los jugadores. Para dirigirte a los jugadores, usa selectores de jugadores como @a (todos los jugadores) o @p (el jugador más cercano). Por lo general, funcionarán bien para una experiencia de un solo jugador, pero si deseas hacer cambios de escena por jugador, deberás usar un tipo de objetivo especial llamado @initiator (el jugador que interactúa con el NPC).
Ejemplo:
"buttons": [
{
"name": { "rawtext": [ { "translate": "dialogue.button.name" } ] },
"commands": [
"/give @initiator gold_ingot"
]
}
]
El uso de este selector de objetivos con los NPC les permite actualizar su diálogo por jugador, lo que significa que en el modo multijugador, los NPC pueden recordar el estado de diálogo de cada jugador y enviarles un diálogo único en consecuencia. Esto es útil para los momentos en los que un jugador que cambia el diálogo de un NPC podría hacer que otros jugadores se pierdan la rama de diálogo completo o para garantizar que cada jugador solo reciba un objeto de un NPC, sin permitir que ese mismo jugador regrese al NPC por más objetos o bloquee a otros jugadores para que no recolecten sus objetos.
Ejemplo completo:
{
"format_version": "1.17",
"minecraft:npc_dialogue": {
"scenes": [
{
"scene_tag": "ducky_intro",
"npc_name": { "rawtext": [ { "translate": "character.name", "with": ["\n"] } ] },
"text": { "rawtext": [ { "translate": "ducky.intro.text", "with": ["\n"] } ] },
"on_open_commands": ["/clear @p"],
"on_close_commands": ["/say Enjoy the gold! "],
"buttons": [
{
"name": { "rawtext": [ { "translate": "dialogue.button.name" } ] },
"commands": [
"/give @initiator gold_ingot"
]
}
]
}
]
}
}
Comando para activar la escena:
/dialogue open @e[tag=ducky] @p ducky_intro