Server Event Fires all client not excluding the sender one

Hello I tried to make a script that fire other clients except the people who sent data to server
but it fires all client not others and it don’t fire back to client only one player but it fires all client

with part in workspace is fires all client
with part in player character is fires other client

ignore discord notification sound

Server:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local MyRemoteEvent = ReplicatedStorage:WaitForChild("MyRemoteEvent")

MyRemoteEvent.OnServerEvent:Connect(function(player, part, pos, rot)
	for _, otherPlayer in ipairs(game.Players:GetPlayers()) do
		if otherPlayer ~= player then
			MyRemoteEvent:FireClient(otherPlayer, part, pos, rot)
		end
	end
end)

local MRE = game.ReplicatedStorage:WaitForChild("MyRemoteEvent")

Client Receive:
MRE.OnClientEvent:Connect(function(part,pos,rot)
	print("received")
	part.Position = pos
	part.Orientation = rot
end)

Client Send:

local MRE = game.ReplicatedStorage:WaitForChild("MyRemoteEvent")

workspace.DescendantAdded:Connect(function(instance)
	if instance:IsA("BasePart") then
		instance.Changed:Connect(function(prop)
			if prop == "Position" and "Orientation" then
				MRE:FireServer(instance, instance.Position,instance.Orientation)
			end
		end)
	end
end)

I tried to solve the problem with this script but it doesn’t work actually

local MRE = game.ReplicatedStorage:WaitForChild("MyRemoteEvent")
local player = game.Players.LocalPlayer

MRE.OnClientEvent:Connect(function(plr, part,pos,rot)
	if plr ~= player then
		print("received")
		part.Position = pos
		part.Orientation = rot
	end
end)

First I notice just a mistake in the script

When you are called if “Orientation” then that is always true. Did you mean to check if Orientation is a property or prop == “Orientation”? prop probably can’t be both so use or.
Also, in the server script you are probably calling all players with instance.Changed . Every player would fire the event so on the server this will run:

	for _, otherPlayer in ipairs(game.Players:GetPlayers()) do
		if otherPlayer ~= player then
			MyRemoteEvent:FireClient(otherPlayer, part, pos, rot)
		end
	end

If you have Player 1 fire this event the script will ignore Player 1 and FireClient(Player 2) then Player 2 will do the same for Player 1. It is the same thing as firing all clients but in different order, and if you have more than 3 players the event will fire more than one time for each player.
If you want a specific player not to be chosen you have to specify the player outside of the OnServerEvent, but currently, you are checking a changing player variable.

Edit: Try setting BasePart:SetNetworkOwner(nil) I think if the client never owns the physics then instance.Changed will only fire for the client that moved it.