/// <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); }