Dialogue Plugin

bump on this question

/10char

Upgrading VS2019 to 16.4.1 also seems to fix the issue.

Is there any way to import Dialogue payloads?

Export seems to work without issue (pushes the data structure into COPY or T3D file, which is human-readable), but I can’t find a way to import that data back into a Dialogue object in-engine.

Is there a way to check if a node has been visited?
Lets say you only want an NPC to say something once, then say something else every time

Yes you have to make a system for managing that. But it will be condition branch. Here’s something I made quick, but it will depend on your needs.
So whats happening is in a branch I set a condition. In that condition I set a position of an array, and check that value. I would set that value if I had already talked to the person. So default all values are 0 for everything I need to track. When I talk to someone I set that position in the array to 1. When I do what they asked, I set it to 2. Each of those are saved on the player character, and pulled up and checked against in the condition in the dialogue tree. Its basically setting up a simple quest system. You’d probably want to use a data table since this will be harder to manage, and prone to bugs in human error.

Is there a way to get color or rich fonts in the dialogue plugin text?

What I want to is 1, Highlight key words. and 2. show extra information, in my case what language they are speaking.

Ex “You’ll find him in the Barons Den near the south side docks(French)

I first looked into using the vars but that’s not going to work unless its added to the code.

EDIT SOLVED! in 4.20 there is a Rich Text Block. Following this, I can now do exactly what I wanted, it does take a bit of set up to get to work but its pretty straight forward. Match the text box in all settings then replace it’s 2 reference in the graph.
https://www.unrealengine./en-US/t…ich-text-block

EDIT2 I’m pretty excited about this. So awesome!


Great idea, I’ll try to add it in the next version out of the box for other users.

Ctrl+v is supposed to “paste” whatever human-readable serialized nodes you have in your clipboard buffer. It creates all these nodes, and they’re supposed linked the same way, etc. I can’t imagine you haven’t tried it though?
This was exactly the idea - that two writers can share this json-like text between themselves with a simple copy-paste through some instant messaging like Discord. I also wanted to serialize conditions/events, but never went that far.

In short, for 1 you have to pull the name from your NPC actor in your Get_npcname function. You may want to save a reference to the NPC you’re talking to in your character, for instance. Just follow the tutorial on %variable%-like strings here.

And for 2 all you have to do is call a dialogue event that would display a widget on your screen with an input field. But it’s a bit more advanced, because you’d also want to tie it in with some other mechanics, like “you can only progress in the dialogue once you’ve typed something in”, which isn’t exactly complicated, but would require some blueprints experience.

I did find that it pasted a JSON format when spit out into a text editor after I asked, which will work closely enough for what I want to do. I’m essentially looking at how feasible it’d be to convert a large articy:draft project to this dialogue plugin (through some home-brewed python).

With the JSON formatting I can get 80% of the way there (script converts articy exported dialogues/objects to dialogue plugin JSON) The rest will be manually importing/connecting/etc individual pieces and building, as you said, conditions and the like.

Events and conditions being serializable would be a big win.

I think my original ask was if there was a way to have a specific filetype imported to unreal as a dialogue (binary) object. So I could (in theory) manually build out the JSON for a conversation, stick it into a file (“file.dlg” or somesuch), and have Unreal be able to import/reimport/etc. It’d allow third party implementations of how to organize and build dialogue trees. If that makes sense?

Hello, I have a quick one for you I’m hoping you can assist with… There was actually a PM sent I believe, regarding it but I have a feeling you may have missed it. In any case, if all of your great plugins and toolkits are of any indication I know you’re incredibly busy, but if you could find the time to PM me it would be greatly appreciated. Thank you!

I’ve been trying to integrate this with some custom events / conditions, and have hit some kind of restriction that I don’t understand.

I’m using the EasyMultiSave plugin which has a ‘PersistantSave’ actor that I’m using to store a map of booleans (a rudimentary game flag system). But whenever I try to cast to it within a ‘Dialogue Conditions’ blueprint function, the cast fails.

The same cast in a regular function works fine. Is there something about the function in the Dialogue Conditions class that I’m missing, that prevents normal casts working?

I’ve played with this plugin for a while, it’ great, I can customize almost what I want in UMG.

However, some behaviors are reall weird.

By default user have to click continue to move forward a NPC node, I know that there is a video teaching how to implement Soul style dialogue, it’s indeed doable.

But my point is that NPC node should flow automatically by default, PC node is something for choice/interaction.

Consider following scenario:

PlayerCharacterController choose A reply choice

PlayerCharacter: say something

NPC1: say something

PlayerCharacter: say something

NPC2: say something

PlayerCharacterController choose B reply choice

PlayerCharacter: say something

NPC1: say something

PlayerCharacter: say something

Currently I can use NPC node for both PlayerCharacter/NPC1/NPC2, but I have no info in each node for their names.

My suggestion is that, NPC node should be renamed to Character node not only for NPC, it should move forward automatically and have name property. PC node should be renamed to Interaction node, it’s just for choice and should not contain sound info.

Can you please explain a basic setup for an FPS character controller? Just not seeing support for this anywhere.

In all likelihood, the node “get persistent object” returns a null for whatever reason. If this node works in other blueprints, simply create a function on your controller to provide it (considering player -> cast to myWhateverController -> controllerGetPersistentObj).
To check if it returns a null or not, use “is valid” node.

Sorry, I don’t have a PM from your account I’m afraid. Either contact me by email (go to any of my products on the marketplace, hit my name), or copy the question here. Email is better.

https://www.youtube./watch?v=wz8SEBusQtA
Where is the example project for this tut? I download the example project for the condition tut from GITLAB and got the error when hit play: Couldn’t spawn player: Failed to spawn player controller. I’m newbee using 4.22!

Hey guys, so one thing I don’t understand is how to access actors in the world through events and conditions without passing through the player controller. I tried to use for example “get all actors of class” (Yes I know it’s expensive) and though the node executes fine it has a none reference and ultimately can’t set or get variables from other actors.

Hello, first of all amazing product I love it. I would like to change a few things and I see that all of the necessary functions are there but I can’t figure it out. What Im trying to make is a dialog system similar to firewatch and what I mean by that is:

  1. I want to scroll through the displayed node using mouse wheel. I was able to add keyboard arrows using “on key down” input but unfortunately it doesn’t work with mouse wheel up. Any idea how can I achieve that.

  2. I would like to move camera freely without holding mouse wheel.

Thanks in advance.

I could have a look at your project to try and figure out why “get all actors of class” doesn’t work for you. Send it to me by email, if you want me to have a look.

Otherwise, making a getter through player controller or game instance, or any other way you want is fine. There’s not a million classes, and not a million things that could happen. But if you DO have a lot of things that can happen in your level, then just make a class “SceneManager”, make one getter to it through PlayerController and there you go, you have access to the class that makes stuff happen like opening doors, playing in-engine cut-scenes etc. And all you need is just one getter on the player controller.

I just redownloaded it and checked, and it works without any errors. I think it could be helpful to watch a couple of Epic’s tutorials on how to start working in engine.

My bad, the example project work fine in 4.24, not work in 4.22. Thanks.