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); }
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."); } } }
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); }