Dialogue Plugin

Thanks for the report, I’ll check it out in the next few days.

Greetings,

Love the plugin!

Have a bunch of questions about it:

​​​​​1) Adding variables to the Dialogue node struct. (Managed to figure it out in the end)
followed the documentation example, which works fine with a simple variable like an integer, but in my case I need to add FDataTableHandleRow as a variable and this method does not seem to work.
I do not know C++ so if you can advise how to properly add more complicated variables like a struct or a set, that would be great
2) How to add new variables directly to the Dialogue asset (not the nodes). Can you give a similar example? (right now I believe it has two variables exposed to BP, name and Display Idle splines).
3) Events. Why don’t you pass the reference of widget that calls the event to it? It would make it easier to run contextual events based on the nodes that called them. Right now event has nothing and has to find even the widget that called it with suboptimal methods ( your example video has stuff like get actors of class etc)
3) Events. It seems that when you create a variable inside the event it shows up inside the Dialogue node even if it is not instance editable. So it makes it hard to create some utility variables inside events without bloating the dialogue node.
I was under the impression that only instance editable ones should show up in the dialogue nodes.

Thanks! :slight_smile:

I was under that impression too when I wrote the documentation. I guess you could call it an engine bug, but Epic won’t deal with something so minor.

Just add a field normally and it will display. E.g.

https://i.gyazo./7c26136b9950c019953d75987dae1019.png

https://i.gyazo./835dc0ef19ee143dfef3f3a4cc9968c4.png

Documentation #7.8 explains this.
If it doesn’t work for structs/sets too, let me know.

If this is something you need, you can implement the retrieval of the widget on GameInstance or somewhere similar, and just call it from your events. You likely save a reference to the dialogue widget anyway whenever you spawn it. There is no overhead for doing something like this.

A little update on the Linux problem. Sorry it’s taking so long. My Linux machine broke (network adapter can’t connect to network), so I have to find another machine with Linux on it…

So in regards to this bug:

https://i.gyazo./3cd4733b4f1577bf34adf967cf34eb5d.png

The good news is that they entered it into the system: https://issues.unrealengine./issue/UE-107863
Please upvote the issue on the tracker if you’re using the plugin, because otherwise the bug will likely be backlogged and it may take a long time to get it fixed. However if it gets a good amount of upvotes, I’m guessing it can get fixed in the next ~6 months, optimistically. So please vote. Thanks!

Hey!

I’m using this plugin and it works great, but I need to tweak it to make it really streamlined. I tried to achieve it, but I need your help. I’m affraid I will mess it up on some pint.

I need to:

**- add an alternative text window for a PC, so I can display a dialogue option like “I will do that”, but print (and add audio) the full answer like “Of course I will do that, honey!” **- i tried to add the box using the instructions in the post #282, but i got those errors when I try to compile it through the Viseual Studio:


1> [1/4] Module.DialoguePluginEditor.cpp
1>F:/allmother/UE4/AllMother/Plugins/DialoguePlugin/Source/DialoguePluginEditor/Private/DialoguePluginEditorSettingsDetails.cpp(82): error C2039: "AlternativeText": nie jest sk�adow� elementu "FDialogueNode"
1> F:\allmother\UE4\AllMother\Plugins\DialoguePlugin\Source\DialoguePlugin\Public\Dialogue.h(92): note: zobacz deklaracj� "FDialogueNode"
1>F:/allmother/UE4/AllMother/Plugins/DialoguePlugin/Source/DialoguePluginEditor/Private/DialoguePluginEditorSettingsDetails.cpp(166): error C2039: "AlternativeText": nie jest sk�adow� elementu "FDialogueNode"
1> F:\allmother\UE4\AllMother\Plugins\DialoguePlugin\Source\DialoguePlugin\Public\Dialogue.h(92): note: zobacz deklaracj� "FDialogueNode"
1>F:/allmother/UE4/AllMother/Plugins/DialoguePlugin/Source/DialoguePluginEditor/Private/DialoguePluginEditorSettingsDetails.cpp(174): error C2039: "AlternativeText": nie jest sk�adow� elementu "FDialogueNode"
1> F:\allmother\UE4\AllMother\Plugins\DialoguePlugin\Source\DialoguePlugin\Public\Dialogue.h(92): note: zobacz deklaracj� "FDialogueNode"
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.MakeFile.Targets(46,5): error MSB3073: The command ""E:\Epic Games\UE_4.26\Engine\Build\BatchFiles\Build.bat" AllMotherEditor Win64 Development -Project="F:\allmother\UE4\AllMother\AllMother.uproject" -WaitMutex -FromMsBuild" exited with code 6.
1>Done building project "AllMother.vcxproj" -- FAILED.

