- Home /
Question by
EldarWien · Jan 03, 2014 at 05:43 AM ·
multiplayerfpsgamemenu
MultiplayerManager and MenuManager error.Help me.Thanks
Hi.I need help with scripting. I have problems with MultiplayerManager and MenuManager.I did sam thing like in tutorial but when I click on START SERVER nothing to happen.How to solve that ? Sorry for bad english.
Thanks
Here's code: MULTIPLAYERMANAGER:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class MultiplayerManager : MonoBehaviour
{
public static MultiplayerManager Instance;
public string PlayerName;
public string MatchName = "";
public string MatchPassword = "";
public 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 maxuser)
{
MatchName = servername;
MatchPassword = serverpassword;
MatchMaxUsers = maxuser;
Network.InitializeServer(MatchMaxUsers, 2550, false);
MasterServer.RegisterHost("DeathMatch", MatchName, "");
//Network.InitializeSecurity();
}
void OnServerIntialized()
{
Server_PlayerJoinRequest(PlayerName, Network.player);
}
void OnConnectedToServer()
{
networkView.RPC("Server_PlayerJoinRequest", RPCMode.Server, PlayerName, Network.player);
}
void OnPlayerDisconnected(NetworkPlayer id)
{
networkView.RPC("Client_RemovePlayer", RPCMode.All, id);
}
void OnPlayerConnected(NetworkPlayer player)
{
foreach (MPPlayer pl in PlayerList)
{
networkView.RPC("Client_AddPlayerToList", RPCMode.All, pl.PlayerName, pl.PlayerNetwork);
}
}
[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;
}
MENUMANAGER:
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 = "HeyHeyWelcome" + 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 a 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(350, 10, 150, 30), MultiplayerManager.Instance.PlayerName);
if (GUI.Button(new Rect(510, 10, 100, 30), "Save Name"))
{
PlayerPrefs.SetString("PlayerName", MultiplayerManager.Instance.PlayerName);
}
GUILayout.BeginArea(new Rect(Screen.width - 400, 0, 400, Screen.height), "Server List", "Box");
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, 60, 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, 28, 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 OnConnectedToServer()
{
NavigateTo("Lobby");
}
}
Comment
Your answer
![](https://koobas.hobune.stream/wayback/20220613125412im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Creating Fps Game Menu 2 Answers
[Closed] MainMenu Script error 2 Answers
Pause Button Menu loader 2 Answers
Bullet Fire script not working 1 Answer
Animation is broken 0 Answers