I’m trying to make a player dialogue GUI its similar to this
but instead of changing to a random player like the picture up there
it didn’t even turn into a player like this:
https://gyazo.com/979c27f589c79474ae875404b85571f5
a random player should say “Yay!” but instead the teacher said it
script:
DialogueScript:
local StarterGui = game:GetService("StarterGui")
local createDialogueEvent = game.ReplicatedStorage.Remotes.createDialogueEvent
local hideDialogueEvent = game.ReplicatedStorage.Remotes.hideDialogueEvent
local setDialogueImageEvent = game.ReplicatedStorage.Remotes.setDialogueImageEvent
local richText = require(game.ReplicatedStorage.Modules.RichText)
local player = game.Players.LocalPlayer
local dialogueFrame = player.PlayerGui.MainGui.DialogueFrame
local function swooshSound()
local sound = Instance.new("Sound",game.ReplicatedStorage)
sound.PlaybackSpeed = 1
sound.Volume = 1
sound.PlayOnRemove = true
sound.SoundId = "rbxassetid://4845387138"
sound:Destroy()
end
hideDialogueEvent.OnClientEvent:Connect(function()
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, true)
swooshSound()
dialogueFrame:TweenPosition(UDim2.new(0.5,0,2,0),.1)
end)
createDialogueEvent.OnClientEvent:Connect(function(english,spanish)
if dialogueFrame.Position ~= UDim2.new(0.5,0,0.85,0) then
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.Backpack, false)
dialogueFrame:TweenPosition(UDim2.new(0.5,0,0.85,0),.1)
end
local ln = game:GetService("LocalizationService").RobloxLocaleId
local content = english
if ln == "en-us" then
content = english
elseif ln == "es-es" then
if spanish then
content = spanish
end
end
local textObject = richText:New(dialogueFrame.textFrame, content)
textObject:Animate(true)
end)
-- Viewport Script Starts Here
local function cleanVPF()
if dialogueFrame.ViewportFrame:FindFirstChildOfClass("Model") then
dialogueFrame.ViewportFrame:FindFirstChildOfClass("Model"):Destroy()
end
if dialogueFrame.ViewportFrame:FindFirstChildOfClass("Camera") then
dialogueFrame.ViewportFrame:FindFirstChildOfClass("Camera"):Destroy()
end
end
setDialogueImageEvent.OnClientEvent:Connect(function(charName,color)
dialogueFrame.nameLabel.TextColor3 = color
dialogueFrame.nameLabel.Text = charName
local vpCharacter = game.Workspace:FindFirstChild(charName)
if vpCharacter then
cleanVPF()
local obj = vpCharacter:Clone()
obj.Parent = dialogueFrame.ViewportFrame
local cam = Instance.new("Camera")
cam.Parent = dialogueFrame.ViewportFrame
cam.CFrame = CFrame.new(obj.Head.Position + (obj.PrimaryPart.CFrame.lookVector*2), obj.Head.Position)
dialogueFrame.ViewportFrame.CurrentCamera = cam
else
warn(charName .. " is not in ReplicatedStorage")
end
end)
MainScript:
local createDialogueEvent = game.ReplicatedStorage.Remotes.createDialogueEvent
local hideDialogueEvent = game.ReplicatedStorage.Remotes.hideDialogueEvent
local setDialogueImageEvent = game.ReplicatedStorage.Remotes.setDialogueImageEvent
local randomPlayername
local randomplayerid
local function getPlayerImage(player_id)
local content, isReady = game:GetService("Players"):GetUserThumbnailAsync(player_id, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
return content
end
local function getRandomPlayer()
local players = game.Players:GetPlayers()
local number = math.random(1,#players)
local randomplayers = players[number]
randomPlayername = randomplayers.Name
randomplayerid = randomplayers.UserId
end
wait(10)
setDialogueImageEvent:FireAllClients("Teacher", Color3.new(0, 0.384314, 1))
createDialogueEvent:FireAllClients("")
wait(0.5)
createDialogueEvent:FireAllClients("Hello!")
wait(2)
createDialogueEvent:FireAllClients("I'm Stephen Your teacher and today is a very special day for us Because today we are going Camping!")
wait(3)
setDialogueImageEvent:FireAllClients(getRandomPlayer(randomplayerid, randomPlayername) , Color3.new(0, 0.384314, 1))
createDialogueEvent:FireAllClients("Yay!")
Error:
Players.dirtandra123.PlayerGui.MainGui.DialogueScript:69: invalid argument #3 (string expected, got nil)
Any solutions??