Page 1 of 1

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Sat Nov 15, 2014 6:49 am
by jezevcik88
Hi Tony,

Is it implemented in dialogue system the option which I can choose in chat mapper to display a dialogue option only one? (bassed on this I pass to next node without display or break the conversation branch).

It places a script condition like "Dialog[2].SimStatus ~= "WasDisplayed", but in unity I am getting errors on such conditions .



"Dialogue System: Lua code 'return Dialog[2].SimStatus ~= "WasDisplayed"' threw exception 'Lookup of field 'SimStatus' in the table element failed because the table element itself doesn't in the table.'

UnityEngine.Debug:LogError(Object)"



What do you suggest, to do it if its not implemented like this? I would like to store which questions have been asked and not repeat them in the dialogues.



Thank you!

Regards

Martin

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Sat Nov 15, 2014 7:22 am
by Tony Li
Hi Martin,



On the Dialogue Manager GameObject, tick Include Sim Status. By default, this is turned off to conserve memory in the Lua environment.

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Sat Nov 15, 2014 9:51 am
by jezevcik88
Thanks Tony, works like a breeze.



I've been playing a little bit with it and I've found one point where Chatmapper simulator differs from

the dialogue system evauluation of dialogs. I am not sure if it's intended, but maybe it might be worth investigation.



I'll try to describe it or eventually I can send a chat mapper project.



But simply if I create a two main root branches which will unfold dialog nodes each.



1. First root branch will be used to speak with player to get know better the NPC and NPC will set quest to player.

2. Second root branch will be used to discuss the progress of the quest already given to player.

(at the beggining second branch is hidden as there is no quest assigned at the beggining)



Nodes in 1. first root branch are set to passthrough when displayed already.

This I'll do to not repeat same dialogs with player which already been presented.

(Like NPC and player already said hello to each other, they will just passthrough it next time they speak and continue where they stoped)



So far so good.



At the bottom of the 1. first branch there are two BLOCK nodes.

Each will give player different quest.



I choose one, so the other stays undisplayed.

And dialog ends, one quest is assigned.



So far so good.







But when I go to the 2. second root branch, I want to speak with player about already received quest from the BLOCK node.

But I want also to give him a chance to receive a second quest from BLOCK node which stayed undisplayed.



Okay... so I do it like...



From the second root branch I set up a LINK(by using the link icon in the chatmapper node) and here it differs.



In chat mapper I can set this link to any of the already displayed nodes from the first root node. And they will not get displayed as they passthrough because they have been visited and the undisplayed BLOCK node with second quest will display.



But in dialogue system, it doesn't work this way. It will not passthhroug and will not display the BLOCK node.



I have to point the link(chat mappers link icon) directly to undisplayed the BLOCK node directly to display it.





Briefly:



It seems like when the link icon (chat mappers link icon) is used to connect nodes which can't be connected directly, the dialolgue system doesnt evaluate all underlaying nodes for passthroug to get to the undisplayed block node. It has to be linked directly to the block node.





It's not a problem for me well, possibly it could be some computation saving feature :)

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Sat Nov 15, 2014 10:19 am
by jezevcik88
Here is the sample picture, in chat mapper I can link it to any pass through node, examples are marked red.

And it will go through and find the Block point which wasn't displayed.



In dialogue system I have to point directly on it like yellow arrow, because in case I point to pass through upper nodes it doesn't go down.

http://i62.tinypic.com/2ld91cl.jpg

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Sat Nov 15, 2014 11:10 am
by Tony Li
Thank you for the detailed description of the issue. If you have the time, could you please email a copy of the Chat Mapper project file to tony (at) pixelcrushers.com? I'll look into this and update the Dialogue System to handle it the same way as Chat Mapper.

Display dialog only once - Chat mapper(Dialog[2].SimStatus ~= WasDisplayed)

Posted: Wed Nov 19, 2014 4:25 pm
by Tony Li
This passthrough issue will be resolved in v1.3.9. It will behave like Chat Mapper.