Пример #1
0
        public void SpawnPlayerAfterRoundStart(NetworkConnection conn)
        {
            Debug.Log("Spawn player from address " + conn.address);
            CharacterResponse character = SpawnPlayerWithoutLoginServer(conn);

            Debug.Log("Spawning player after round start " + "conn: " + conn.address + " character: " + character.name);
            //Something has gone horribly wrong
            if (character == null)
            {
                throw new Exception("Could not read character data");
            }

            // Spawn player based on their character choices
            Transform  startPos = GetStartPosition();
            GameObject player   = startPos != null
                ? Instantiate(playerPrefab, startPos.position, startPos.rotation)
                : Instantiate(playerPrefab);

            player.name = character.name;

            if (NetworkClient.connection.identity != null)
            {
                NetworkServer.DestroyPlayerForConnection(conn);
            }
            //Destroy dummy player
            //NetworkServer.DestroyPlayerForConnection(conn);

            //Spawn actual player
            NetworkServer.AddPlayerForConnection(conn, player);
        }
Пример #2
0
        private IEnumerator SpawnPlayerAfterRoundStart(NetworkConnection conn, CharacterSelectMessage characterSelection)
        {
            // TODO: Should store players in an object until round is started, then spawn them all at once.
            yield return(new WaitUntil(() => roundManager.IsRoundStarted));

            //Something has gone horribly wrong
            if (characterSelection?.character == null)
            {
                throw new Exception("Could not read character data");
            }

            // Spawn player based on their character choices
            Transform  startPos = GetStartPosition();
            GameObject player   = startPos != null
                ? Instantiate(playerPrefab, startPos.position, startPos.rotation)
                : Instantiate(playerPrefab);

            player.name = characterSelection.character.name;

            // NetworkServer.ReplacePlayerForConnection(conn, player);
            //Destroy dummy player
            NetworkServer.DestroyPlayerForConnection(conn);
            //Spawn actual player
            NetworkServer.AddPlayerForConnection(conn, player);
        }
Пример #3
0
 public virtual void OnServerDisconnect(NetworkConnection conn)
 {
     NetworkServer.DestroyPlayerForConnection(conn);
     if (LogFilter.Debug)
     {
         Debug.Log("OnServerDisconnect: Client disconnected.");
     }
 }
Пример #4
0
 public override void OnServerDisconnect(NetworkConnection conn)
 {
     Debug.Log("Server Disconnected");
     if (ball != null)
     {
         NetworkServer.Destroy(ball);
     }
     // call base functionality (actually destroys the player)
     NetworkServer.DestroyPlayerForConnection(conn);
     //Stoping the host also calls the OnStopClient method
     //calling stop host even aftter the session was stopped by the manager causes a deadlock
     if (NetworkServer.active && NetworkClient.isConnected)
     {
         StopHost();
     }
 }