Dialogue Plugin

Just a quick question.

Would it be possible to set this up so that the player has multiple short answers to choose from, and then when the player selects one of those short answers the character will speak the long version of the text with the subtitles?

Like how Mass Effect and Fallout 4 work.

I don’t want to know how specifically to do it, I enjoy the fun of trying to figure out the specifics for myself. I would just like to know if this is something compatible with this plugin.

Though I wouldn’t be against a general pointing me in the right direction.

Hi there!
Firstly, great plugin - just what I needed to quickly get things off the starting line for my dialogue.
One specific question though: where in the blueprints is the mouse cursor made visible? I can’t seem to find it, yet when you interact with the NPC the mouse cursor appears.
I need to find this as I want to make other things happen specifically at the same time as the cursor appears.
Thanks in advance,
Tony.

hi so how can i install this plugin if i use the source code of ue4 on github?all i can find is the launcher one ?is there a github for this?

Love this plugin, love everything about it.

I have a question regarding the 2D/3D audio (apologies if this has been covered but I couldn’t find anything in the forum)

I want to have my audio attenuated to be coming from the NPC I am talking to in a 3D manor, not in the 2D way it it default set to. I have attempted to work it out myself but haven’t been able to get it working. any help would be amazing!

Sorry if this was already asked but has anyone integrated this into the Advanced Mission and Notification System made by Nocte Studios?

from what I can tell, that project would also take care of the dialogues. Though I use this one, since I wanted to create my own quest / mission system.

Hi! I’m creating a VR pawn project with the dialogue plugin in 4.21 and I’ve copied the same blueprints from the example in 4.22. The problem is that when it displays the widget the replies don’t appear so it can´t continue the dialogue. I think it is because it doesn´t allow me to set the parent actor when it creates the widget but I don´t know how to get it. Could you help me?

How can I combine this with the Interfes???

Hi, first thank for you amazing plugin, and your support. Second forget my English.

I already implement my custom camera system to work with this dialogue plugin, a dialogue event that trigger a function within an actor component with a “Set View Camera with Blend” call. But have a very simple problem, I will explain it in detail because the more data you have, easier for you to understand it.

Following the documentation, I had duplicate and edit both “DemoDialogueWidget” and “DemoReplyWidget” to fit my project. In the case of the reply widget, I added a simple image before the text, and I set it to collapsed by default. And, I wanted to show that image in case that the answer has a specific quest, item, etc.

Now, If I understood correctly, events are triggered after you pass the current node, and conditions are checked when you arrive to a certain node, or something like that. And what I think that I need is to, modify “DemoReplyWidget” before is created.
That means JUST AFTER the dialogue tree arrive to that node.

The function “Is condition Met for node” is written in c++ and I prefer not to mess with the plugin code, not only because it will be updated regularly and that means that I will have to redone everything, but also because I’m not a programmer.

So, please correct me if I’m wrong, I need to create an event, in the previous node of a branching conversation, that change something in the NEXT “DemoReplyWidget” that will be created, and only if a certain condition is meet. Right?
So, to that end, I opened “DemoDialogueWidget” and went to that part, specifically, in the custom event “DisplayReplies” after “DemoReplyWidget” and before is added to the vertical box (Player VBox) and added my custom function “CheckIfHasIcon” there.

So… the flow would be like that: For each node that are about to be created you check conditions, if they are true, you spawn a “DemoReplyWidget” for each one of them.
And then my “custom function” will also check if the node has an icon, and edit “DemoReplyWidget” before is loaded in the “Player VBox”

My specific problem is, that I cannot access nodes that are not “reached” yet…
I cannot find out how, an event in a given node to check the “condition” of the next node(let’s suppose a simple True or False Boolean in the condition), so I can pass that variable from the “node with the condition” to the previous node (the one with the event)

I dug into the problem for two days without a solution, so, I’m asking know, to anyone who could oriented me with the problem, the approach or wherever is wrong on it.

Again, thanks for the plugin, is amazing.
I’m sharing a video to show you my current progress

https://www.youtube./watch?v=aH6d7EY1X4k

