Dialogue Kit V2.5 // Fast, Easy Interactive Dialogues and Events

I just found an invisible image to use but anyway

Why are you already looking forward to V3? Is… V2.5 not good enough? : (

In all seriousness, I haven’t looked that far in the future, I plan on updating V2.5 to V2.6, 2.7, 2.8, etc.

2 Likes

Sorry! I really didn’t mean it like that. I was just making a suggestion. It is already an amazing module however I was just wondering on what you may plan.

1 Like

Can anyone how the rich text works? It is messed up for me for some reason. (it shows the <.font color> content)

Also, does anyone know how the exec works? I’ve tried but nothing works.

			Layer2 = {
				Dialogue = {
					"Yes you absolutely can! Would you like to see the list of options?"
				},
				DialogueSounds = {},
				DialogueImage = "rbxassetid://13877485530",
				Title = nil,

				Replies = {
					yes = {
						ReplyText = "Yes please",
						ReplyLayer = nil
					},
					no = {
						ReplyText = "No thanks",
						ReplyLayer = nil
					},
				},

				Exec = {
					showBoatUI = {
						Function = showUI, -- Create a 'function' outside the dialoguePrompt.Triggered and run it here. This is used to run code in the dialogue. You can use this for firing an event to start a quest or change NPC animations.
						--ExecTime = "After", -- Before = Exec runs before the typewriter starts, After = Exec runs after the dialogue finishes typing.
						ExecContent = "yes", -- This can be a number or string. Check the cheat sheet below.

						-- "_continue(contentnumber)" -- This will run when the continue button is pressed at the specified content number. If I put '_continue1' for example, when I press the continue button after Content Number 1, my function will run.
						-- "ReplyName" -- This should just be a reply name. For example, if I put 'reply1' as my ExecContent, my function will run when I press the 'reply1' reply.
						-- Number -- Similar to _continue, but instead of running when the continue button is pressed, it runs automatically before or after the typewriter starts/finishes typing. For example, if I just put the number 2 (no quotation marks) in my ExecContent, it will run before the Typewriter starts on Content Number 2.
					},
				}
			},

I know the function works, it just doesn’t run using exec

@artifizzer

make sure the richtext checkbox is ticked for TextLabel
also could you print(content) and post it here so we can check if its format is malformed

nevermind, i fixed it

Is there someway to update a dialogue inside of a layer after the dialogue has been created?
i want to grab the text to use from a variable but that variable is only updated after a certain point inside of the dialogue, so how should i go about doing that

I must say this is a great module, i have only encountered one problem: the reply buttons for most themes (mainly cinematic) do not play nice on mobile, often going tiny and sometimes even below ui elements of the phone itself (the little white bar on the bottom of the screen to be exact) apart form that its a great module!

@artifizzer can you please tell me how I can go to different replies based on a value?

local dialogueKitModule = require(script.Parent.Parent.DialogueKit)
local testPrompt = workspace:WaitForChild("Map"):WaitForChild("NPCs"):WaitForChild("Thomas")

local function showUI()
	local frame = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui"):WaitForChild("Boats"):WaitForChild("Wrapper")
	local TweenService = game:GetService("TweenService")
	
	frame.GroupTransparency = 1
	frame.Visible = true
	local tween = TweenService:Create(frame, TweenInfo.new(0.5), {GroupTransparency = 0})
	tween:Play()
end

testPrompt:WaitForChild("ProximityPrompt").Triggered:Connect(function(player)
	dialogueKitModule.CreateDialogue({
		InitialLayer = "Layer1",
		SkinName = "DefaultDark", -- Change to your installed skin, e.g., DefaultLight for a bright look.
		Config = script.Config, -- Your settings go here (stored in the Config folder).

		Layers = {
			Layer1 = {
				Dialogue = {
					"Hi there."
				},
				DialogueSounds = {},
				DialogueImage = "rbxassetid://13877485530",
				Title = "Miner Joe",

				Replies = {
					reply1 = {
						ReplyText = "Can I have the starter quest?",
						ReplyLayer = "Layer3"
					},
					goodbye1 = {
						ReplyText = "Nevermind",
						ReplyLayer = nil
					}
				},

				Exec = {}
			},
			
			Goodbye1 = {
				Dialogue = {
					"Here you go! Enjoy."
				},
				DialogueSounds = {},
				DialogueImage = "rbxassetid://13877485530",
				Title = "Miner Joe",

				Replies = {
					goodbye2 = {
						ReplyText = "Thank you",
						ReplyLayer = nil
					}
				},

				Exec = {}
			},
			
			Goodbye2 = {
				Dialogue = {
					"You already have the quest."
				},
				DialogueSounds = {},
				DialogueImage = "rbxassetid://13877485530",
				Title = "Miner Joe",

				Replies = {
					goodbye2 = {
						ReplyText = "Okay",
						ReplyLayer = nil
					}
				},

				Exec = {}
			},
		}
	})
end)

Sharing an update here, for Patch 1 I’m working on a node editor in case you don’t want to create the dialogues in scripts. Should make your workflows a lot easier!

(Still it’s early stages and I plan to finish this soon!)

1 Like

The Node editor looks amazing – that would be an awesome asset.
Looking forward to that !!

For some reason the nodes I made don’t save after I press close.

1 Like

I just used if statements to check on the value and then give a different table depending on the value.

Groundbreaking effort! Looks incredible

how can i do that in my script? give an example

Just what I was looking for my project, thank you!

Can you make the test place uncopylocked?

I’ve been having the same issue, any fix?

Edit: nvm I just used the script

this is the coolest dialogue kit ever thank you so much man