Text box changes not happening

Most of the stuff in this script works however the text is meant to = the input from a textbox and the text is staying the same and not changing

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = game:GetService("ReplicatedStorage"):WaitForChild("radioremote")


remoteEvent.OnServerEvent:Connect(function(Player)
	local PlayerGui = Player.PlayerGui;
	local textboxconfirm = PlayerGui.RadioGUI.textboxenter.done
	local textbox = PlayerGui.RadioGUI.textboxenter.TextBox
	local callsignframe = PlayerGui.RadioGUI.Callsign
	
	textboxconfirm.MouseButton1Click:Connect(function()
		local clone = game:GetService("ReplicatedStorage").REPLICATION:Clone()
		
		clone.Parent = PlayerGui.RadioGUI.ScrollingFrame
		
		clone.MESSAGE.Text = PlayerGui.RadioGUI.textboxenter.TextBox.Text
		
		clone.CALLSIGN.Text = callsignframe.TextBox.Text
	end)
	
end);

The Text is in Client and so when you try to receive it there’s nothing its blank as, its the server checking the the server side of the text box which is blank(the Server checks the text and since there nothing as its blank, so you have to tell the server that this is the text by using remote events or remote functions

I’ve done that and it still doesn’t work heres my script:

local ReplicatedStorage = game:GetService("ReplicatedStorage")

local remoteEvent = ReplicatedStorage:WaitForChild("radioclientremote")

local function onserver()
	local textbox = script.Parent.Parent.textboxenter.TextBox.Text
	local textboxc = script.Parent.Parent.textboxenter.done
	local callsignframe = script.Parent.Parent.Callsign.TextBox.Text
	local frame = game:GetService("ReplicatedStorage").REPLICATION
	
	textboxc.MouseButton1Click:Connect(function()
		frame.MESSAGE.Text = textbox
		frame.CALLSIGN.Text = callsignframe
	end)
end


remoteEvent.OnClientEvent:Connect(onserver)

I think you made the script in a very complicated way, you could just put everything in a local script. Could you tell me what fires the remote event and is the script supposed to be visible for everyone when the remote event gets fired.

You shouldn’t be using the server to make client UI changes, instead, fire a remote to the client to make a change if you wish to from the server.

Edit: You don’t have to have to use a RemoteEvent to change a GUI Element. You can only do that with a LocalScript.

The following is me demonstrating RemoteFunction before I realized that I don’t have to put more complicated lines of code when I can just change the GUI in the LocalScript.

Like others said, you tried changing the GUI Elements with a server script. You can only do that locally. I saw you used a RemoteEvent. You could use RemoteFunction instead of that so the server response is sent back to the client.

– Client Script

local response = remoteFunction.InvokeServer()
if response then
      -- ur gui script here
end

– Server Script

remoteFunction.OnServerInvoke:Connect(function(Player)
      return response
end)
I don't know if I'm correct, it's my first time trying RemoteFunction.

Basically it’s meant to clone a frame which will be visible to the server hence why I used a remote.

I want it so everyone can see the UI cloning hence why I used a remote.