for i,v in pairs(game.Players:GetPlayers()) do
if (v.Character.HumanoidRootPart.Position-Plr.Character.HumanoidRootPart.Position).Magnitude <= 250 then
VisualEvent:FireClient(v,Plr,"HitHumanoid",object,position,normal)
end
end
does not replicate for other players except for the player that makes it fire. The player uses a tool, fires a remote to the server, and then the server fires the remote back to all clients.
It printed but it did print at any distance. It also still didnt print in the other player. Both local and server scripts are inside a tool if that has to do with anything. The OnClientEvent is on the same local script that fires to the server script.
It seems like you need to exclude the Plr player from GetPlayers(). Add something like if v.Name~=Plr.Name then
Also, does :FireAllClients() return any errors?
This loop goes through every player in the array. v is each player, not GetPlayers() itself. Player.Character will give the character of the player – he isn’t trying to get any players from characters.