I don’t know why it’s in polish, but translations is like “zobacz deklaracj�” - “see declaration” and “nie jest sk�adow� elementu” - is not a part of element"

I first copied the plugin to the local project and removed the plugin from the Engine. doesn’t work

  • I need to add “skip” button for both when the PC and NPC answer is playing. Right now “Next” only shows when PC is speaking so I can skip to NPC’s answer, but I need both. I followed the video for the Souls-like dielogues and added a skip function on a button but it shows this error:

Blueprint Runtime Error: "Accessed None trying to read property CallFunc_GetEffectMaterial_ReturnValue". Blueprint: MyReplyWidget Function: Execute Ubergraph My Reply Widget Graph: EventGraph Node: Set Scalar Parameter Value

But it works… a bit.

When I skip the NPC dialogue, it skips to the first possible PC node, and still shows both nodes after the timer is done, so midway through the first node text, it shows the selection again and I can replay the node or… switch it to a diffrent one.

Also, is it possible to add the skip button but asign it to a input button, from project settings, and not through “OnKeyDown” node?

  • I need to play non-branching dialogue nodes one after another, without having to select the only avilable. I think it’s connected to the thing above, but should be branched somehow, like counting the possible nodes and if just one then go straight to this one, and if not, show them to me. And if I’m skipping, show me the dialogue options immediately.

  • I already added the delay function so that PC’s dialogue options only turn up when the NPC is finished talking, which is great, but the timer gets a little confused.

Also, I’ve built a rather ugly system in the Player Controller that counts total mouse-wheel rolls in the game and pulls it into the widget, so I can select the dialogue options with mouse wheel and accept it with an “E” key and it works fine, but I would love to pull the button from the input settings, and not leave it on the blueprint.

But maybe you managed to come up with something as a mouse-wheel and keyboard button input in the meantime? :slight_smile:

The instructions in that “post #282” worked back then (in 2018), but can’t work now, because the plugin has evolved since then, so when an instruction from 3 years ago says “add something to line 62”, in 2021 the line number will be absolutely out of place.

I’ve recorded a video on a broader subject, but in that video I perform the necessary changes to the plugin that add a second text field. It’s a long video, but the second text field is already added and is functional by 11th minute, so watch it and do what I do: https://www.youtube./watch?v=dpxErm–dvE

As for other changes you’re trying to make. The “demo dialogue widget” is just that - a demo. If it doesn’t fit your needs, then you can alter it if you can, or just write your own. I’d recommend the latter for you. 99% of the plugin is in the editor. 1% is the widget. Just write your own widget, this way you’ll know exactly what lives where and why. All the API is exposed, and you can look at the demo widget to look for examples of how to interact with the dialogue asset.

Hello! I’m considering buying this dialogue system which seems very nice. I have a few questions ;

  • If my player can chose one reply from several, is it possible to link their reply back to the previous node where they were able to chose from all the questions but tweak it so they are not able to ask the same question again (like hide it), and add a question they could not ask before.

Example: From ‘node A’ they can ask (How are you? AND How old are you?) they chose (How are you are?) / Dialogue unfolds / then there is a link back to the ‘node A’ and they are now able to ask (I’m fine as well AND How old are you?)

  • Is there a way to hide or show replies options according to other variables (e.g. strength of my character)

  • Is there a way to make replies options another colour if they have already been asked?

  • Is there a way to keep a record of what has been said in the conversation? (In a journal for example)

  • Can I call a tree inside of a tree?
    (For example, the player has a reply option “I want to talk about Game Of Thrones”, and this node links to a whole other tree that is all about Game Of Thrones and it starts directly there)

  • Can I use tasks blueprint to make nodes inside the dialogue (open doors, npc gives an item to the player, their opinion of the player increases or lowers…)

