How do I make this raycast car chassis server sided?

I am working on this Touge racing game, people will be able to race against each other and time themselves, but for some reason the wheels, sounds , and particle effects to not appear on other players. here’s what it looks like:
Screenshot (19) (1)
I tried using Fireserver but i have no clue how to execute that. Any ideas?

Is the car controlled by a local script?
Can you send the code snippet that controls the car?

By the way, RemoteEvents works basically like this:

--Client
rEvent:FireServer(...any) --fire while sending any serializable inputs to the server
rEvent.OnClientEventLConnect(function(...any) --function call
    --function
end) 
--Server
rEvent:FireClient(player, ...any) --fire while sending any serializable inputs to a specific player's client
rEvent:FireAllClients(...inputs) --fire while sending any serializable inputs to all player's client
rEvent.OnServerEvent:Connect(function(player, ...any) --function call with the caller as an input
    --function
end)

Remember, firing RemoteEvents from any client automatically sends that client to the server as an input, which is a Player instance.

If your using physics constraints or body movers, it should automatically be replicated to everyone, for example when a player enters a car; you give them network ownership of it and have them do the raycast suspension physics through the physics constraints or body movers they now have network ownership of

yes, it is controlled by a local script. and also sorry for the extremely late reply

-Parenting the wheels to the car:
local function setDebugTransparency(meshTrans, debugTrans)
for _,wheel in pairs(car.Wheels:GetChildren()) do
local newWheel = chargerwheel:Clone()
newWheel.Parent = wheels
wheel.Mesh.Transparency = debugTrans
wheel.AppearanceWheel.Transparency = debugTrans
wheel.AppearanceWheel.WheelMesh.Transparency = meshTrans

-tire smoke:
for _,wheel in pairs(car.Wheels:GetChildren()) do
local smoke = wheel.AppearanceWheel.Smoke
if math.abs(wheel.RotVelocity.Y) > 1 then
smoke.Enabled = true
else
smoke.Enabled = false
end
end
-tire marks:
for _,wheel in pairs(car.Wheels:GetChildren()) do
local Trail = wheel.AppearanceWheel.Mark.T

			wheel.AppearanceWheel.Mark.CFrame = wheel.CFrame * CFrame.new(0, -wheel.Size.Y/1.2, 0) * CFrame.Angles(math.rad(0), 90, 0)
			
			if math.abs(wheel.RotVelocity.Y) > math.abs(carSpeedFront) and soundslip > 0.5 then
				local smoke = wheel.AppearanceWheel.Smoke
				smoke.Enabled = true
			else
				local smoke = wheel.AppearanceWheel.Smoke
				smoke.Enabled = false
		end
		end
		end

i couldnt list this in an organized manner because everything is scattered in the script. but these are the things i am having trouble with. sounds too but ill deal witht that later.

I think it’s because they are played in the client, and not sent to the server. You should add a remote event to replicate them playing by sending them back to everyone else’s client and add an exclusion to the sender, so they don’t receive a double playback.