Remote Event queries

Hey Guys,
I am having a bit of trouble using remote events, and I am trying to pass a clients sound ID they have inputted in a GUI element to the server and back to all clients to play a song on the whole server, using remote event arguments but I cannot seem to be able to pass any argument expect the player which is included by Roblox, and the server script only fires back to the client that sent the request and not all the other clients

/local side to the server

-- local side to server
local id = script.Parent.Parent.SoundID.Text
local remotes = 
script.Parent.MouseButton1Click:Connect(function(player,id) -- when clicked 
remotes:FireServer(player,id) -- fires the server with these arguments

(I have added a few print statements to check if the sound ID has been passed through the local script to the server)

/server side to All clients
– to all clients from the server request

local remotes = game:GetService("ReplicatedStorage"):WaitForChild("Requests"):WaitForChild("Server")

local remotes2 = 
game.Workspace.ID.SurfaceGui.TextLabel.Text = id
print(id) -- checks to see if the ID went to the server
remotes2:FireAllClients(player,id) -- sends the ID back to ALL clients

/all clients to play the ID from the server

local remotes2 = game:GetService("ReplicatedStorage"):WaitForChild("Requests"):WaitForChild("Client")
local sound = script.Parent.Client -- sound
remotes2.OnClientEvent:Connect(function(player,id) -- arguments from the server
print(id) -- checks to see if the ID has made it to all clients
sound.SoundId = "rbxassetid://" -- from the server
wait(0.04) -- small wait to load the asset
sound:Play() -- play same ID for all clients

I wonder if there is another way to transfer a number value like an ID to the server and then back to all clients and how to pass arguments through a remote event and ending up on the server but when I tried it it just prints the ID as “nil” which does not play on the server and shows the argument has not been passed on to the server, I am not 100% sure that a remote event is needed here but it is only one-way communication and this is only needed to fire once because the all clients remote event will give feedback to all players including the player who fired the remote event to know that their song is on the whole server. Any suggestions on how I should do this would be greatly appreciated.

Hi! Ur problem is in the fireing events. Server knows which client has fire the server, so when ur fireing u shouldnt include a player as a first argument, ur first and only argument shout be Id.

The same mistake is when ur fireing all clients. U shouldnt include player here since ur fireing that to all clients/players

Remove the player argument:

Remove the arguments in the function:

when i remove the player it thinks the id is the player as its first parameter and prints “PlayerName” rather than the Sound ID they put in and this gives an error saying, “unable to cast Instance to Int64”
this is because a Player name is not an asset ID
the ID was in the function of the player who IS sending to the server but neither the Server or the other Clients recieve any arguments on the ID and just returns the Players name

Hey guys, I have found the root of the problem,
you were right @MauroNr1 and @nuttela_for1me for removing the player parameters but you [Need] the player parameters in the Server Script and the receiving Client script in the functions because the first parameter is always the player but you do not need it in the Sending Client’s script!

now the ID passes through the server and client’s script
Thanks for the help!

Here is the video I found which finally got it solved!
watch at timestamp 4:40, By ScriptGuider