Thank you for your help! I tried very hard to create this on my own but without success haha.

@Claudelag yes to almost everything you asked, except I don’t know about replied that have been asked being another color. I don’t think thats supported out of the box.

@** **One thing I’d really love and I can’t quite think of how to do it, I want dialogue between 3 characters (2 NPC’s and the player). Its not that different than what we have here but a different UI setup and add the ability to have more than 1 character in the plugin named section. Do you think you’d be open to adding that? I love the way this plugin works, so powerful, just one area that’s kind a got a snag for me. I could help if you wanted it, but the plugin needs to have more options for me to connect it up to a new UI.

I don’t know what should happen when you have a 3 people dialogue, but let’s assume you need the following changes

  • the name should change
  • the avatar
  • and maybe the camera should lock on on the new speaker

All of that is achievable without any changes to the demo dialogue widget. Simply create a dialogue event that changes all those 3 things in the widget. And when you’re ready to go back to another talking character, just call that same event again to set up new values. Ideally the event has a class parameter (purple thing). It does a “find all actors by class”, gets the first one from the array and retrieves the values from the actor.

Does that achieve what your goal, or did you have something else in mind?

Not out of the box, but the documentation has a link to a video where I show how to implement this.

Yes, using dialogue conditions (second tutorial video).

Not out of the box, but the principle is very similar to your first question. Perhaps you’d be able to do it if you’ve got some unreal experience. A beginner might not be able to do that, though.

Not out of the box. Easy to implement on your own, though. I can show you the entry points for custom code. But if you’re not comfortable with blueprints, this is not doable.

You mean you want to link a node to a different conversation? A dialogue event can help you achieve that, but you’d have to write the logic of going into a different dialogue and then returning to this one. You’d also need to modify the widget’s “OnExit” behavior a little.

I’m not sure I understand the question. Please watch the second tutorial video on dialogue events to see if this is what you’re referring to.

Thanks for the reply. I’ll have to try that and see if I can get it to work. I think it does make sense. But its a little hazy right now being just in my head. Once I get down to it I think I should have it. Thanks again. I’ll let you know if/when I get that working to see how I did it, or failed completely :smiley:

I noticed a lot of your youtube videos are unlisted, sometimes I can’t find one I once saw. Any reason you can’t make the unlisted videos listed? It’d be helpful, thanks!

is there anyway not to show a dialogue branch if conditions arent met? for example if bool is not true, then don’t even show that a certain dialogue exists(to avoid spoilers for instance- like a piece of information the Maincharacter needs before he can ask a specific question to the npc.

also, 7.7 Alter or hide already visited lines - would be great if this was actually part of the plugin by default(maybe some checkboxes to enable it?)

I figured it out even easier, altho I will probably add your technique for more control/features. I did it by misusing some already built in features :smiley:

Its in the docs linked from the store page https://docs.google./document/d/1qw06osFKccB5mjqe_e7QvWssXS1U14wPRQkWPBWzTHE/edit#heading=h.fo7zqvmxij8f

I really love this plugins and I am a paid customer( I didn’t get it by monthly freebie). Could you pease show me the entry points for custom code? very thanks!
I mean, the blueprint or C++ point where I can send procedual text to the dialogue system

Hello! Where can I set the game mode to UI only when the dialogue starts, and then set the game mode back to game only when it ends please?

In the docs (you can find from the store page) link should get you right to it, but its "7.5 Input focus"
https://docs.google./document/d/1qw06osFKccB5mjqe_e7QvWssXS1U14wPRQkWPBWzTHE/edit#heading=h.no5ae647b610

Hello!
Thank you for your answer Dave!
I ran into something else.
My dialogue widget sometimes opens twice when I interact with an NPC and the widgets overlap. So, once I have gone through the dialogue, I have to go through the same one that was hidden beneath it. Sometimes, it only opens once however. I have no idea what might be causing this.
Any idea? Is this an issue someone has already adressed?

Yeah whatever is triggering the wiget to spawn is doing it more than once. Sometimes thats an overlap other times its just the way you have it set up. I’d recommend a “do once” that only resets after closing(if needed). There are other ways to fix it, like correcting the way its spawned but not without trouble shooting exactly what you’re doing.