Example #1
0
    /// <summary>
    /// Erstellt einen Spielcharakter, den ein Client mit Voreinstellungen angefragt hat. Nach der Erstellung wird alle Clients
    /// der neue Spieler mitgeteilt.
    /// (INFO: Die Methode wird in der Serverinstanz aufgerufen, wenn Client einen Spielcharakter erstellen bzw. haben moechte.)
    /// </summary>
    /// <param name="conn">Verbindung zum Client, der die Anfrage gesendet hat.</param>
    /// <param name="playerControllerId">ID des Spielers, der in Vebindung zum Objekt steht.</param>
    /// <param name="extraMessageReader">Voreinstellungen.</param>
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId, NetworkReader extraMessageReader)
    {
        // Lasse keinen Client mitspielen, wenn Match zu ende
        if (gameOver)
        {
            conn.Disconnect();
            return;
        }

        // Lese Voreinstellungen aus der ersten Szene und erstelle daraus den angefragten Charakter
        SettingsNetworkMessage message = extraMessageReader.ReadMessage <SettingsNetworkMessage>();
        GameObject             player  = Instantiate(Resources.Load("playable_chars/" + message.character, typeof(GameObject))) as GameObject;

        // Schreibe Matchdaten in die lokale Konfiguration, die der Client an seine Duplikate verteilt
        player.transform.GetComponent <PlayerConfig> ().SetPlayerData(matchData.AddPlayer(conn.connectionId, message.playerName));
        NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);

        // Sende diesbezueglich globale Nachricht (aktuelle Anzahl der Spieler)
        GlobalMatchEventMessage gmem = new GlobalMatchEventMessage();

        if (NetworkServer.connections.Count == (maxConnections + 1))
        {
            gmem.message   = NetworkServer.connections.Count + " / " + (maxConnections + 1) + " Spieler on";
            gmem.gameState = true;
        }
        else
        {
            gmem.message = NetworkServer.connections.Count + " / " + (maxConnections + 1) + " Spieler on";
        }

        NetworkServer.SendToAll(9999, gmem);
    }