questo Tutorial è una traduzione dell'originale del sito di Dage
www.dageport.com/content/item/38/creiamo un secondo personaggio
per provare copiamo semplicemente il modello del nostro protagonista
inserendo nel file di testo principale
CITAZIONE
Robby = TActor.Create();
Robby.LoadBaseMesh('MainActor/Bobby.smd');
Robby.SetMeshScale(0.1,0.1,0.1);
Robby.SetActor_Dummy_Position(0,-5,0);
Robby.SetCollisionScale(3,5,5);
Robby.MouseControl = 0;
Robby.Y = 10;
Robby.AddAnimation('MainActor/standing.smd');
Robby.SetPosition(-5,6,7);
Robby.SetRotation(-51,0,0);
Robby.Visible = 0;
ogni personaggio dovrà avere una visibilità per ogni stanza , ad esempio se il nostro personaggio secondario sarà visibile solo nella stanza due .aggiungiamo in roomscript Room02Load
CITAZIONE
Robby.Visible = 1;
e in Room01Load
CITAZIONE
Robby.Visible = 0;
torniamo al file di testo principale e aggiungiamo
CITAZIONE
Robby.onMouseMove = 'RobbyMouseMove';
Robby.onMouseUp = 'RobbyMouseUp';
ora il personaggio due è selezionabile
andiamo di nuovo nel roomscript e inseriamo
CITAZIONE
function RobbyMouseMove()
MouseText.Text = 'Robby';
end
function RobbyMouseUp()
MainActor.Say('Hello');
end
CREARE UNA FINESTRA DI DIALOGOsubito dopo inseriamo questo codice , quì ci sono tre opzioni ma possiamo aggiungerne quante vogliamo
CITAZIONE
Option01 = THudtext.Create();
Option01.Visible = 0;
Option01.SetPosition(400,400,0);
Option02 = THudtext.Create();
Option02.Visible = 0;
Option02.SetPosition(400,430,0);
Option03 = THudtext.Create();
Option03.Visible = 0;
Option03.SetPosition(400,460,0);
CREARE GLI ARGOMENTIcreiamo un nuovo file di testo chiamato conversation.txt
e mettiamo questa funzione per aggiungere gli argomenti
CITAZIONE
function InitDialog()
if Dialog == nil then -- here we check that we haven't created Dialog before
Dialog = TConversation.Create(); --here we create dialog
Dialog.BindHudtext(Option01.ID); -- We bind the hudtexts, we created earlier
Dialog.BindHudtext(Option02.ID);
Dialog.BindHudtext(Option03.ID);
end
-- Here we add more soon. [code01]
end
questo è un dialogo semplice con solo le domande , per poter rendere più complesso il dialogo dobbiamo aggiungere i nodi
per inserirli bisogna aggiungere questa riga dopo Init Dialog
CITAZIONE
Dialog.ClearNodes();
e poi
CITAZIONE
StartNode = Dialog.AddNode();
Dialog.AddOption(StartNode,"Who are you?",'WhoAreYou');
Dialog.AddOption(StartNode,"Where am I?",'WhereAmI');
Dialog.AddOption(StartNode,"Bye",'ExitDialog');
Dialog.ShowNode(StartNode); -- We want to display this
e infine per poter articolare ogni argomento
CITAZIONE
-- We use this function to show the node we want, so after our dialogue is done, we want to return back to the options
function ShowStartNode()
Dialog.ShowNode(StartNode);
end
function WhoAreYou()
Dialog.HideNodes(); -- Hide options
MainActor.Say("Who are you?");
Robby.Say("I'm Robby, and you are?");
MainActor.Say("I'm Bobby");
Robby.Say("Nice to meet you");
MainActor.Say("Likewise",0,'ShowStartNode'); -- After mainactor has said this, we call ShowStartNode function
end
INSERIRE UN DIALOGOsemplicemente andiamo nel roomscript.txt
CITAZIONE
function RobbyMouseUp()
Game.LoadScript('scripts/conversations.txt'); -- First we load up the scriptfile where all the functions are.
InitDialog(); -- Then we start the dialog
end
il nostro personaggio però continuerà a cmminare anche durante il dialogo quindi all'
inizio del convesation.txt dopo InitDialog
iinseriamo
CITAZIONE
Game.DisableScene = 1; -- that disables all but hudobjects
e nella funzione ExitDialog
CITAZIONE
Game.DisableScene = 0;
SCHELETRO DI UN DIALOGOIl codice di un dialogo funzionante dovrebbe apparire più o meno così
CITAZIONE
function InitDialog()
if Dialog == nil then
Dialog = TConversation.Create();
Dialog.BindHudtext(Option01.ID);
Dialog.BindHudtext(Option02.ID);
Dialog.BindHudtext(Option03.ID);
end
Dialog.ClearNodes();
StartNode = Dialog.AddNode();
Dialog.AddOption(StartNode,"Who are you?",'WhoAreYou');
Dialog.AddOption(StartNode,"Where am I?",'WhereAmI');
Dialog.AddOption(StartNode,"Bye",'ExitDialog');
Dialog.ShowNode(StartNode);
Game.DisableScene = 1;
end
function ShowStartNode()
Dialog.ShowNode(StartNode);
end
function WhoAreYou()
Dialog.HideNodes();
MainActor.Say("Who are you?");
Robby.Say("I'm Robby, and you are?");
MainActor.Say("I'm Bobby");
Robby.Say("Nice to meet you");
MainActor.Say("Lisewise",0,'ShowStartNode');
end
function WhereAmI()
Dialog.HideNodes();
MainActor.Say("Where am I?");
Robby.Say("This is Room02 in Tutorial for");
Robby.Say("Creating Dage Adventures?");
MainActor.Say("Wow",0,'ShowStartNode');
end
function ExitDialog()
Dialog.HideNodes();
Game.DisableScene = 0;
end