Multiplayer Vehicle Setup

I’m fairly new to networking and am having trouble adding vehicles to my multiplayer FPS project.
Currently, you can choose a class, spawn, and run around. That all works fine. But now I’m trying to add vehicles and don’t quite know what I’m doing.

I’m just not sure how to go about doing this. Currently the player can get in the vehicle and drive it, but any other player can as well. It needs to check if there is already a player in it before letting another take the driver seat. In addition, I’d like it to make the Network Owner of the Vehicle whoever is in the driver seat. The other seats of the vehicle would just have the other players in it parented to it. I’ve noticed when the server owns the object as in my current setup when using Network.Instantiate, if a player tries to drive it and has a slow connection its like having an authoritative server and shows noticeable lag and makes it hard to drive. This game is for Android. I really don’t need/want an authoritative set up for this.

So I guess to summarize, how would I go about setting up a multiplayer vehicle system (with vehicles that have multiple seats) while making the driver the network “owner” of that vehicle so they have the smoothest experience when driving? Any help is appreciated.

See this trouble in gleeko multiplayer above. If player dont instansiated car he cant network control this car. So we need instansiate car for every player every time. In gleeko I have 2 spawn for every car. First spawn its only server spawn. And spawn have view like car
But we also can control another instantiated vehicle if we send from RPC transform position from client to server. The script will be look like this. Script need to be atached to the car prefab

function OnConnectedToServer() {
var viewID : NetworkViewID= Network.AllocateViewID();
networkView.RPC("Trans", 
RPCMode.AllBuffered, viewID,transform.position); 
}

@RPC
function Trans (viewID : NetworkViewID, location : Vector3) {
var nView : NetworkView;
nView = GetComponent(NetworkView);
nView.viewID = viewID;
}