Page 1 of 2

best way to launch sequence?

Posted: Tue Sep 29, 2015 11:49 am
by alfonso
Hi tony! one question.

i have a simple tree with some decisions, and if the player choose a especial one i will want to launch a sequence to teleport to another scene, the problem is if i put de sequence in the same node of the response the sequence is launched before the dialogue and if i put a blank node with only the sequence this will execute after dialogue but dont hide de dialogue and show a blank panel of the dialogue.

what im making wrong?

thanks you men :)

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 1:31 pm
by Tony Li
Hi Alfonso,

Try setting the node's Sequence to something like:

Code: Select all

LoadLevel(anotherScene)@{{end}}
This will teleport only after showing the dialogue text for a time.

If you're using continue buttons, you can set it to:

Code: Select all

required LoadLevel(anotherScene)@99999
This will not run until 99,999 seconds, or as soon as the player clicks the Continue button.

If you want to use a blank node, set its Sequence to:

Code: Select all

None()
This tells the Dialogue Manager to not spend any time showing the node.

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 1:55 pm
by alfonso
great!! i knew that i'm missed something :) i will try now

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 2:14 pm
by alfonso
:( dont work any option.

where is the sequence called? it's possible that i overwrote the method who call the sequencer or something?

i'm using a custom sequence but if i dont put anything is called fine but at the start of the node.

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 2:29 pm
by Tony Li
Another customer also reported that commands are running at the beginning of a dialogue entry instead of their scheduled time. I'll look into this today and reply back here.

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 2:47 pm
by alfonso
i debugged the dialogue and i'm receiving this two line in the console and looks like it trying to play the sequencer but then come in blank and override it?

Hope this help

Code: Select all

Dialogue System: Sequencer.Play( LoadLevel(TestingAlfonso)@9999 )
UnityEngine.Debug:Log(Object)
PixelCrushers.DialogueSystem.Sequencer:PlayCommand(String, Boolean, Single, String, String, String[])
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String)
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationView:StartSubtitle(Subtitle, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationController:GotoState(ConversationState)
PixelCrushers.DialogueSystem.ConversationController:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:SelectResponse(SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.AbstractDialogueUI:OnClick(Object)
PixelCrushers.DialogueSystem.CSUIDialogue:OnClick(Object) (at Assets/Dialogue System/CrossingSouls/CSUIDialogue.cs:100)
UnityEngine.Component:SendMessage(String, Object, SendMessageOptions)
PixelCrushers.DialogueSystem.UnityUIResponseButton:OnClick() (at Assets/Dialogue System/Scripts/Supplemental/UI/Dialogue UI/UnityUIResponseButton.cs:151)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
InControl.InControlInputModule:SendButtonEventToSelectedObject() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:155)
InControl.InControlInputModule:Process() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:132)
UnityEngine.EventSystems.EventSystem:Update()

Dialogue System: Sequencer received a blank string as a command name
UnityEngine.Debug:Log(Object)
PixelCrushers.DialogueSystem.Sequencer:ActivateCommand(String, String, String[])
PixelCrushers.DialogueSystem.Sequencer:PlayCommand(String, Boolean, Single, String, String, String[])
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String)
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationView:StartSubtitle(Subtitle, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationController:GotoState(ConversationState)
PixelCrushers.DialogueSystem.ConversationController:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:SelectResponse(SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.AbstractDialogueUI:OnClick(Object)
PixelCrushers.DialogueSystem.CSUIDialogue:OnClick(Object) (at Assets/Dialogue System/CrossingSouls/CSUIDialogue.cs:100)
UnityEngine.Component:SendMessage(String, Object, SendMessageOptions)
PixelCrushers.DialogueSystem.UnityUIResponseButton:OnClick() (at Assets/Dialogue System/Scripts/Supplemental/UI/Dialogue UI/UnityUIResponseButton.cs:151)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
InControl.InControlInputModule:SendButtonEventToSelectedObject() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:155)
InControl.InControlInputModule:Process() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:132)
UnityEngine.EventSystems.EventSystem:Update()


Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 2:54 pm
by Tony Li
The second line:

