SendMessage() error with Textesh Pro integration

Announcements, support questions, and discussion for the Dialogue System.
Post Reply
User avatar
nathanj
Posts: 303
Joined: Sat May 28, 2016 12:30 am

SendMessage() error with Textesh Pro integration

Post by nathanj »

Hi Tony
I think there was an issue introduced with the newest Text Mesh Pro integration.

Any of the nodes that have NPC text and a SendMessage() sequencer command fail to display text in game play. This was working in the previous package but since updating two days ago the nodes have stopped diaplaying text.

Also on this subject, is it possible to send multiple sequencer commands from a single node? Or is only one available?

Thanks in advance
Nathan
User avatar
Tony Li
Posts: 22061
Joined: Thu Jul 18, 2013 1:27 pm

Re: SendMessage() error with Textesh Pro integration

Post by Tony Li »

Hi Nathan,

You can use multiple sequencer commands in a single node. Separate them with semicolons ( ; ).

The node's text is shown for the duration of its Sequence. If you set a node's Sequence to Delay(5), the node will appear for 5 seconds.

The SendMessage() sequencer command sends a message and then immediately finishes. If the node's Sequence only has a SendMessage() sequencer command, its duration is 0 seconds. This won't allow any time for the node's text to appear.

Try a sequence like this:
  • Sequence:

    Code: Select all

    SendMessage(Something,,Someone); Delay({{end}})
This will send the message "Something" to Someone, and it will delay for a duration based on the node's text length. {{end}} is a special keyword that represents the text length duration.

Or you can use the special keyword {{default}}, which represents the value of the Dialogue Manager's Default Sequence field. So:
  • Sequence:

    Code: Select all

    SendMessage(Something,,Someone); {{default}}
The Dialogue Manager's Default Sequence field is initially set to Delay({{end}}), so this sequence is equivalent to the first one. The advantage of using {{default}} is that you can change the Dialogue Manager's Default Sequence, and the change will be reflected everywhere you've used {{default}}. For example, say you've decided to introduce voiceover, and you set the Dialogue Manager's Default Sequence to: AudioWait(entrytag). Then the sequence above is equivalent to:
  • Sequence:

    Code: Select all

    SendMessage(Something,,Someone); AudioWait(entrytag)
You can also put sequencer commands on different lines:
  • Sequence:

    Code: Select all

    SendMessage(Something,,Someone);
    AudioWait(entrytag)
And you can also tell each sequencer command when you want it to run. For example:
  • Sequence:

    Code: Select all

    Audio(Beep);
    Audio(Boop)@2
will play the audio clip "Beep" immediately, and the audio clip "Boop" at the 2-second mark.
User avatar
nathanj
Posts: 303
Joined: Sat May 28, 2016 12:30 am

Re: SendMessage() error with Textesh Pro integration

Post by nathanj »

Thanks again for such a thorough response, Tony.

I should have know some of this and probably could have found it if I had look in the documentation. So apologies for that.

This is so helpful. Just hooked up a method that allows me to remove and add inventory items in ultimate survival through the SendMessage() command. It’s very awesome.

Thanks again for such a comprehensive and robust program.

Nathan
User avatar
Tony Li
Posts: 22061
Joined: Thu Jul 18, 2013 1:27 pm

Re: SendMessage() error with Textesh Pro integration

Post by Tony Li »

Thanks!

And I'm happy to help! The Dialogue System has a lot of documentation. Don't hesitate to ask questions. It's often easier to just ask instead of digging through pages of documentation.
Post Reply