Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

How to make dialogue only appear once a quest is completed?

(I asked this question before though but the answer I got isn't working)

I made this quest system and along with it, a dialogue system. I made the dialogue to work so when you touch a part then a gui would pop up with a dialogue prompt. It functions fine but I only want the dialogue to appear when a specific quest has been completed.

Quest Completion Marker(for reference of how the mission becomes assigned complete):

script.Parent.Touched:connect(function(touchedpart)
local player = game.Players:GetPlayerFromCharacter(touchedpart.Parent)

if player then
if player:FindFirstChild("Quest6") and player:FindFirstChild("Quest6").Value == "-[Get a Water Tank]" then
player.Quest6.Value = "-[Completed]"
game.Workspace.Data[player.Name].Socks.Value = game.Workspace.Data[player.Name].Socks.Value + 1

        end

    end

 end)

Dialogue System:

local debounce = false

function getPlayer(humanoid) 
local players = game.Players:children() 
for i = 1, #players do 
if players[i].Character.Humanoid == humanoid then return players[i] end 
end 
return nil 
end 

function onTouch(part) 

local human = part.Parent:findFirstChild("Humanoid") 
if (human ~= nil) and debounce == false then

debounce = true

local player = getPlayer(human) 

if (player == nil) then return end 

script.Parent:clone().Parent = player.PlayerGui
wait(17)
debounce = false
player.PlayerGui.OnTouchGui:remove()
wait()
debounce = false
wait(17)
end
end


script.Parent.Parent.Touched:connect(onTouch) 

1 answer

✓ Accepted answer

What I would do is create a variable called "completed" and set it to false. Then you can check if the player has completed the quest by setting the completed variable to true when they have completed it.

Example:

local completed = false

--Example for completing the quest

workspace.Part.Touched:connect(function()
	completed = true

	 -- Checks if completed is true
	if completed == true then
		-- Dialogue 
	else -- If the player has not they will see the alt Dialogue
		-- Alt Dialogue
	end	
end)

Hope this helps.

This discussion is preserved as it was. New answers, comments, and votes are closed.