Photon Weapon View

Hello friends. I’m doing an online game using photon. But I do not see the gun when I do it. Please help us how to fix it.

private Animator anim;
private AudioSource audioSource;

public float range = 100f;
public int bulletsPerMag = 30;
public int bulletsLeft = 200;
public int currentBullets;

public enum ShootMode {Auto,Semi }
public ShootMode shootingMode;

public Transform shootPoint;
public ParticleSystem muzzleFlash;
public AudioClip shotSound;
public AudioClip reloadSound;

float damage = 20f;

public GameObject hitParticles;
public GameObject bulletImpact;

public float fireRate = 0.08f;
float fireTimer;

private bool isReloading;
private bool shootInput;
private bool isAiming;

private Vector3 originalPosition;
public Vector3 aimPosition;
public float aodSpeed;

public float maxBulletSpreadAngle = 15.0f;

void Start () {
    anim = GetComponent<Animator>();

    audioSource = GetComponent<AudioSource>();

    currentBullets = bulletsPerMag;

    originalPosition = transform.localPosition;
}

void Update () {

    switch (shootingMode)
    {
        case ShootMode.Auto:
            shootInput = Input.GetButton("Fire1");
            break;

        case ShootMode.Semi:
            shootInput = Input.GetButtonDown("Fire1");
            break;
    }

    if (shootInput)
    {
        if (currentBullets > 0)
        {
            Fire();
        }
        else if(bulletsLeft > 0 )
        {
            DoReload();
        }   
    }

    if (Input.GetKeyDown(KeyCode.R))
    {
        if (currentBullets < bulletsPerMag && bulletsLeft > 0)
            DoReload();
    }

    if (fireTimer < fireRate)
        fireTimer += Time.deltaTime;

    AimDownSights();
}

private void AimDownSights()
{
    if (Input.GetButton("Fire2"))
    {
        transform.localPosition = Vector3.Lerp(transform.localPosition, aimPosition, Time.deltaTime * aodSpeed);
        isAiming = true;
    }
    else
    {
        transform.localPosition = Vector3.Lerp(transform.localPosition, originalPosition, Time.deltaTime * aodSpeed);
        isAiming = false;
    }
}

void FixedUpdate()
{
    AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0);

    isReloading = info.IsName("Reload");

    anim.SetBool("Aim", isAiming);
    //if (info.IsName("Shot")) anim.SetBool("Shot", false);
}

public void Fire()
{
    if (fireTimer < fireRate || currentBullets <= 0 || isReloading) return;

    RaycastHit hit;
    
    Vector3 fireDirection = shootPoint.transform.forward;

    Quaternion fireRotation = Quaternion.LookRotation(fireDirection);

    Quaternion randomRotation = Random.rotation;

    fireRotation = Quaternion.RotateTowards(fireRotation, randomRotation, Random.Range(0.0f, maxBulletSpreadAngle));

    if (Physics.Raycast(shootPoint.position, fireRotation * Vector3.forward, out hit, range))
    {
        Health h = hit.transform.GetComponentInParent<Health>();

        if(h != null)
        {
            h.GetComponent<PhotonView>().RPC("TakeDamage", PhotonTargets.AllBuffered, damage);
        }

        Debug.Log(hit.transform.name + "found!");

        GameObject hitParticleEffect = Instantiate(hitParticles, hit.point, Quaternion.FromToRotation(Vector3.up, hit.normal));
        GameObject bulletHole = Instantiate(bulletImpact, hit.point, Quaternion.FromToRotation(Vector3.forward, hit.normal));

        Destroy(hitParticleEffect, 1f);
        Destroy(bulletHole, 2f);
       

    }
    anim.CrossFadeInFixedTime("Shot", 0.1f);
    muzzleFlash.Play();
    PlayShootSound();

    currentBullets--;
    fireTimer = 0.0f;
}

public void Reload()
{
    if (bulletsLeft <= 0) return;

    int bulletsToLoad = bulletsPerMag - currentBullets;
    int bulletsToDeduct = (bulletsLeft >= bulletsToLoad) ? bulletsToLoad : bulletsLeft;

    bulletsLeft -= bulletsToDeduct;
    currentBullets += bulletsToDeduct;
}

