Beispiel #1
0
 void RpcSetLastShooter(PhotonPlayer pp)
 {
     if (PlayersManager.FindPlayer(pp).gameObject != null)
     {
         lastShooter = PlayersManager.FindPlayer(pp).gameObject;
     }
 }
Beispiel #2
0
    void OdbierzHpGraczowiRPC(PhotonPlayer ofiaraPP, float currentDamage, PhotonMessageInfo pmi)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }

        float DAMAGE       = TanksData.FindTankData(PlayersManager.FindPlayer(pmi.sender).tank).damage;
        float DAMAGELOTERY = TanksData.FindTankData(PlayersManager.FindPlayer(pmi.sender).tank).damageLotery;
        float tempDamage   = Mathf.Round(UnityEngine.Random.Range(DAMAGE - DAMAGELOTERY, DAMAGE + DAMAGELOTERY));

        if (PlayersManager.FindPlayer(pmi.sender).tank == Tanks.O_I ||
            PlayersManager.FindPlayer(pmi.sender).tank == Tanks.IS7)
        {
            tempDamage = currentDamage;
        }

        Player ofiara = PlayersManager.FindPlayer(ofiaraPP);

        if (ofiara.currentHp <= tempDamage)
        {
            GetComponent <PhotonView>().RPC("ZabiJOfiareRPC", ofiaraPP, ofiaraPP);
            int reward = TanksData.FindTankData(PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.tank).level * 200;
            PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.score += reward;
        }
        else
        {
            GetComponent <PhotonView>().RPC("OdbierzHpOfiaraRPC", PhotonTargets.All, ofiaraPP, tempDamage);
        }
    }
Beispiel #3
0
 void DeathRPC(bool life, PhotonMessageInfo pmi)
 {
     if (life)
     {
         PlayersManager.FindPlayer(pmi.sender).score = PlayersManager.FindPlayer(pmi.sender).score / 7;
         Instantiate(explosion, body.transform.position, body.transform.rotation);
         tankStore.stan.SetActive(false);
         body.material = deathMat;
         head.material = deathMat;
         PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <TankEvolution>().HullGameObject.tag = TagsManager.GetTag(Tag.StaticGameObject);
     }
     else
     {
         tankStore.stan.SetActive(true);
         body.material = defaultMat;
         head.material = defaultMat;
         PlayerSetup ps = PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerSetup>();
         GameObject  myColliderObject = GetComponent <TankEvolution>().HullGameObject;
         if (ps.photonView.isMine)
         {
             TagsManager.SetGameObjectTag(myColliderObject, Tag.LocalPlayerBody);
             LayerManager.SetGameObjectLayer(myColliderObject, Layer.LocalPlayer);
         }
         else
         {
             TagsManager.SetGameObjectTag(myColliderObject, Tag.RemotePlayerBody);
             LayerManager.SetGameObjectLayer(myColliderObject, Layer.RemotePlayer);
         }
     }
 }
Beispiel #4
0
 protected override void RpcDoShootEffect(Vector3 pos, Quaternion rot, PhotonMessageInfo pmi)
 {
     if (PlayersManager.FindPlayer(pmi.sender).gameObject != null)
     {
         BulletTrailPrefab.GetComponent <BulletMovment>().own =
             PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <TankEvolution>().HullGameObject;
     }
     Instantiate(BulletTrailPrefab, pos, rot);
 }
Beispiel #5
0
    /// <summary>
    /// Jeśli gracz opuści grę to to wykonują wszyscy gracze prócz niego samego
    /// (skoro opuszcza grę to ki *uj go to obchodzi)
    /// </summary>
    /// <param name="OldPlayerPP">PhotonPlayer starego gracza</param>
    void OnPhotonPlayerDisconnected(PhotonPlayer OldPlayerPP)
    {
        //Każdy indywidualnie usuwa go ze swojej listy graczy
        var tmpPlayer = PlayersManager.FindPlayer(OldPlayerPP);

        if (tmpPlayer != null)
        {
            PlayersManager.GetPlayers().Remove(tmpPlayer);
        }
    }
Beispiel #6
0
    void SpawnSceneObjectRPC(string nazwaObiektu, Vector3 pos, Quaternion rot, PhotonMessageInfo pmi)
    {
        if (!PhotonNetwork.isMasterClient)  //jeśli nie jestem serwerem
        {
            return;
        }

        if (PlayersManager.FindPlayer(pmi.sender).Zasoby <= 0)  //Jeśli gracz który chce wstawiać nie ma narzędzi
        {
            return;
        }

        PhotonNetwork.InstantiateSceneObject(nazwaObiektu, pos, rot, 0, null);
    }
Beispiel #7
0
    void OdbierzHpGraczowiJakoBotRPC(PhotonPlayer ofiaraPP, float DAMAGE, PhotonMessageInfo pmi)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }

        Player ofiara = PlayersManager.FindPlayer(ofiaraPP);

        if (ofiara.currentHp <= DAMAGE)
        {
            GetComponent <PhotonView>().RPC("ZabiJOfiareRPC", ofiaraPP, ofiaraPP);
        }
        else
        {
            GetComponent <PhotonView>().RPC("OdbierzHpOfiaraRPC", PhotonTargets.All, ofiaraPP, DAMAGE);
        }
    }
