public override void ServerChangeScene(string sceneName)
 {
     if (sceneName == this.m_LobbyScene)
     {
         NetworkLobbyPlayer[] array = this.lobbySlots;
         for (int i = 0; i < array.Length; i++)
         {
             NetworkLobbyPlayer networkLobbyPlayer = array[i];
             if (!(networkLobbyPlayer == null))
             {
                 NetworkIdentity  component = networkLobbyPlayer.GetComponent <NetworkIdentity>();
                 PlayerController playerController;
                 if (component.connectionToClient.GetPlayerController(component.playerControllerId, out playerController))
                 {
                     NetworkServer.Destroy(playerController.gameObject);
                 }
                 if (NetworkServer.active)
                 {
                     networkLobbyPlayer.GetComponent <NetworkLobbyPlayer>().readyToBegin = false;
                     NetworkServer.ReplacePlayerForConnection(component.connectionToClient, networkLobbyPlayer.gameObject, component.playerControllerId);
                 }
             }
         }
     }
     base.ServerChangeScene(sceneName);
 }
Esempio n. 2
0
        void OnValidate()
        {
            if (m_MaxPlayers <= 0)
            {
                m_MaxPlayers = 1;
            }

            if (m_MaxPlayersPerConnection <= 0)
            {
                m_MaxPlayersPerConnection = 1;
            }

            if (m_MaxPlayersPerConnection > maxPlayers)
            {
                m_MaxPlayersPerConnection = maxPlayers;
            }

            if (m_MinPlayers < 0)
            {
                m_MinPlayers = 0;
            }

            if (m_MinPlayers > m_MaxPlayers)
            {
                m_MinPlayers = m_MaxPlayers;
            }

            if (m_LobbyPlayerPrefab != null)
            {
                var uv = m_LobbyPlayerPrefab.GetComponent <NetworkIdentity>();
                if (uv == null)
                {
                    m_LobbyPlayerPrefab = null;
                    Debug.LogWarning("LobbyPlayer prefab must have a NetworkIdentity component.");
                }
            }

            if (m_GamePlayerPrefab != null)
            {
                var uv = m_GamePlayerPrefab.GetComponent <NetworkIdentity>();
                if (uv == null)
                {
                    m_GamePlayerPrefab = null;
                    Debug.LogWarning("GamePlayer prefab must have a NetworkIdentity component.");
                }
            }
        }
Esempio n. 3
0
        public override void OnServerRemovePlayer(NetworkConnection conn, PlayerController player)
        {
            short playerControllerId = player.playerControllerId;
            byte  slot = player.gameObject.GetComponent <NetworkLobbyPlayer>().slot;

            this.lobbySlots[(int)slot] = null;
            base.OnServerRemovePlayer(conn, player);
            for (int i = 0; i < this.lobbySlots.Length; i++)
            {
                NetworkLobbyPlayer networkLobbyPlayer = this.lobbySlots[i];
                if (networkLobbyPlayer != null)
                {
                    networkLobbyPlayer.GetComponent <NetworkLobbyPlayer>().readyToBegin = false;
                    NetworkLobbyManager.s_LobbyReadyToBeginMessage.slotId     = networkLobbyPlayer.slot;
                    NetworkLobbyManager.s_LobbyReadyToBeginMessage.readyState = false;
                    NetworkServer.SendToReady(null, 43, NetworkLobbyManager.s_LobbyReadyToBeginMessage);
                }
            }
            this.OnLobbyServerPlayerRemoved(conn, playerControllerId);
        }