Code: Select all

Dialogue System: Sequencer received a blank string as a command name
probably just indicates that you have a semicolon ( ; ) at the end, such as:

Code: Select all

LoadLevel(TestingAlfonso)@9999;
The grammar of sequences uses semicolons to divide commands. It's just reporting that it think there's an empty command after the semicolon. It's harmless.

As soon as I have a chance, I'll look into this and reply back here.

Re: best way to launch sequence?

Posted: Tue Sep 29, 2015 8:46 pm
by Tony Li
Everything seems to be okay. Here's how I tested it:

Image

On the Dialogue Manager, I ticked Show PC Subtitles During Line and set Continue Button to Always because I think that's how your Dialogue Manager is set up. My Dialogue Manager also has a Level Manager component.

When I selected the response button "Take me to the Server Room", it waited until I clicked the Continue Button. Then it changed scenes to the Server Room.

Re: best way to launch sequence?

Posted: Wed Sep 30, 2015 1:57 am
by alfonso
hi Tony

yes i have that settings in my Dialogue Manager, but its no working for me, dont know why, i tested this options with my custom sequencer

1º Teleport(TestingAlfonso, Teleport2) == work fine but fired before show the dialogue text, the normal behave.
2º Teleport(TestingAlfonso, Teleport2)@9999 == not work, anything happens
3º requiered Teleport(TestingAlfonso, Teleport2)@9999 == not work, anything happens

each option show the same in the Debug (but with their own command)

Code: Select all

Dialogue System: Sequencer.Play( Teleport(TestingAlfonso, Teleport2)@9999 )
UnityEngine.Debug:Log(Object)
PixelCrushers.DialogueSystem.Sequencer:PlayCommand(String, Boolean, Single, String, String, String[])
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String)
PixelCrushers.DialogueSystem.Sequencer:PlaySequence(String, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationView:StartSubtitle(Subtitle, Boolean, Boolean)
PixelCrushers.DialogueSystem.ConversationController:GotoState(ConversationState)
PixelCrushers.DialogueSystem.ConversationController:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:SelectResponse(SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.ConversationView:OnSelectedResponse(Object, SelectedResponseEventArgs)
PixelCrushers.DialogueSystem.AbstractDialogueUI:OnClick(Object)
UnityEngine.Component:SendMessage(String, Object, SendMessageOptions)
PixelCrushers.DialogueSystem.UnityUIResponseButton:OnClick() (at Assets/Dialogue System/Scripts/Supplemental/UI/Dialogue UI/UnityUIResponseButton.cs:151)
UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction`1)
InControl.InControlInputModule:SendButtonEventToSelectedObject() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:155)
InControl.InControlInputModule:Process() (at Assets/Plugins/InControl/Source/GUI/InControlInputModule.cs:132)
UnityEngine.EventSystems.EventSystem:Update()
my hierarchy is CSBubbleDialogue -> CSUIDialogue -> AbstractDialogueUI

it has something relevant for the sequencer that i maybe was deleted in my custom class?

EDIT: other weird thing is if in the end node i use a sequencer like LoadLevel the DialogueSystem don't hide the panel

Re: best way to launch sequence?

Posted: Wed Sep 30, 2015 10:53 am
by Tony Li
Hi Alfonso,
alfonso wrote:3º requiered Teleport(TestingAlfonso, Teleport2)@9999 == not work, anything happens
Could it just be a typo? "required" is misspelled. Try to copy-and-paste this:

Code: Select all

required Teleport(TestingAlfonso, Teleport2)@9999
If that doesn't work, try to copy-and-paste this:

Code: Select all

required Teleport(TestingAlfonso, Teleport2)@{{end}}
It won't wait for the Continue Button, but it will wait for some amount of time to show the text.

If either works, please let me know. This will be more information to help debug the issue.