Beispiel #8
0
    void SpawnujGraczaRPC(int pvID, PhotonMessageInfo pmi)
    {
        GameObject newPlayerGO = PhotonView.Find(pvID).gameObject;
        Player     player;

        if (PlayersManager.FindPlayer(pmi.sender) == null)
        {
            Debug.LogError("Błąd krytyczny!");
            return;
        }
        else
        {
            player = PlayersManager.FindPlayer(pmi.sender);
        }

        player.gameObject = newPlayerGO;    //Tu jest problem
        newPlayerGO.GetComponent <PlayerGO>().myPlayer        = player;
        newPlayerGO.GetComponent <PlayerGO>().myPlayer.nation = GameManager.myNation;
        newPlayerGO.name = "Player_" + player.nick; //+nick
    }
Beispiel #9
0
    void SetPlayerRPC(PhotonPlayer remotePlayerPP, int remotePlayerID, NationManager.Nation remoteNation,
                      float remoteHP, Tanks remoteTank, bool playerIsOnPlayersList = false)
    {
        //Tworzę gracza i dodaje go do mojej listy graczy
        Player player;

        if (playerIsOnPlayersList)
        {
            player = PlayersManager.FindPlayer(remotePlayerPP);
        }
        else
        {
            player = new Player();
            PlayersManager.GetPlayers().Add(player);
        }

        //Ustawiam podstawowe dane tego gracza
        player.nick      = remotePlayerPP.NickName;
        player.pp        = remotePlayerPP;
        player.nation    = remoteNation;
        player.currentHp = remoteHP;
        player.tank      = remoteTank;

        //Ustawiam odwołanie gracza z listy i właściwego obiektu
        GameObject newPlayerGO = PhotonView.Find(remotePlayerID).gameObject;

        player.gameObject = newPlayerGO;
        newPlayerGO.GetComponent <PlayerGO>().myPlayer = player;

        //Taki bajer
        newPlayerGO.name = "Player_" + player.nick;

        //Ustawiam dane widoczne dla gracza proszącego (ustawiam czołg, sliderHP i nick)
        newPlayerGO.GetComponent <PlayerGO>().myPlayer.currentHp = player.currentHp;
        newPlayerGO.GetComponent <PlayerGO>().myPlayer.nick      = player.nick;
        newPlayerGO.GetComponent <Nick>().nick.text           = player.nick;
        newPlayerGO.GetComponent <PlayerGO>().myPlayer.nation = player.nation;
        newPlayerGO.GetComponent <PlayerGO>().myPlayer.tank   = player.tank;
        newPlayerGO.GetComponent <TankEvolution>().SetStartTankHowNewPlayer(player.tank);
    }
Beispiel #10
0
    void PleaseServerForUpdateRPC(Tanks newTank, PhotonMessageInfo pmi)
    {
        #region Security
        int playerOldTankLevel = TanksData.FindTankData(PlayersManager.FindPlayer(pmi.sender).tank).level;  //(int)newTank - 1;// TankManager.czolgii[newTank].level - 1;//Player.FindPlayer(pmi.sender).gameObject.GetComponent<TankEvolution>().myTank.level;
        int requiredScore      = TankEvolution.UstawGranice(playerOldTankLevel);

        if (!PhotonNetwork.isMasterClient)
        {
            Debug.LogError("Tylko server ma prawo ulepszać czołgi graczy!"); //to ma sens ;)
            return;
        }
        if (TanksData.FindTankData(newTank).level != playerOldTankLevel + 1)
        {
            Debug.LogError("Niewłaściwy level 'starego' czołgu gracza! ~" +
                           TanksData.FindTankData(newTank).level + " <= " + (playerOldTankLevel + 1).ToString()
                           ); //może być tylko o jeden mniejszy od nowego albo ten sam
            return;
        }
        if (PlayersManager.FindPlayer(pmi.sender).score < requiredScore)
        {
            Debug.LogError("Gracz ma za mało score!"); //Przynajmniej w kopii gry servera
            return;
        }
        #endregion
        {
            TankData goodTankParametrs = TanksData.FindTankData(newTank);
            PlayersManager.FindPlayer(pmi.sender).tank = newTank;   //Server przechowuje i tylko on sobie ustawia właściwy typ i u siebie trzyma
            photonView.RPC("UstawCzolgRPC", PhotonTargets.All, newTank,
                           goodTankParametrs.cameraSize,
                           goodTankParametrs.damage,
                           goodTankParametrs.damageLotery,
                           goodTankParametrs.maxHp,
                           goodTankParametrs.reload,
                           goodTankParametrs.speed,
                           goodTankParametrs.maxAmmo
                           );
        } //    /
    }     //        \ <- upośledzona strzałka ;)
Beispiel #11
0
 void SetCameraDeathRPC(PhotonMessageInfo pmi)
 {
     Debug.Log("Ustawiam u siebie CAMERE!!!!!!!!!!");
     Debug.Log(PlayersManager.FindPlayer(pmi.sender).gameObject.name);
     tankStore.camDeadTarget = PlayersManager.FindPlayer(pmi.sender).gameObject.GetComponent <TankEvolution>().HullGameObject;    //TO DO: wysłać to przez RPC
 }
Beispiel #12
0
 void ZabiJOfiareRPC(PhotonPlayer ofiaraPP)
 {
     PlayersManager.FindPlayer(ofiaraPP).gameObject.GetComponent <TankDeath>().OnDead();
 }
Beispiel #13
0
 void OdbierzHpOfiaraRPC(PhotonPlayer ofiaraPP, float damage)
 {
     //Debug.Log("Gracz " + Player.FindPlayer(ofiaraPP).nick + " stracił " + damage + " punktów!");
     PlayersManager.FindPlayer(ofiaraPP).currentHp -= damage;
 }