- Home /
Question by
szentiszilas · Jul 19, 2014 at 07:23 AM ·
networkmasterserver
I can't connect please help me :(
Hello guys i make new menu , multiplayer script menu script here : 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 = "TestServer " + Random.Range (0, 5000);
}
void OnGUI ()
{
if (CurrentMenu == "Main")
Menu_Main();
if (CurrentMenu == "Lobby")
Menu_Lobby();
if (CurrentMenu == "Play")
Menu_Play();
if (CurrentMenu == "Host")
Menu_HostGame();
if (CurrentMenu == "Browser")
Menu_Browser();
}
public void NavigateTo(string nextmenu)
{
CurrentMenu = nextmenu;
}
private void Menu_Main()
{
if (GUI.Button (new Rect (10, 10, 200, 50), "Play"))
{
NavigateTo("Play");
}
if (GUI.Button (new Rect (10, 70, 200, 50), "Options"));
if (GUI.Button (new Rect (10, 130, 200, 50), "Quit"));
}
private void Menu_Play()
{
if (GUI.Button (new Rect (10, 10, 200, 50), "SinglePlayer"));
if (GUI.Button (new Rect (10, 70, 200, 50), "Multiplayer"))
{
NavigateTo("Host");
}
if (GUI.Button (new Rect (10, 130, 200, 50), "Back"))
{
NavigateTo("Main");
}
GUI.Label (new Rect (220, 10, 150, 50), "Player Name:");
MultiplayerManager.instance.PlayerName = GUI.TextField (new Rect (330, 10, 200, 20), MultiplayerManager.instance.PlayerName);
if (GUI.Button (new Rect (220, 40, 200, 50), "Save Player Name"))
{
PlayerPrefs.SetString("PlayerName", MultiplayerManager.instance.PlayerName);
}
}
private void Menu_HostGame()
{
//Buttons Host Game
if (GUI.Button(new Rect(10, 130, 200, 50), "Back"))
{
NavigateTo("Play");
}
if (GUI.Button (new Rect (10, 70, 200, 50), "Server Browser"))
{
NavigateTo("Browser");
}
if (GUI.Button (new Rect (10, 10, 200, 50), "Start Server"))
{
MultiplayerManager.instance.StartServer(MatchName, MatchPassword, MatchMaxPlayers);
}
GUI.Label (new Rect (220, 10, 150, 50), "Match Name :");
MatchName = GUI.TextField (new Rect (330, 10, 200, 20), MatchName);
GUI.Label (new Rect (220, 50, 150, 50), "Match Password :");
MatchPassword = GUI.PasswordField (new Rect (330, 50, 200, 20), MatchPassword, '*');
GUI.Label (new Rect (220, 90, 150, 50), "Match MaxPlayers :");
GUI.Label (new Rect (340, 90, 250, 100), MatchMaxPlayers.ToString());
MatchMaxPlayers = Mathf.Clamp(MatchMaxPlayers, 2, 32);
if (GUI.Button (new Rect (365, 90, 25, 25), "+"))
MatchMaxPlayers += 2;
if (GUI.Button (new Rect (390, 90, 25, 25), "-"))
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();
}
private void Menu_Browser()
{
if (GUI.Button(new Rect(10, 70, 200, 50), "Back"))
{
NavigateTo("Host");
}
if (GUI.Button(new Rect(10, 10, 200, 50), "Refresh"))
{
MasterServer.RequestHostList("DeathMatch");
}
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 ();
}
void OnServerInitialized()
{
NavigateTo ("Lobby");
}
void OnConnectToServer()
{
NavigateTo ("Lobby");
}
} MULTIPLAYER SCRIPT: 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 OnServerInitialized()
{
Server_PlayerJoinRequest(PlayerName, Network.player);
}
void OnConnectToServer()
{
networkView.RPC ("Server_PlayerJoinRequest", RPCMode.Server, PlayerName, Network.player);
}
void OnPlayerDisconnected(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;
}
and the problem = i can't connect the server i click connect and not working please help sorry my english :(
Comment
Hi,
Did you find any solution to your problem? I am also facing the same problem :(
Answer by SamTheT · Apr 21, 2015 at 12:12 PM
So, on of the problems is that you don't even define this "instance" thing, you can just try removing it