void OdbierzHpGraczowiRPC(PhotonPlayer ofiaraPP, float currentDamage, PhotonMessageInfo pmi) { if (!PhotonNetwork.isMasterClient) { return; } float DAMAGE = TanksData.FindTankData(Player.FindPlayer(pmi.sender).tank).damage; float DAMAGELOTERY = TanksData.FindTankData(Player.FindPlayer(pmi.sender).tank).damageLotery; float tempDamage = Mathf.Round(Random.Range(DAMAGE - DAMAGELOTERY, DAMAGE + DAMAGELOTERY)); if (Player.FindPlayer(pmi.sender).tank == DostempneCzolgi.O_I || Player.FindPlayer(pmi.sender).tank == DostempneCzolgi.IS7) { tempDamage = currentDamage; } Player ofiara = Player.FindPlayer(ofiaraPP); if (ofiara.hp <= tempDamage) { GetComponent <PhotonView>().RPC("ZabiJOfiareRPC", ofiaraPP, ofiaraPP); int reward = TanksData.FindTankData(Player.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.tank).level * 200; Player.FindPlayer(pmi.sender).gameObject.GetComponent <PlayerGO>().myPlayer.score += reward; } else { GetComponent <PhotonView>().RPC("OdbierzHpOfiaraRPC", PhotonTargets.All, ofiaraPP, tempDamage); } }
public void UpdateSilnik() { if (silnikLevel < area_4.Length) { silnikLevel++; tempUpdatePoint--; TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank)); } CheckUpdate(); }
public void UpdatePancerz() { if (pancerzLevel < area_3.Length) { pancerzLevel++; tempUpdatePoint--; TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank)); } CheckUpdate(); }
public void UpdateZawieszenie() { if (zawieszenieLevel < area_2.Length) { zawieszenieLevel++; tempUpdatePoint--; TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank)); } CheckUpdate(); }
public void UpdateDzialo() { if (dzialoLevel < area_1.Length) { dzialoLevel++; tempUpdatePoint--; TankEvolution.Instance.UpdateTank(TanksData.FindTankData(player.tank)); } CheckUpdate(); }
public void UpdateMyPlayer(int viewID) { photonView.RPC("SendPlayerRPC", PhotonTargets.All, LocalPlayer.pp, viewID, NationManager.myNation, TanksData.FindTankData(NationManager.ReturnStartTank(NationManager.myNation)).maxHp, NationManager.ReturnStartTank(NationManager.myNation), true); //Player gracza wysyłamy jeśli target ma go na liście graczy }
/// <summary> /// Ustawia wszystkie parametry czołgu. /// Wystarczy, że podasz enum czołgu jakiego parametry chcesz ustawić /// </summary> /// <param name="myTank">enum czołgu którego parametry chcesz przypisać maszynie</param> void SetTankParametrs(TankData myTank) { GetComponent <PlayerGO>().myPlayer.tank = TanksData.FindTankEnum(myTank); magazynek = myTank.maxAmmo; maxHp = myTank.maxHp; damage = myTank.damage; reload = myTank.reload; speed = myTank.speed; turnSpeed = myTank.turnSpeed; headTurnSpeed = myTank.headTurnSpeed; damageLotery = myTank.damageLotery; reloadBetweenMagazine = myTank.reloadBetweenMagazine; GetComponent <TankShot>().ResetMagazine(myTank.maxAmmo); if (photonView.isMine) { GetComponent <PlayerGO>().myPlayer.currentHp = myTank.maxHp; } }
[PunRPC]// \/ void UstawCzolgRPC(Tanks newTank, float cameraSize, float damage, float damageLotery, float maxHp, float reload, float speed, int maxAmmo) { TankData mySuspectTank = TanksData.FindTankData(newTank); mySuspectTank.cameraSize = cameraSize; mySuspectTank.damage = damage; mySuspectTank.damageLotery = damageLotery; mySuspectTank.maxHp = maxHp; mySuspectTank.reload = reload; mySuspectTank.speed = speed; mySuspectTank.maxAmmo = maxAmmo; SetTankObject(mySuspectTank); }
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 ;)
/// <summary> /// Bardo niebezpieczna metoda no ale cóż, kiedyś się poprawi ;) TODO: 0_0 /// </summary> /// <param name="tank"></param> public void SetStartTankHowNewPlayer(Tanks tank) { SetTankObject(TanksData.FindTankData(tank)); }
/// <summary> /// Ustawia dane czołgu który gracz posiada /// </summary> public void UpdateTank() { //UstawCzolg(myTank); SetTankObject(TanksData.FindTankData(GetComponent <PlayerGO>().myPlayer.tank)); }
void SetTankObject(TankData myTank) { //Ustawiam parametry czołgu SetTankParametrs(myTank); //Ustawiam textury kadłuba, wieży i (jeśli jest) przykrycia lufy SetTankTexture(myTank.hullTexture, myTank.turretTexture, myTank.turretCapTexture); //Ustawiam pozycję wieży SetGameObjectPosition(myTank.turretPos.x, myTank.turretPos.y, turretKeep); //Ustawiam pozycję przykrycia lufy SetGameObjectPosition(myTank.turretCapPos.x, myTank.turretCapPos.y, turretCap); //Ustawiam pozycję wylotu lufy SetGameObjectPosition(myTank.barrlelEndPos.x, myTank.barrlelEndPos.y, barrelEndPoint); //Ustawiam collider czołgu oraz collider zbierania score ResetPolygon(myTank.offset.x, myTank.offset.y, myTank.size.x, myTank.size.y); //Jeśli mam przykrycie lufy to włączam ten GameObject, jeśli nie mam to wyłączam turretCap.SetActive(myTank.iHaveTurretCap); //Jeśli wieża ma ograniczoną rotację to ją muszę wpierw wyprostować if (!myTank.turretCan360) { turret.transform.localRotation = Quaternion.identity; } //Dla graczy lokalnych if (photonView.isMine) { MainTurret.Instance.OgraniczonaRotacja = !myTank.turretCan360; TechTree.Instance.TankSwitchTierButton(myTank.level); TechTree.Instance.FindTankButton(TanksData.FindTankEnum(myTank)).OnClick(); cameraOrthographicSize = myTank.cameraSize + 10; } #region Wyjątki czołgów //OI'emu musimy włączyć działka lub je wyłączyć (jeśli zginął i np. KHA-GO będzie przez to przechodzić) if (myTank.tank == Tanks.O_I) { for (int i = 0; i < turretsOI.Length; i++) { turretsOI[i].SetActive(true); turretsOI[i].GetComponent <AutoShot>().Reset(); } } else { for (int i = 0; i < turretsOI.Length; i++) { turretsOI[i].SetActive(false); } } //IS7 również posiada wieżyczkę na wieży if (myTank.tank == Tanks.IS7) { turretIS.SetActive(true); turretIS.GetComponent <AutoShot>().Reset(); } else { turretIS.SetActive(false); } // natomiast HA-TO ma nierychomą wieżyczkę no ale trzeba ją wyprostować (prędkość obrotu ma = 0) if (myTank.tank == Tanks.HA_TO_300MM) { turret.transform.localRotation = Quaternion.identity; } #endregion }
/// <summary> /// Bardo niebezpieczna metoda no ale cóż, kiedyś się poprawi ;) TODO: 0_0 /// </summary> /// <param name="tank"></param> public void SetStartTankHowNewPlayer(DostempneCzolgi tank) { SetTankObject(TanksData.FindTankData(tank)); }