Beispiel #1
0
    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;
                }
            }
        }
    }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
    // 블루팀(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);
    }
Beispiel #4
0
    // 레드팀(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);
    }
Beispiel #5
0
    // 블루팀(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);
    }
Beispiel #6
0
        /// <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);
        }
    }
Beispiel #8
0
    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);
            }
        }
    }
Beispiel #9
0
 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);
                 }
             }
         }
     }
 }
Beispiel #10
0
 //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());
 }
Beispiel #11
0
    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});
     }
 }