protected void RpcChangePlayerTeam(string id) { PhotonPlayer foundPlayer = GetPlayerById(id); if (foundPlayer != null) { bool isTeamGameplay = gameRule != null && gameRule.IsTeamGameplay; if (!isTeamGameplay) { foundPlayer.SetTeam(PunTeams.Team.none); } else { var maxPlayerEachTeam = PhotonNetwork.room.MaxPlayers / 2; switch (foundPlayer.GetTeam()) { case PunTeams.Team.red: if (PunTeams.PlayersPerTeam[PunTeams.Team.blue].Count < maxPlayerEachTeam) { foundPlayer.SetTeam(PunTeams.Team.blue); } break; default: if (PunTeams.PlayersPerTeam[PunTeams.Team.red].Count < maxPlayerEachTeam) { foundPlayer.SetTeam(PunTeams.Team.red); } break; } } } }
public void OnInitializeGamemode() { PhotonPlayer player = PhotonNetwork.player; ServerController.Gamemode gamemode = ServerController.gamemode; if (gamemode == ServerController.Gamemode.FFA) { player.SetTeam(PunTeams.Team.none); Open(); } else if (gamemode == ServerController.Gamemode.TDM) { Open(false, true); } else if (gamemode == ServerController.Gamemode.OITC) { player.SetTeam(PunTeams.Team.none); SpawnPlayer(-1, 1, 8, -1, -1); } else if (gamemode == ServerController.Gamemode.GG) { player.SetTeam(PunTeams.Team.none); int kills = ServerController.GetKills(player); GunInfo ggGun = ServerController.Instance.gunGameGuns[kills]; SpawnPlayer(ggGun.ID, -1, 8, -1, -1); } else if (gamemode == ServerController.Gamemode.CTF) { Open(false, true); } }
// 블루팀(2팀) 조인 public void BlueTeamJoin(PhotonPlayer photonPlayer) { //플레이어가 이미 들어왔는데, 프리팹이 다시 생성되는걸 방지 PlayerLeftRoom(photonPlayer); //플레이어 프리팹 생성, 리스트에 추가 CurrentPlayerListPrefab = Instantiate(playerListingPrefab); PlayerListing playerListing = CurrentPlayerListPrefab.GetComponent <PlayerListing>(); playerListing.ApplyPhotonPlayer(photonPlayer); playerListing.PhotonPlayer = photonPlayer; playerListings.Add(playerListing); foreach (Transform tr in Team2ViewPort[Team2_playerCount].transform) { if (tr.name != "Line") { tr.gameObject.SetActive(false); } } playerListing.transform.SetParent(Team2ViewPort[Team2_playerCount].transform, false); playerListing.transform.localPosition = Vector3.zero; Team2_Check[Team2_playerCount] = true; playerListing.viewnum = Team2_playerCount; playerListing.Team = 'b'; Team2_playerCount++; photonPlayer.SetTeam(PunTeams.Team.blue); }
// 레드팀(1팀) 조인 public void RedTeamJoin(PhotonPlayer photonPlayer) { //플레이어가 이미 들어왔는데, 프리팹이 다시 생성되는걸 방지 PlayerLeftRoom(photonPlayer); //플레이어 프리팹 생성, 리스트에 추가 CurrentPlayerListPrefab = Instantiate(playerListingPrefab); PlayerListing playerListing = CurrentPlayerListPrefab.GetComponent <PlayerListing>(); playerListing.ApplyPhotonPlayer(photonPlayer); playerListing.PhotonPlayer = photonPlayer; playerListings.Add(playerListing); // 플레이어 프리팹이 들어갈 자리의 자식들을 꺼버림 (선빼고) foreach (Transform tr in Team1ViewPort[Team1_playerCount].transform) { if (tr.name != "Line") { tr.gameObject.SetActive(false); } } // 프리펩 위치 설정 playerListing.transform.SetParent(Team1ViewPort[Team1_playerCount].transform, false); playerListing.transform.localPosition = Vector3.zero; // bool 변수 체크. 스크립트에 팀과 번호 기록 Team1_Check[Team1_playerCount] = true; playerListing.viewnum = Team1_playerCount; playerListing.Team = 'r'; // 팀인원수 증가 및 팀 설정 Team1_playerCount++; photonPlayer.SetTeam(PunTeams.Team.red); }
// 블루팀(2팀) 조인 public void BlueTeamJoin(PhotonPlayer photonPlayer) { //플레이어가 이미 들어왔는데, 프리팹이 다시 생성되는걸 방지 PlayerLeftRoom(photonPlayer); //플레이어 프리팹 생성, 리스트에 추가 currentPlayer = Instantiate(playerListingPrefab); PlayerListing playerListing = currentPlayer.GetComponent <PlayerListing>(); playerListing.PlayerNameTextChange(photonPlayer.NickName); playerListing.PhotonPlayer = photonPlayer; playerListings.Add(playerListing); // 플레이어 프리팹이 자리에 들어가므로 '비어있음'텍스트와 '참가'버튼을 끔 foreach (Transform tr in team2ViewPort[team2Count].transform) { if (tr.name != "Line") { tr.gameObject.SetActive(false); } } playerListing.transform.SetParent(team2ViewPort[team2Count].transform, false); playerListing.transform.localPosition = Vector3.zero; team2Check[team2Count] = true; playerListing.viewnum = team2Count; playerListing.Team = 'b'; team2Count++; photonPlayer.SetTeam(PunTeams.Team.blue); }
/// <summary> /// Called when a remote player entered the room. /// See the official Photon docs for more details. /// </summary> public override void OnPhotonPlayerConnected(PhotonPlayer player) { //only let the master client handle this connection if (!PhotonNetwork.isMasterClient) { return; } //get the next team index which the player should belong to //assign it to the player and update player properties int teamIndex = GameManager.GetInstance().GetTeamFill(0); PhotonNetwork.room.AddSize(teamIndex, +1); player.SetTeam(teamIndex); //also player properties are not cleared when disconnecting and connecting //automatically, so we have to set all existing properties to null //these default values will get overriden by correct data soon player.Clear(); //the master client sends an instruction to this player for adding him to the game this.photonView.RPC("AddPlayer", player); AddBullet(); //************** }
private void OnPhotonPlayerConnected(PhotonPlayer photonPlayer) { PlayerJoinedRoom(photonPlayer, PhotonNetwork.playerList.Length); int rand = Random.Range(0, 2); if (rand == 0) { photonPlayer.SetTeam(PunTeams.Team.blue); pnet.GetComponent <PhotonView>().RPC("RPC_SetPlayerTeam", PhotonTargets.All, true, photonPlayer); } else { photonPlayer.SetTeam(PunTeams.Team.red); pnet.GetComponent <PhotonView>().RPC("RPC_SetPlayerTeam", PhotonTargets.All, false, photonPlayer); } }
protected void SetPlayerTeam(PhotonPlayer player) { bool isTeamGameplay = gameRule != null && gameRule.IsTeamGameplay; if (!isTeamGameplay) { player.SetTeam(PunTeams.Team.none); } else { if (PunTeams.PlayersPerTeam[PunTeams.Team.red].Count > PunTeams.PlayersPerTeam[PunTeams.Team.blue].Count) { player.SetTeam(PunTeams.Team.blue); } else { player.SetTeam(PunTeams.Team.red); } } }
public void OnClick_SetTeam() { if (PhotonNetwork.isMasterClient || PhotonNetwork.player.ID == photonPlayer.ID) { if (photonPlayer.GetTeam() == PunTeams.Team.red) { if (PunTeams.PlayersPerTeam.TryGetValue(PunTeams.Team.blue, out b)) { if (b.Count >= 5) { } else { button.color = new Color32(92, 171, 229, 254); photonPlayer.SetTeam(PunTeams.Team.blue); teamSet = PunTeams.Team.blue; pnet.GetComponent <PhotonView>().RPC("RPC_ChangeList", PhotonTargets.All, photonPlayer); } } } else { if (PunTeams.PlayersPerTeam.TryGetValue(PunTeams.Team.red, out r)) { if (r.Count >= 5) { } else { button.color = new Color32(254, 73, 92, 254); photonPlayer.SetTeam(PunTeams.Team.red); teamSet = PunTeams.Team.red; pnet.GetComponent <PhotonView>().RPC("RPC_ChangeList", PhotonTargets.All, photonPlayer); } } } } }
//What happens when a new player Joins a Room public virtual void OnPhotonPlayerConnected(PhotonPlayer other) { if (PunTeams.PlayersPerTeam[PunTeams.Team.red] == null) { Debug.Log("No teams yet"); } //Team Count redteam = PunTeams.PlayersPerTeam[PunTeams.Team.red].Count; blueteam = PunTeams.PlayersPerTeam[PunTeams.Team.blue].Count; //Team Count if (redteam > blueteam) { other.SetTeam(PunTeams.Team.blue); } else if (blueteam > redteam) { other.SetTeam(PunTeams.Team.red); } else if (blueteam == redteam) { other.SetTeam(PunTeams.Team.blue); } Debug.Log(other.GetTeam()); }
public bool JoinTeam(PhotonPlayer currentPlayer, Team team, Role role) { bool positionAvailable = true; for (int i = 0; i < PhotonNetwork.playerList.Length; i++) { PhotonPlayer player = PhotonNetwork.playerList[i]; if ((player.GetTeam() == team) && (player.GetRole() == role)) { positionAvailable = false; } } if (positionAvailable) { currentPlayer.SetTeam(team); currentPlayer.SetRole(role); UpdateTeams(); return(true); } return(false); }
/** * Assign team for this single player * * Arguments * - PhotonPlayer currentPlayer - The current player to set team * - int index - The index of this player */ void assignTeam(PhotonPlayer currentPlayer, int index) { if (index == alienIndex && currentPlayer.GetTeam() != PunTeams.Team.red) { // Player needs to be an alien Debug.Log("Setting " + currentPlayer.name + " to be the alien"); if (currentPlayer == PhotonNetwork.player) // Just set our own team currentPlayer.SetTeam(PunTeams.Team.red); else // Need RPC call GetComponent<PhotonView>().RPC("SetPlayerTeam", currentPlayer, new object[] {PunTeams.Team.red}); } else if (index != alienIndex && currentPlayer.GetTeam() != PunTeams.Team.blue) { Debug.Log("Setting " + currentPlayer.name + " to be a human"); if (currentPlayer == PhotonNetwork.player) // Just set our own team currentPlayer.SetTeam(PunTeams.Team.blue); else // Player needs to be an alien GetComponent<PhotonView>().RPC("SetPlayerTeam", currentPlayer, new object[] {PunTeams.Team.blue}); } }