CCCPaste

New DialogueScript (SungExetior13RBLX Style)

local Message = game.ReplicatedStorage:WaitForChild("Message")
local Speaker = Message:WaitForChild("Speaker")
local HideDialogueEvent = Message:WaitForChild("HideDialogueEvent")

local player = game.Players.LocalPlayer
local DialogueFrame = player.PlayerGui:WaitForChild("DialogueGui").DialogueFrame

local camera = Instance.new("Camera", DialogueFrame)

function UpdateCharacter3(character)
	for i, v in pairs(DialogueFrame.PlayerFrame.PlayerFrame.Icon.WorldModel:GetDescendants()) do
		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
			v:Destroy()
		end

	end
	for i, v in pairs(character:GetChildren()) do
		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
			local new = v:Clone()
			new.Parent = DialogueFrame.PlayerFrame.PlayerFrame.Icon.WorldModel
		end
	end
	wait()
	DialogueFrame.PlayerFrame.PlayerFrame.Icon.CurrentCamera = camera
	camera.CFrame = DialogueFrame.PlayerFrame.PlayerFrame.Icon.WorldModel.Head.CFrame * CFrame.new(0, 0.2, -2) * CFrame.Angles(0, math.rad(180), 0)
end

function AnimateText(text)
	script.DialogueSound:Play()
	DialogueFrame.DialogueFrame.Message.Text = text
end

HideDialogueEvent.OnClientEvent:Connect(function()
	DialogueFrame:TweenPosition(UDim2.new(0.55,0,-1,0), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1)
end)

Message:GetPropertyChangedSignal("Value"):Connect(function()
	AnimateText(Message.Value)
end)

Speaker:GetPropertyChangedSignal("Value"):Connect(function()
	DialogueFrame:TweenPosition(UDim2.new(0.55,0,0.15,0), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 1)
	print("New Speaker: "..Speaker.Value)
	
	UpdateCharacter3(workspace[Speaker.Value])
	DialogueFrame.PlayerFrame.PlayerFrame.Icon.nameLabel.Text = Speaker.Value
end)