Dialouge System Similar to Field Trip Z

drag this into roblox studio , can be empty baseplate whatever you want

I know how to do this. :slightly_smiling_face:

Hope it helped let me know if you have any issues

no, everything works fine, thank you for letting me know about this

Your welcome, i am going to go to bed. Glad I could help

good night! :slightly_smiling_face:

local Message = game.ReplicatedStorage:WaitForChild(“Message”) — StringValue
local Speaker = Message:WaitForChild(“Speaker”) — StringValue

local player = game.Players.LocalPlayer
local DialogueFrame = player.PlayerGui:WaitForChild(“DialogueGui”).DialogueFrame
local RunService = game:GetService(‘RunService’)
local UserInputService = game:GetService(“UserInputService”)

–Localize
local instance,newRay = Instance.new,Ray.new
local v2,v3,cf,udim2 = Vector2.new,Vector3.new,CFrame.new,UDim2.new
local insert,random,abs = table.insert,math.random,math.abs

local ValidClasses = {
[“MeshPart”] = true; [“Part”] = true; [“Accoutrement”] = true;
[“Pants”] = true; [“Shirt”] = true;
[“Humanoid”] = true;
}

local function RenderHumanoid(Model, Parent, MainModel)
local ModelParts = Model:GetDescendants()
for i=1, #ModelParts do
local Part = ModelParts[i]

	if ValidClasses[Part.ClassName] then

		local a			= Part.Archivable
		Part.Archivable	= true

		local RenderClone	= Part:Clone()
		Part.Archivable	= a

		if Part.ClassName == "MeshPart" or Part.ClassName == "Part" then
			PartUpdater = RunService.Heartbeat:Connect(function()
				if Part then
					RenderClone.CFrame = Part.CFrame
				else
					RenderClone:Destroy()
					PartUpdater:Disconnect()
				end
			end)
		elseif Part:IsA("Accoutrement") then
			PartUpdater = RunService.Heartbeat:Connect(function()
				if Part then
					if RenderClone.Handle then
						RenderClone.Handle.CFrame = Part.Handle.CFrame
					end
				else
					RenderClone:Destroy()
					PartUpdater:Disconnect()
				end
			end)
		elseif Part.ClassName == "Humanoid" then
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.FallingDown,			false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Running,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.RunningNoPhysics,	false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Climbing,			false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.StrafingNoPhysics,	false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Ragdoll,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.GettingUp,			false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Jumping,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Landed,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Flying,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Freefall,			false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Seated,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.PlatformStanding,	false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Dead,				false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Swimming,			false)
			RenderClone:SetStateEnabled(Enum.HumanoidStateType.Physics,				false)
		end

		RenderClone.Parent = Parent
	end 
end

end

Message:GetPropertyChangedSignal(“Value”):Connect(function()
DialogueFrame.Dialogue.Text = Message.Value
script.DialogueSound:Play()
end)

Speaker:GetPropertyChangedSignal(“Value”):Connect(function()
DialogueFrame:TweenPosition(UDim2.new(0.55, 0,0.139, 0))

print("New Speaker: "..Speaker.Value)



local Character			= workspace[Speaker.Value]


--Basic setup
local ViewPort			= DialogueFrame.ViewportFrame

--Settings
local Offset			= cf(0,1,-6)

--Create the viewport camera
local Camera		= instance("Camera")
ViewPort.CurrentCamera	= Camera


--Let the world load before starting
--wait(1)


local function Render()
	ViewPort:ClearAllChildren()
	--Render the character
	local Char = instance("Model")
	Char.Name = Speaker.Value
	Char.Parent = ViewPort
	RenderHumanoid(Character,Char)
	DialogueFrame.PlayerImage.nameLabel.Text = Char.Name <--- textLabel
end

--Handle changes
Character.DescendantAdded:Connect(Render)
Character.DescendantRemoving:Connect(Render)

--Initialize
Render()

coroutine.resume(coroutine.create(function()
	CameraUpdater = RunService.Heartbeat:Connect(function()
		if Character.HumanoidRootPart then
			Camera.CFrame =  cf(Character.HumanoidRootPart.CFrame:toWorldSpace(Offset).p, Character.HumanoidRootPart.CFrame.p)
		end
	end)
end))

end)

2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.