void RpcSetLastShooter(PhotonPlayer pp) { if (PlayersManager.FindPlayer(pp).gameObject != null) { lastShooter = PlayersManager.FindPlayer(pp).gameObject; } }
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); } }
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); } } }
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); }
/// <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); } }
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); }
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); } }
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 }
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); }
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 ;)
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 }
void ZabiJOfiareRPC(PhotonPlayer ofiaraPP) { PlayersManager.FindPlayer(ofiaraPP).gameObject.GetComponent <TankDeath>().OnDead(); }
void OdbierzHpOfiaraRPC(PhotonPlayer ofiaraPP, float damage) { //Debug.Log("Gracz " + Player.FindPlayer(ofiaraPP).nick + " stracił " + damage + " punktów!"); PlayersManager.FindPlayer(ofiaraPP).currentHp -= damage; }