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)
