Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Branching Dialogue ti consente di creare uno script di dialogo PNG dinamico in grado di fornire dialoghi aggiornati in base alle azioni o alle risposte di un giocatore nel gioco. Il sistema di Branching Dialogue è composto da tre parti: l'entità PNG, i comandi di dialogo e i file di scena delle risorse.
Requisiti
Prima di iniziare questo tutorial, ti consigliamo di completare i seguenti passaggi:
Il file di scena
Il file di scena è un file JSON situato all'interno della cartella dialogo nella directory principale del tuo pacchetto di comportamenti (%localappdata%\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\development_behavior_packs\<your behavior pack folder>
) che contiene tutte le informazioni necessarie per il tuo dialogo ramificato. Puoi creare tutti i file di scena di cui hai bisogno. Puoi creare un file di scena per ogni PNG nel tuo mondo o crearne uno per ogni capitolo della tua storia; oppure puoi semplicemente avere un file di scena per il mondo: la scelta dipende solo da te poiché la funzionalità di dialogo ramificata leggerà tutti i file nella cartella Dialogo, indipendentemente da come hai deciso di organizzarli.
Proprietà
La prima proprietà è l'intestazione che definisce il file JSON come file di scena valido.
Esempio:
{
"format_version": "1.17",
"minecraft:npc_dialogue": {}
}
Poiché questo è un file JSON, dobbiamo includere le parentesi. La prossima proprietà che aggiungeremo è la proprietà "scenes", ovvero il luogo in cui avverrà tutto il dialogo ramificato.
{
"format_version": "1.17",
"minecraft:npc_dialogue": {
"scenes": []
}
}
Dopo aver stabilito le proprietà dell'intestazione e del file di scena, ora possiamo creare le singole scene per il dialogo di ramificazione PNG. Ogni nuova istanza di dialogo PNG richiederà una nuova scena. Questa viene definita nel file di scena tramite la creazione di un tag di scena. Utilizzerai il tag di scena nel gioco per chiamare il testo che fornisci nel file di scena. Puoi anche impostare pulsanti e comandi PNG che si comporteranno in modo identico a come farebbero se li avessi impostati utilizzando l'editor PNG nel gioco.
Esaminiamo la struttura della scena PNG:
{
"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"
]
}
]
}
Proprietà della scena
scene_tag: questo è il nome che userai per chiamare la scena nel gioco. Questa è una proprietà obbligatoria.
npc_name: qui puoi aggiungere o modificare un nome per la tua finestra di dialogo PNG. Questa è una proprietà facoltativa utile per modificare dinamicamente i nomi dei PNG.
Text: qui inserisci il dialogo che vuoi che il tuo PNG mostri nel gioco per questa scena. Puoi digitare il testo del dialogo direttamente qui o utilizzare il testo non elaborato se stai utilizzando un file di lingua. Questa è una proprietà opzionale, ma senza di essa la tua finestra di dialogo PNG sarà vuota.
on_open_commands: qui puoi definire quali comandi verranno attivati quando si apre la finestra di dialogo PNG. Proprietà facoltativa.
on_close_commands: qui puoi definire quali comandi verranno attivati quando si chiude la finestra di dialogo PNG. Proprietà facoltativa.
Buttons: qui puoi creare tasti per il tuo PNG. Il sottoinsieme include le proprietà "name" e "commands". La proprietà "name" ti consente di impostare il testo che verrà visualizzato sul pulsante del tuo PNG. La seconda proprietà, "commands", ti consente di aggiungere comandi che verranno eseguiti nel gioco quando viene premuto il tasto. Proprietà facoltativa; obbligatoria per i tasti del PNG.
Rawtext
Tutte le proprietà della scena elencate sopra supportano rawtext.
{
"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
Il comando Dialogue consente ai PNG di aprire o leggere i file di scena. Il comando ha due modalità distinte, ognuna con scopo e sintassi propri e univoci.
Dialogue Open
Dialogue Open viene utilizzato per forzare l'apertura di una finestra di dialogo PNG ai giocatori interessati. Questa funzionalità è stata precedentemente denominata Remote Fire, poiché simula l'esperienza di fare clic su un PNG. Questo comando può essere utilizzato su qualsiasi PNG e non richiede un pacchetto di comportamenti, a meno che tu non voglia che il PNG utilizzi un file di scena per il suo dialogo (che non è un requisito quando si utilizza Dialogue Open).
La sintassi per Dialogue Open è la seguente:
/dialogue open <npc: target> <player: target> [sceneName:string]
/dialogue
: il comando iniziale.
open
: la variante del comando.
<npc: target>
: il PNG interessato.
<player: target>
: il giocatore interessato. Questo è il giocatore che vedrà la finestra di dialogo PNG.
[sceneName:string]
: questo è il nome utilizzato se si desidera usare il dialogo contenuto in un file di scena. La stringa deve essere un nome di tag di scena valido, altrimenti avrà esito negativo. Questo è un parametro opzionale.
Nota
Se non viene specificato alcun nome di scena, verrà visualizzato l'ultimo dialogo avuto dal PNG, qualunque esso sia.
Utilizzo pratico
Dialogue Open viene utilizzato principalmente in due modi.
Il primo è avviare una finestra di dialogo PNG senza che il giocatore interagisca direttamente con il PNG, essenzialmente utilizzando PNG come una finestra "pop-up" che non richiede al giocatore di fare clic sul PNG. Il PNG in questo scenario non deve nemmeno essere visibile al giocatore nel mondo (sebbene debbano essere in un chunk caricato e a distanza di tick dal giocatore che riceve il dialogo) e potrebbe essere nascosto sottoterra o in qualche altro luogo inaccessibile.
Il secondo modo in cui viene utilizzato Dialogue Open è creare alberi di dialogo ramificati utilizzando il file di scena. Usando il comando Dialogue Open all'interno di un file di scena PNG, il PNG può aprire automaticamente la finestra di dialogo successiva per un giocatore, usando un comando On Close o un comando Button. Questa è la base per tutti i percorsi di ramificazione dell'albero di dialogo.
Dialogue Change
Dialogue Change viene utilizzato per indicare a un PNG di utilizzare il dialogo fornito in un file di scena appositamente designato. Per funzionare correttamente, questo comando richiede l'uso di un pacchetto di comportamenti contenente una cartella di dialogo e un file di scena. Il comando indicherà al PNG interessato di estrarre il dialogo dalla posizione designata dal nome di tag di scena. Il comando dovrebbe essere eseguito prima che il giocatore inizi il contatto con il PNG.
La sintassi per Dialogue Open è la seguente:
/dialogue change <npc: target> <sceneName:string> [player: target]
/dialogue
: il comando iniziale.
change
: la variante del comando.
<npc: target>
: il PNG interessato.
<sceneName:string>
: questo è il nome utilizzato se si desidera usare il dialogo contenuto in un file di scena. La stringa deve essere un nome di tag di scena valido, altrimenti avrà esito negativo.
[player: target]
: il giocatore interessato (questo è il giocatore che vedrà la finestra di dialogo). Se omesso in un comando "/dialogue change", il dialogo PNG verrà aggiornato per tutti i giocatori.
Utilizzo pratico
Dialogue Change è usato principalmente per modificare il dialogo di un PNG usando i comandi. Il comando può provenire da un blocco di comando attivato dal giocatore all'interno del mondo, lanciato da un altro PNG o può essere eseguito dallo stesso PNG interessato.
Potresti voler cambiare il dialogo di un PNG in base alle azioni di un giocatore all'interno del mondo, come ad esempio entrare in un'area particolare, parlare con un altro PNG o svolgere un compito specifico. Se l'azione può essere valutata, si può utilizzare per eseguire il comando di dialogo e modificare il dialogo del PNG.
Dialogue Change non mostra la finestra di dialogo PNG come fa Dialogue Open, ma rimanda semplicemente il PNG al dialogo del file di scena che vuoi che il giocatore veda durante la sua prossima interazione con quel PNG.
Targeting
Il targeting è una parte vitale del sistema di ramificazione del dialogo PNG. Determina quali PNG ricevono i comandi e quali giocatori vedono il dialogo. Viene anche utilizzato per garantire che ogni giocatore veda il dialogo che vuoi che veda e non perda il dialogo negli scenari multigiocatore.
Targeting dei PNG
Per usare il comando /dialogue
devi scegliere un PNG come bersaglio. Questo agirà come PNG da cui viene visualizzato il dialogo e utilizzerà l'immagine di quel PNG all'interno del ritratto del dialogo.
Il PNG di cui vuoi attivare il dialogo deve esistere all'interno del mondo.
Targeting dei giocatori
Quando utilizzi il comando /dialogue
ci saranno momenti in cui dovrai scegliere come bersaglio anche i giocatori. Per scegliere come bersaglio i giocatori, usa i selettori di giocatori come @a (tutti i giocatori) o @p (il giocatore più vicino). Questi in genere funzioneranno bene per un'esperienza per giocatore singolo, ma se desideri apportare modifiche alla scena per ogni giocatore, dovrai utilizzare un tipo di bersaglio speciale chiamato @initiator (il giocatore che interagisce con il PNG).
Esempio:
"buttons": [
{
"name": { "rawtext": [ { "translate": "dialogue.button.name" } ] },
"commands": [
"/give @initiator gold_ingot"
]
}
]
L'uso di questo selettore di bersagli con i PNG consente loro di aggiornare il dialogo per ciascun giocatore, il che significa che in modalità multigiocatore i PNG possono ricordare lo stato del dialogo di ciascun giocatore e inviargli di conseguenza un dialogo unico. Questo è utile nei momenti in cui un giocatore che modifica il dialogo di un PNG potrebbe far perdere ad altri giocatori il ramo di dialogo completo o per garantire che ogni giocatore riceva solo un oggetto da un PNG, non permettendo allo stesso giocatore di tornare dal PNG per più oggetti o impedire ad altri giocatori di raccogliere i loro oggetti.
Esempio 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 per attivare la scena:
/dialogue open @e[tag=ducky] @p ducky_intro