Information GUI Messages not going through

  1. What do you want to achieve? Keep it simple and clear!
    So, recently I was making a sort of information bar (sort of like the one in KH). A player with permissions would open a GUI and send a message to everyone else onto that information bar.
  2. What is the issue? Include screenshots / videos if possible!
    The problem is that the bar’s message and it’s wait times do not match up with the player who set it to something. So what happens is the bar appears for half a second without the message as well.

Here’s some screenshots on what it’s meant to be like and extra info.

Information Changer GUI (Only shows on the person who says command's screen.

image

Information Bar

(Basically: Information Bar should take in the message from the player’s screen and put it on everyone else’s screen in the text spot)

  1. What solutions have you tried so far? Did you look for solutions on the Developer Hub?
    I’ve tried to use bindable events and experiment with remote events a little more but I couldn’t get it to work, in fact anything I changed would just cause it to break even more. I’ve looked around here but I haven’t found any topics similar.

Below is everything you need to know on my code:

Scripts + Extra
CustomCommand (Server Script)
local players = {"ChallengeDev", "DantesWorId"}

function onChatted(msg,speaker)
	local source = string.lower (speaker.Name)
	msg = string.lower (msg)
	if msg == ":information" or msg == "/e :information" then
		game.ReplicatedStorage.SENDINFO:FireClient(speaker)
	end
end


game.Players.PlayerAdded:Connect(function(player)
	for i = 1, #players do
		if players[i] == player.Name then
			player.Chatted:Connect(function(msg) 
				onChatted(msg, player) 
			end)
		end
	end
end)
Submit (Local Script)
script.Parent.MouseButton1Click:Connect(function(player)
	script.Parent.Parent.Visible = false
	game.ReplicatedStorage.INFORMATION:FireServer(player)
end)



game.ReplicatedStorage.SENDINFO.OnClientEvent:Connect(function(speaker)
	script.Parent.Parent.Visible = true
end)


Script (ServerScript)
game.ReplicatedStorage.INFORMATION.OnServerEvent:Connect(function()
	game.ReplicatedStorage.INFORMATION:FireAllClients()
end)
InfoScript (Local Script)
local GUI = script.Parent.Parent
local frame = script.Parent

local Player = game:GetService('Players').LocalPlayer:WaitForChild('PlayerGui')

wait()

local InfoChange = Player.INFORMATIONCHANGER.Frame

local waitTime = Player.INFORMATIONCHANGER.Frame.Wait
local deleteTime = Player.INFORMATIONCHANGER.Frame.WaitDelete

local Sound = frame.Sound


local tweener = frame.ImageLabel

local ts = game:GetService("TweenService")
local goal = {}
goal.ImageTransparency = 0.3
local tinfo = TweenInfo.new(1, Enum.EasingStyle.Elastic)
local t = ts:Create(tweener, tinfo, goal)




local goal2 = {}
goal2.ImageTransparency = 1
local tinfo2 = TweenInfo.new(1, Enum.EasingStyle.Elastic)
local t2 = ts:Create(tweener, tinfo2, goal2)








game.ReplicatedStorage.INFORMATION.onClientEvent:Connect(function()
	
	
	
	wait(waitTime.Text)
	
	Sound:Play()
	
	frame.Visible = true
	
	if InfoChange.DangerLevel.Text == "1" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(252, 255, 216)
		frame.TextLabel.Text = "INFORMATION"
	elseif InfoChange.DangerLevel.Text == "2" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(255, 89, 92)
		frame.TextLabel.Text = "DANGER"
	elseif InfoChange.DangerLevel.Text == "3" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(96, 255, 189)
		frame.TextLabel.Text = "INFORMATION"
	else
		frame.TextLabel.TextColor3 = Color3.fromRGB(252, 255, 216)
		frame.TextLabel.Text = "INFORMATION"
	end
	
	t:Play()
	
	
	
	frame.Edit.Text = InfoChange.Message.Text
	wait(deleteTime.Text)
	
	t2:Play()
	wait(0.1)
	frame.Visible = false
	
end)


Script Locations and Events

image

image

image

I’m pretty sure you need to pass the text and the WaitTime in the remote events.

In this part:

script.Parent.MouseButton1Click:Connect(function(player)
	script.Parent.Parent.Visible = false
	game.ReplicatedStorage.INFORMATION:FireServer(player)
end)

Instead of passing the player as an argument, pass the infos that you need, so you can then get them in the server and send them to all the players (All Clients)

1 Like

Sorry it took so long for me to reply, I have been busy.

Anyways, I passed what I needed, through, but it doesn’t seem to work. The GUI pops up but none of the wait times nor the message get put on there, even for my screen.

Here’s the changes:

game.ReplicatedStorage.INFORMATION.OnServerEvent:Connect(function(message, wait1, waitdelete, player)
	game.ReplicatedStorage.INFORMATION:FireAllClients(message, wait1, waitdelete, player)
end)
local message = script.Parent.Parent.Message.Text
local wait1 = script.Parent.Parent.Wait.Text
local waitdelete = script.Parent.Parent.WaitDelete.Text
script.Parent.MouseButton1Click:Connect(function(message, wait1, waitdelete, player)
	script.Parent.Parent.Visible = false
	game.ReplicatedStorage.INFORMATION:FireServer(message, wait1, waitdelete, player)
end)

game.ReplicatedStorage.INFORMATION.onClientEvent:Connect(function(message, wait1, waitdelete, player)
	
	
	
	wait(wait1)
	
	Sound:Play()
	
	frame.Visible = true
	
	if InfoChange.DangerLevel.Text == "1" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(252, 255, 216)
		frame.TextLabel.Text = "INFORMATION"
	elseif InfoChange.DangerLevel.Text == "2" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(255, 89, 92)
		frame.TextLabel.Text = "DANGER"
	elseif InfoChange.DangerLevel.Text == "3" then
		frame.TextLabel.TextColor3 = Color3.fromRGB(96, 255, 189)
		frame.TextLabel.Text = "INFORMATION"
	else
		frame.TextLabel.TextColor3 = Color3.fromRGB(252, 255, 216)
		frame.TextLabel.Text = "INFORMATION"
	end
	
	t:Play()
	
	
	
	frame.Edit.Text = message
	wait(waitdelete)
	
	t2:Play()
	wait(0.1)
	frame.Visible = false
	
end)