local player = game.Players.LocalPlayer local CreateDialogueEvent = game.ReplicatedStorage.CreateDialogueEvent local DialogueFrame = player.PlayerGui.DialogueGui.DialogueFrame local function playSound(sound_id) -- Plays typing sound local sound = Instance.new("Sound",game.ReplicatedStorage) sound.SoundId = sound_id sound.Volume = .1 sound.PlayOnRemove = true sound:Destroy() end local function textAnimate(content) -- Animates each letter for i=1,string.len(content) do DialogueFrame.TextLabel.Text = string.sub(content,1,i) playSound("rbxassetid://915576050") if string.sub(content,i,i) == "!" or string.sub(content,i,i) == "." or string.sub(content,i,i) == "?" then wait(1) elseif string.sub(content,i,i) == "," then wait(.5) else wait(.05) end end end CreateDialogueEvent.OnClientEvent:Connect(function(name, image_id, content) -- activates when called from the Server if not player:findFirstChild("secretEnding") then DialogueFrame.nameLabel.Text = name DialogueFrame.ImageLabel.Image = image_id DialogueFrame.TextLabel.Text = "" DialogueFrame.Visible = true textAnimate(content) end end)