Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Change Text of Gui for everyone when a player clicked ClickDetector and fired RemoteEvent? [Solved]

Hi, I'm trying to figure out how to make a text change for everyone when a player has clicked a certain click detector. I'm assuming I need to use FireAllClients() but I'm not sure how to do it as I've never used it before. I also tried looking on the wiki, but couldn't find anything. If anyone could have that'll be great.

The script in the ClickDetector

local RepStorage = game:GetService("ReplicatedStorage")
local OpenN = RepStorage:WaitForChild("OpenNote")
local CD = game.Workspace.Cave.Bench.Paper.paper
 
local function clicked()
	OpenN:FireServer()
end

CD.ClickDetector.MouseClick:Connect(clicked) 

The script in ServerScriptService


local CD = game.Workspace.Cave.Bench.Paper.paper.ClickDetector

local Time = 0.08

game.ReplicatedStorage.OpenNote.OnServerEvent:Connect(function(player)
	
local StartingText = player.PlayerGui.StoryLine.PostCrashText.Text
local Task = player.PlayerGui.StoryLine.PostCrashText.Task.Desc
local TaskFrame =player .PlayerGui.StoryLine.PostCrashText.Task

local Paper = game.Workspace.Cave.Bench.Paper.paper
local PaperDecal = game.Workspace.Cave.Bench.Paper.paper.Decal

-- // Player Found Note \\ --
CD:Remove()
Paper.Transparency = 1
PaperDecal.Transparency = 1
Task.Text = " "
StartingText.Text = " ".. player.Name
wait(Time)
StartingText.Text = " ".. player.Name.." h"
wait(Time)
StartingText.Text = " ".. player.Name.." ha"
wait(Time)
StartingText.Text = " ".. player.Name.." has"
wait(Time)
StartingText.Text = " ".. player.Name.." has f"
wait(Time)
StartingText.Text = " ".. player.Name.." has fo"
wait(Time)
StartingText.Text = " ".. player.Name.." has fou"
wait(Time)
StartingText.Text = " ".. player.Name.." has foun"
wait(Time)
StartingText.Text = " ".. player.Name.." has found"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a n"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a no"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a not"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a note"
wait(Time)
StartingText.Text = " ".. player.Name.." has found a note!"

1 answer

✓ Accepted answer

Put this in a script in the workspace:

local click = workspace.Click:WaitForChild("ClickDetector")
local Player = game.ReplicatedStorage:WaitForChild("Player")

game.Players.PlayerAdded:Connect(function(player)
	local ScreenGui = Instance.new("ScreenGui",player.PlayerGui)
	local Text = Instance.new("TextLabel",ScreenGui)
	Text.Name = "TextLabel"
	Text.Position = UDim2.new(0.5, 0,0.75, 0)
	Text.Size = UDim2.new(0.75, 0,0.25, 0)
	Text.AnchorPoint = Vector2.new(0.5, 0.5)
	Text.Font = Enum.Font.Fantasy
	Text.TextScaled = true
	Text.TextWrapped = true
	Text.Text = "Search the paper"
    
    click.MouseClick:Connect(function(player)
	   Player:FireAllClients(player.Name)
	   click:Destroy()
    end)
end)

put this in a modulescript in the ReplicatedStorage and name it "TypeWriter":

local SOURCE_LOCALE = "en"
 
local LocalizationService = game:GetService("LocalizationService")
local Players = game:GetService("Players")
 
local player = Players.LocalPlayer
 
local translator = nil
pcall(function()
	translator = LocalizationService:GetTranslatorForPlayerAsync(player)
end)
if not translator then
	pcall(function()
		translator = LocalizationService:GetTranslatorForLocaleAsync(SOURCE_LOCALE)
	end)
end
 
local TypeWriter = {}
 
local defaultConfigurations = {
	delayTime = 0.2,
	extraDelayOnSpace = true
}
 
function TypeWriter.configure(configurations)
	for key, value in pairs(defaultConfigurations) do
		local newValue = configurations[key]
		if newValue ~= nil then
			defaultConfigurations[key] = newValue
		else
			warn(key .. " is not a valid configuration for TypeWriter module")
		end
	end
end
 
function TypeWriter.typeWrite(guiObject, text)
	guiObject.AutoLocalize = false
	guiObject.Text = ""
	local displayText = text
	if translator then
		displayText = translator:Translate(guiObject, text)
	end
	for first, last in utf8.graphemes(displayText) do
		local grapheme = string.sub(displayText, first, last)
		guiObject.Text = guiObject.Text .. grapheme
		if defaultConfigurations.extraDelayOnSpace and grapheme == " " then
			wait(defaultConfigurations.delayTime)
		end
		wait(defaultConfigurations.delayTime)
	end
end
 
return TypeWriter

then place this in a localscript in the StarterGui with Parent StarterGui:

-- services
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Player  = game.Players.LocalPlayer
local PlayerName = game.ReplicatedStorage.Player
 
-- Require module
local Player = Istance.new("RemoteEvent", game.ReplicatedStorage)
Player.Name = "Player"
game.ReplicatedStorage.Player.OnClientEvent:Connect(function(TheChosen)
	print(TheChosen)
	if TheChosen == Player.Name then
		local TypeWriter = require(ReplicatedStorage:WaitForChild("TypeWriter"))
        TypeWriter.typeWrite(Player.PlayerGui.ScreenGui.TextLabel, "You found it")
	else
		local TypeWriter = require(ReplicatedStorage:WaitForChild("TypeWriter"))
        TypeWriter.typeWrite(Player.PlayerGui.ScreenGui.TextLabel, TheChosen.."found it")
	end
end)

Test this in a empty place/baseplate. If it works, you can adapt it.

5 comments

0

thanks

0

If this helped you ???

0

i didn't use this script, but i used part of it to make my own script

0

ok

0

thanks though

This discussion is preserved as it was. New answers, comments, and votes are closed.