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

How do you make NPC dialog from ScreenGuis?

I want it so when you click on the NPC that the dialog appears. It shows that I can click on it but the dialog isn't popping up. This is the script that I am using.

NPC = script.Parent
Screen = game.StarterGui.FirstTextGui
Frame = Screen.FirstTextBox
Text = Frame.FirstText
Button = Text.NextButton
Talk = false

function onClicked()
	if Talk == false then
		Screen.Enabled = true
		Frame.Visible = true
		Text.Visible = true
		Button.Visible = true
		Talk = true
	elseif Talk == true then
		Screen.Enabled = false
		Frame.Visible = false
		Text.Visible = false
		Button.Visible = false
		Talk = false
	end
end

NPC.ClickDetector.MouseClicked:connect(onClicked)

It doesn't seem to work so please try to help me as much as possible since I am very new at Lua.

1 answer

✓ Accepted answer

this is the first question I've ever answered I've tested it, it works :) using the StarterGui is not a good way to store your information or gui idk you should maybe store it somewhere like inside of the ReplicatedStorage or simply just inside the script

quick thing yu don't need all that Visible stuff if so throw it into one frame and only visible that one

your error was that in the startergui it enables but that doesn't show to anyone if it was to work it would throw it into everyone screen so coding has to know where to put it im probably really bad at explaining lol

wait(0.25)
local NPC = script.Parent
local Screen = script:WaitForChild('FirstTextGui')
local Talk = false

function onClicked(player) -- the player which clicked
local startergui = player:WaitForChild('PlayerGui') -- the players gui shown only on the for them
local screen = Screen:Clone() -- clone it
    if Talk == false then
		screen.Parent = startergui -- now paste it into the players gui
        Talk = true
    elseif Talk == true then
		if startergui:FindFirstChild(Screen.Name) then -- if found the gui
		startergui:FindFirstChild(Screen.Name):Destroy() -- kill it
		end
        Talk = false
    end
end

NPC.ClickDetector.MouseClick:connect(onClicked)

if it doesn't work uhh your doing something wrong

hopefully it works click the answer button :D cuz I need to answer one question atleast

2 comments

0

This is fantastic! I had to tinker it a little bit, but it still worked fine!

0

:D

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