You have to consider that most parts of networking objects players are not automated on the remote side.
If for example say you create a player prefab that tracks player movement, fire gun input and mouse look controls then creating this object on both sides client and server will have a player GameObject that will read in input given from the player. If a client joins your game and his / her player GameObject is being created on your local game it’s is also going to have the same MouseLook and other user Input based controls enabled. So even the remote objects are going to try to obey your User Input. Plus if they have a Camera object attached they will try to take over that or may try finding the main camera to highjack.
Knowing this you’ll need to understand how prefab’s should be adapted on the remote side so they won’t be controlled locally.
See some changes given below…
[I don’t know what should or should not be enabled in your example but I took a guess]
#pragma strict
function Awake()
{
// This is a Remote Game Object so don't track user input ...
if (!networkView.isMine)
{
GetComponent(Player).enabled = true;
GetComponent(FPSInputController).enabled = false;
GetComponent(MouseLook).enabled = false;
GetComponentInChildren(Shoot).enabled = true;
GetComponentInChildren(Camera).enabled = false;
}
So knowing this you’ll find reading the docs more helpful. Sometimes you want things to only occur on the server like Network.isServer or the client Network.isClient. Eventually it will all make sense.