Sungmingamerpro13

New DialogueScript Styled Chainlemonade Studios

Jun 8th, 2026
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CSS 2.48 KB | None | 0 0
  1. local ReplicatedStorage = game:GetService("ReplicatedStorage")
  2. local Values = ReplicatedStorage:WaitForChild("Values")
  3. local Message = Values:WaitForChild("Message")
  4. local Speaker = Values:WaitForChild("Speaker")
  5.  
  6. local Player = game.Players.LocalPlayer
  7. local DialogueFrame = Player.PlayerGui:WaitForChild("DialogueGui").DialogueFrame
  8.  
  9. local viewportCamera = Instance.new("Camera", DialogueFrame.PlayerImage.Icon)
  10. local RunService = game:GetService('RunService')
  11.  
  12. -- Variables
  13. DefaultMessageDelayTime = 4
  14. LetterInvertal = 0.05
  15. MessageWaitSigns = {',', '?', '.'}
  16. MessageWaitSignDelay = 1
  17.  
  18. function playSound(sound_id) -- Plays typing sound
  19.     local sound = Instance.new("Sound",game.ReplicatedStorage)
  20.     sound.SoundId = sound_id
  21.     sound.Volume = .1
  22.     sound.PlayOnRemove = true
  23.     sound:Destroy()
  24. end
  25.  
  26. local function Animate(Text, MessageDelayTime)
  27.     for i = 1,#Text,1 do
  28.         DialogueFrame.Dialogue.Text = string.sub(Text,1,i)
  29.         playSound("rbxassetid://915576050")
  30.         for _, L in pairs(MessageWaitSigns) do
  31.             if string.sub(Text,i,i) == L then
  32.                 wait(MessageWaitSignDelay)
  33.             end
  34.         end
  35.         wait(LetterInvertal)
  36.     end
  37.     if tonumber(MessageDelayTime) ~= nil then
  38.         wait(MessageDelayTime)
  39.     else
  40.         wait(DefaultMessageDelayTime)
  41.     end
  42.     DialogueFrame:TweenPosition(UDim2.new(0.55, 0, -1, 0), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1)
  43. end
  44.  
  45. local function updateCharacter(character)
  46.  
  47.     for i, v in pairs(DialogueFrame.PlayerImage.Icon.Character:GetDescendants()) do
  48.         v:Destroy()
  49.     end
  50.     for i, v in pairs(character:GetChildren()) do
  51.         if v:IsA("BasePart") or v:IsA("Accessory") or v:IsA("Shirt") or v:IsA("Pants") or v:IsA("ShirtGraphic") or v:IsA("BodyColors") or v:IsA("Humanoid") then
  52.             local new = v:Clone()
  53.             new.Parent = DialogueFrame.PlayerImage.Icon.Character
  54.             if v:IsA("Humanoid") then
  55.                 new.DisplayDistanceType = Enum.HumanoidDisplayDistanceType.None
  56.             end
  57.         end
  58.     end
  59.     DialogueFrame.PlayerImage.Icon.CurrentCamera = viewportCamera
  60.     viewportCamera.CFrame = character.PrimaryPart.CFrame * CFrame.new(0, 1.5, -2.25) * CFrame.Angles(0, math.rad(180), 0)
  61.    
  62. end
  63.  
  64. Message:GetPropertyChangedSignal("Value"):Connect(function()
  65.     DialogueFrame:TweenPosition(UDim2.new(0.55,0,0.15,0), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1)
  66.     Animate(Message.Value)
  67. end)
  68.  
  69. Speaker:GetPropertyChangedSignal('Value'):Connect(function()
  70.     print("New Speaker: "..Speaker.Value)
  71.    
  72.     updateCharacter(workspace[Speaker.Value])
  73.     DialogueFrame.PlayerImage.Icon.nameLabel.Text = Speaker.Value
  74. end)
  75.  
Advertisement
Add Comment
Please, Sign In to add comment