@ What would be the best way to have events fire during a node and after a node (for example play an animation when a node displays the text but afterwards trigger another animation but have no additional nodes? Will that require adding an additional events array to the plugin? My current thinking is to have an empty node and just not process it if there is no text as a fake node just to trigger events. Any thoughts? Thanks and love the plugin so far

Hi, not sure if this has been covered previously, but I could find it, so here goes.

When I upgraded to the new events system, all my events stopped working… I did create an Event BP etc… but eventually traced it to the fact that I don’t use the DialogueUserWidget (ever). I have my open recursive loop thingy that runs all my dialog in my own widget emebedded in my HUD.

I realised that the missing ingredient was that I had to run DoEvents to force the events to run during a node… but… DoEvents calls a function on the DialogueUserWidget… (void UDialogueUserWidget::RunEventsForNode(FDialogueNode Node) for which I have no need or purpose. Seems weird to construct a dummy widget just to call this function…

Is there another way? It would make sense for the RunEventsForNode(FDialogueNode Node) function to be available on the dialogue itself, or somewhere generically accessible… without needing a widget.

help!?

The mouse can appear/disappear due to the following two nodes: https://i.gyazo./ed4029357be01ba2ea313c0ac91926db.png
Search for them in all blueprints/umg and adjust your code accordingly.

Check out the documentation on how to move the plugin into your project, paragraph 6.4.

https://i.gyazo./d53221ab360660db99d6178932100322.png

This is called from two places. From “PlayPlayerReply” and “DisplayNpcNode”.

If you want NPC sounds to play from a certain location, you have to:

  • if the method is called from DisplayNpcReply, do this: https://i.gyazo./bdfad563c781a81b67b1fadd3d3926be.png
  • make sure to promote the return value to a variable
  • in the “StopDialogueSound” method, make sure to stop both types of sounds (you now have two types: 2d and 3d sounds)

Not sure I understand your problem correctly, but if you’re using the 4.21 engine version, the repository with the demo has the 4.21 version in the commits history. Just get this one. Let me know if you need help downloading it, because it requires you to know how to use git (e.g. sourcetree) and how to checkout a different version.

Not sure of what you’re trying to do in terms of gameplay. Animations are a particular case in dialogues, they usually require building a separate system altogether depending on what you want to do in your game. But I wouldn’t recommend controlling all animations from dialogue nodes, especially trying to fire multiple animations in a certain order from a node. That can work once, but always doing it like this would be too tedious.

In rare cases when you want 2-3 things happen in a certain order, I’d most likely just expose an additional float variable in an event, and use this float for a “Delay” before executing the code. And then I’d fine-tune the timing. I can’t think of cases where things like this would happen often, so fine tuning the values is not a problem.

All they do is call Event->RecieveEventTriggered(…) on UDialogueEvents.
If you’ve already changed so many things in your setup, you have to keep going and make your HUD also run events. Shouldn’t be difficult.

Sorry, I didn’t understand the exact specifics.

Let’s say you have a quest item called “bloodied axe”, which you need to turn in a quest.

When you talk to the quest giver, if you don’t have the axe:

  • is the player’s line “here is your axe” simply not visible, or
  • is it visible, but the axe’s icon is greyed out?

If the line is visible despite you not having the axes and you click it, what is supposed to happen then? Do you want it to be unclickable, or does the NPC simply say “you don’t have the axe yet”?


For the sake of giving you at least some info, I’m going to assume that you just want to be able to add an icon of an item to a reply. If the player has the said item, then the icon is colored, otherwise it’s grey.

Move the plugin into your project, so you can modify the C++ code. It’s in the documentation’s paragraph 6.2

For the sake of this example, let’s assume that your items as Data Assets. Open Dialogue.h, go into struct FDialogueNode and add the following line at the end of the struct:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = “Dialogue Node”)
class UDataAsset* ItemToHave = nullptr;

Open DialoguePluginEditorSettingsDetails.cpp
After line 75, add this line:
const TSharedPtr<IPropertyHandle> CustomItemField = Child->GetChildHandle(“ItemToHave”);
After line 115, add this line:
CurrentNodeCategory.AddProperty(CustomItemField);

Now all your nodes will have an additional field for an item: https://i.gyazo./175919886fdd90343744744021c1b5df.png

Go into your DialogueWidget, “DisplayPlayerReplies” method. Add some blueprint method to run here: https://i.gyazo./fa8a0a33e185b8e1…8583a45a57.png
Your blueprint method must check if player has this item. If yes, then add a colored icon to the reply widget and make it visible. If not, add a grey one. Or if the “ItemToHave” is not valid, don’t add anything.

Mmm well no, you didn’t understand my question correctly (probably because of my bad English), but you pointed me on the right direction.
I made some modification on those cpp lines and I got it.

Now, every time you update the plugin, I just need to open VS and edit it again, but is quite simple.

Thank you gentleman.

Hello! Can I use this plugin to implement a dialogue between two or more characters? Does animation connect on its own or can it be done using your plugin? Thank you in advance.

@

​​​​​​​

  1. I wanna ask the same first question :smiley:

  2. I want to ask also how i can set the player answer in the text box as the chat partner as well. So that i can see my selected choice.

  3. [Idea] And how about an option, that you can change the start, if you already talked to the npc. So that he gives you first a quest and at the second time he give a tipp or something like that. (i know i create it with a bool right now, But would be a nice comford way, because in many games you can talk multible times with a npc).

Greez

It’s not there out of the box, but you can implement it using “dialogue events”.
A switch between characters could mean doing the following in a custom dialogue event:

  • switch the camera position
  • updating the name of the speaker in the UMG widget
  • updating the portrait

In short, it’s not complicated, but you have to know blueprints.

Same as above. You can call any animation logic you want using dialogue events.

  1. Modifying the UMG widget would be required.
  2. Using “Dialogue Event”, put the NPC into some array that signifies that you visited him. In the dialogue tree, make a “dialogue condition” to check if you visited the NPC and branch the dialogue using that.

Much thanks @.

But i has some other questions.
If i trigger an event via your system, i always can click “continue”.

So i have an camera transition to a gate, that opens and than the camera fade back.
Is there a way to “wait” until the event is done? So that the player cant click continue if the sequence is playing.

@ Hi, didn’t know how else to contact you. I have some paid custom work needed for your character customization plugin. Please contact me khangle81@gmail. if you’re interested. thanks!