TUTORIAL: Creare un dialogo

« Older   Newer »
  Share  
view post Posted on 3/1/2011, 00:24
Avatar

Responsabile Vendite

Group:
Administrator
Posts:
2,813
Location:
Forlì

Status:
Image Hosted by ImageShack.us


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 DIALOGO

subito 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 ARGOMENTI

creiamo 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 DIALOGO

semplicemente 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 DIALOGO

Il 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

 
Web Contacts  Top
0 replies since 3/1/2011, 00:24   65 views
  Share