I'm using a normal script, which looked like this:

local counter = 0

function playtext(hit)
    if counter < 1 then
        counter = counter + 1
        local clone = game.ReplicatedStorage.dialog3run:Clone()
        clone.Parent = game.ServerScriptService
        wait()
        game.ReplicatedStorage.dialog3run.Disabled = false
    end
end
script.Parent.Touched:Connect(playtext)

to clone a localscript that would clone another script into the localplayer's playergui. That looks like this:

game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
local clone = game.ReplicatedStorage.dialog3:Clone()
clone.Parent = game.Players.LocalPlayer.PlayerGui
game.ReplicatedStorage.dialog3.Disabled = false

I don't actually know if cloning it into serverscriptservice would run the script correctly, but im not sure where else to put it. that would be helpful to know. The localscript that the last one clones would go into the player's playergui, but either it or the last one is not functioning correctly. This script looks like this:

game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
startingboxd = Instance.new("ScreenGui", game.Players.LocalPlayer.PlayerGui)
startingboxd.Name = "completegui3"
startingd = Instance.new("TextLabel", game.Players.LocalPlayer.PlayerGui.completegui3)
	startingd.Text = "Hello? Is anyone here?"
		startingd.BackgroundTransparency = 1
			startingd.Position = UDim2.new(0.417, 0, 0.862, 0)
				startingd.Size = UDim2.new(0, 319, 0, 57)
					startingd.TextStrokeTransparency = 1
					startingd.Font = "Fantasy"
				startingd.TextSize = 30
			startingd.TextColor3 = Color3.new(1, 1, 1)
		startingd.TextTransparency = 1
wait()
	for iappear = 1, 0, -.1 do
		startingd.TextTransparency = iappear
			startingd.TextStrokeTransparency = iappear
		wait(.005)
	end
wait(3)
	for idisappear = 0, 1, .1 do
		startingd.TextTransparency = idisappear
			startingd.TextStrokeTransparency = idisappear
		wait(.005)
	end
wait(1)
print("madeitthrough")
game.Players.LocalPlayer.PlayerGui.completegui3:Destroy()