- Home /
 
              This question was 
             closed Jun 15, 2013 at 04:26 PM by 
             Fattie for the following reason: 
             
 
            Body of question is in bold
 
               Question by 
               DRiNVAD3R · Jun 15, 2013 at 04:25 PM · 
                multiplayerserverconnection  
              
 
              MODERATORS to reject all-bold questions
Hey, I have a problem, I wrote two scripts which allow me to start and connect to a server. Everything works, except from one thing: I should be able to see all the names of the connected players on my screen, once I am connected. I would appreciate if anyone can help me, here are the scripts: :
MenuManager.cs :
 using UnityEngine;
 using System.Collections;
 
 public class MenuManager : MonoBehaviour
 {
 
     
     public string CurrentMenu ;
     public string MatchName = "";
     public string MatchPassword = "";
     public int MatchMaxPlayers = 32;
     
     private Vector2 ScrollLobby = Vector2.zero;
     
     void Start()
     {
         CurrentMenu = "Main" ;
         MatchName = "Test123 " + Random.Range(0, 5000);
     }
     
     void OnGUI()
     {
     if (CurrentMenu == "Main")
         Menu_Main();
     if (CurrentMenu == "Lobby")
         Menu_Lobby();
     if (CurrentMenu == "Host")
         Menu_HostGame();
     }
     
     public void NavigateTo(string nextmenu)
     {
         CurrentMenu = nextmenu;
     }
     
     private void Menu_Main()
     {
         if (GUI.Button(new Rect(10,10,200,50), "Host Game"))
         {
             NavigateTo("Host");
         }
         
         if (GUI.Button(new Rect(10,70,200,50), "Refresh"))
         {
             MasterServer.RequestHostList("DeathMatch");
         }
         
         GUI.Label(new Rect(220,10,130,30), "Player Name");
         MultiplayerManager.instance.PlayerName = GUI.TextField(new Rect(400,10,200,30), MultiplayerManager.instance.PlayerName);
         
         if (GUI.Button(new Rect(400,50,100,30), "Save Name"))
         {
             PlayerPrefs.SetString("PlayerName", MultiplayerManager.instance.PlayerName);
         }
         GUILayout.BeginArea(new Rect(Screen.width -400, 0, 400, Screen.height), "Server List", "Box");
         GUILayout.Space(20);
         foreach(HostData match in MasterServer.PollHostList())
         {
             GUILayout.BeginHorizontal("Box");
             
             GUILayout.Label(match.gameName);
             if (GUILayout.Button("Connect"))
             {
                 Network.Connect(match);
             }
             
             GUILayout.EndHorizontal();
             
         }
         
             GUILayout.EndArea();
         
     }
     private void Menu_HostGame()
     {
         
         //Buttons Host Game
         if (GUI.Button(new Rect(10,10,200,50), "Back"))
             {
             NavigateTo("Main");
         }
         if (GUI.Button(new Rect(10,65,200,50), "Start Server"))
         {
             MultiplayerManager.instance.StartServer(MatchName, MatchPassword, MatchMaxPlayers);
         }
         GUI.Label(new Rect(220,10,130,30), "Match Name");
         MatchName = GUI.TextField(new Rect(400,10,200,30), MatchName);
         
         GUI.Label(new Rect(220,50,130,30), "Match Password");
         MatchPassword = GUI.PasswordField(new Rect(400,50,200,30), MatchPassword, '*');
         
         GUI.Label(new Rect(220,90,130,30), "Match Max Players");
         GUI.Label(new Rect(400,90,200,30), MatchMaxPlayers.ToString());
         MatchMaxPlayers = Mathf.Clamp(MatchMaxPlayers, 8, 32);
         
         if (GUI.Button(new Rect(425,90,25,30), "+"))
         {
             MatchMaxPlayers += 2;
         }
         if (GUI.Button(new Rect(450,90,25,30), "-"))
         {
             MatchMaxPlayers -= 2;
         }
     }
     private void Menu_Lobby()
     {
         ScrollLobby = GUILayout.BeginScrollView(ScrollLobby, GUILayout.MaxWidth(200));
         
         foreach (MPPlayer pl in MultiplayerManager.instance.PlayerList)
         {
             GUILayout.Box(pl.PlayerName);
         }
         
         GUILayout.EndScrollView();
     }
     
     void OnServerIntialized()
     {
         NavigateTo("Lobby");
     }
     
     void OnConnectToServer()
     {
         NavigateTo("Lobby");
     }
     
 }
 
               MultiplayerManager.cs :
 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 
 public class MultiplayerManager : MonoBehaviour 
 {
 
 public static MultiplayerManager instance;
     
     public string PlayerName;
     
     private string MatchName = "";
     private string MatchPassword = "";
     private int MatchMaxUsers = 32;
     
     public List<MPPlayer> PlayerList = new List<MPPlayer>();
     
     void Start()
     {
         instance = this;
         PlayerName = PlayerPrefs.GetString("PlayerName");
     }
     
     public void StartServer(string servername, string serverpassword, int maxusers)
     {
         MatchName = servername;
         MatchPassword = serverpassword;
         MatchMaxUsers = maxusers;
         Network.InitializeServer(MatchMaxUsers, 2550, false);
         MasterServer.RegisterHost("DeathMatch", MatchName,"");
         // Network.InitializeSecurity();
     }
     
     void OnServerIntialized()
     {
     Server_PlayerJoinRequest(PlayerName, Network.player);    
     }
     
     void OnConnectToServer()
     {
         networkView.RPC("Server_PlayerJoinRequest", RPCMode.Server, PlayerName, Network.player);
     }
     
     void OnPlayerDissconnect(NetworkPlayer id)
     {
         networkView.RPC("Client_RemovePlayer", RPCMode.All, id);
     }
 
     [RPC]
     void Server_PlayerJoinRequest(string playername, NetworkPlayer view)
     {
         networkView.RPC("Client_AddPlayerToList", RPCMode.All, playername, view);
     }
     
     [RPC]
     void Client_AddPlayerToList(string playername, NetworkPlayer view)
     {
         MPPlayer tempplayer = new MPPlayer();
         tempplayer.PlayerName = playername;
         tempplayer.PlayerNetwork = view;
         PlayerList.Add(tempplayer);
     }
     
     [RPC]
     void Client_RemovePlayer(NetworkPlayer view)
     {
         MPPlayer temppl = null;
         foreach(MPPlayer pl in PlayerList)
         {
             if (pl.PlayerNetwork == view)
             {
                 temppl = pl;
             }
             if (temppl != null)
             {
                 PlayerList.Remove(temppl);
             }
         }
     }
 
 }
 
 public class MPPlayer
 {
     public string PlayerName = "";
     public NetworkPlayer PlayerNetwork;
     
 }
 
              
               Comment
              
 
               
              Follow this Question
Related Questions
Unity networking tutorial? 6 Answers
Multiplayer not working 1 Answer
cant connect to server 1 Answer
photon marco polo tutorial issue with "peercreated" 1 Answer
Multiplayer game in webplayer not working on server 1 Answer