FireClient: player argument must be a Player object

This thing was disturbing me since 2020, hope someone can help me.

game.Players.PlayerAdded:Connect(function()
	local Remote = game.ReplicatedStorage.RemoteEvent
	local Player = game.Players.LocalPlayer

	Remote:FireClient(Player)
end)

This is because you assigned Player as the local player in a server-sided script.

game.Players.PlayerAdded:Connect(function(Player)
	game.ReplicatedStorage.RemoteEvent:FireClient(Player)
end)
2 Likes

You forgot the player parameter from the callback function connected to the PlayerAdded event.

--server
local rs = game:GetService("ReplicatedStorage")
local re = rs:WaitForChild("RemoteEvent")
local players = game:GetService("Players")

players.PlayerAdded:Connect(function(Player)
	re:FireClient(Player)
end)
--client
local rs = game:GetService("ReplicatedStorage")
local re = rs:WaitForChild("RemoteEvent")

re.OnClientEvent:Connect(function()
	--do code
end)

It’s also best to declare constants (variable with values which don’t change) outside of loops/callbacks connected to events which fire multiple times.

1 Like