private void DoReload()
{
    AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0);

    if (isReloading) return;

    anim.CrossFadeInFixedTime("Reload", 0.01f);

    audioSource.PlayOneShot(reloadSound);

}

private void PlayShootSound()
{
    audioSource.PlayOneShot(shotSound);
}

this weapon system script;

and this connect system script;

public static MaxPlayers m_InstanceMax = null;
public static ModParty m_InstanceMod = null;
public GameObject Room;
public Transform spawnPoints;

public GameObject myPlayer;

[HideInInspector]
public bool connect = false;

[HideInInspector]
public int ModParty;

private byte Version = 1;
public int PlayerMax = 10;

/// <summary>if we don't want to connect in Start(), we have to "remember" if we called ConnectUsingSettings()</summary>
private bool ConnectInUpdate = true;
private bool Roomcreate = true;

void Awake()
{
    DontDestroyOnLoad(gameObject.transform);
}

void Start()
{
    PhotonNetwork.autoJoinLobby = false;    // we join randomly. always. no need to join a lobby to get the list of rooms.
    

    SceneManager.sceneLoaded += (scene, loadscene) =>
    {
        if (SceneManager.GetActiveScene().name == "Game")
        {
            Spawn();
            
        }
    };
}

public void Spawn()
{
    int index = UnityEngine.Random.Range(0, spawnPoints.Length);
    myPlayer = PhotonNetwork.Instantiate("Player", spawnPoints[index].position, spawnPoints[index].rotation, 0);
    myPlayer.transform.Find("MainCamera").gameObject.SetActive(true);
    ((MonoBehaviour)myPlayer.GetComponent("KarakterKontrol")).enabled = true;
}

public virtual void Update()
{
	if (ConnectInUpdate && connect && !PhotonNetwork.connected)
	{
		Debug.Log("Update() was called by Unity. Scene is loaded. Let's connect to the Photon Master Server. Calling: PhotonNetwork.ConnectUsingSettings();");

		ConnectInUpdate = false;
		PhotonNetwork.ConnectUsingSettings(Version + "." + SceneManagerHelper.ActiveSceneBuildIndex);
	}
}

// below, we implement some callbacks of PUN
// you can find PUN's callbacks in the class PunBehaviour or in enum PhotonNetworkingMessage

public virtual void OnConnectedToMaster()
{
	Debug.Log("Cherche party en mode : "+ModParty);

	ExitGames.Client.Photon.Hashtable expectedProperties = new ExitGames.Client.Photon.Hashtable();
	expectedProperties.Add( RoomProperty.Type, ModParty.ToString());

	PhotonNetwork.JoinRandomRoom( expectedProperties, 0 );
}

public virtual void OnPhotonRandomJoinFailed()
{
	Debug.Log("Aucune party, on en crée une.");
	RoomOptions roomOptions = new RoomOptions();
	roomOptions.maxPlayers = (byte)PlayerMax;
	roomOptions.customRoomProperties = new ExitGames.Client.Photon.Hashtable();
	roomOptions.customRoomProperties.Add( RoomProperty.Map, "Test" );
	roomOptions.customRoomProperties.Add( RoomProperty.Type, ModParty.ToString() );
	roomOptions.customRoomPropertiesForLobby = new string[] {
		RoomProperty.Map,
		RoomProperty.Type,
	};

	PhotonNetwork.CreateRoom ("TestMap" + "@" + Guid.NewGuid().ToString("N"), roomOptions, null);

	Roomcreate = true;
}

public void OnJoinedRoom()
{
	Debug.Log("In Room");
	AutoFade.m_Instance.BeginFade (-1);
	Room.SetActive (true);
	Room.GetComponent<ManageListMembers> ().PlayerMax = PlayerMax;
	this.gameObject.SetActive (false);
	PhotonNetwork.playerName = ClickMenuMain.m_InstancePseudo.pseudo;
	m_InstanceMax = (new GameObject("maxplayers")).AddComponent<MaxPlayers>();
	m_InstanceMod = (new GameObject("modparty")).AddComponent<ModParty>();
	m_InstanceMax.maxplayers = PlayerMax;
	m_InstanceMod.modparty = ModParty;
}