- Home /
CS0103 Error
I am getting this error for my script
Assets/Scripts/MenuManager.cs(87,39): error CS0103: The name `pl' does not exist in the current context
This is the MenuManager Script -
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 = "Insert Name Here " + 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(350,10,150,30), MultiplayerManager.instance.PlayerName);
if(GUI.Button(new Rect(520,10,100,30), "Save Name"))
{
PlayerPrefs.GetString("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_Lobby()
{
ScrollLobby = GUILayout.BeginScrollView(ScrollLobby, GUILayout.MaxWidth(200));
foreach (MPPlayer pl in MultiplayerManager.instance.PlayerList);
{
GUILayout.Box(pl.PlayerName);
}
GUILayout.EndScrollView();
}
private void Menu_HostGame()
{
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.TextField(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;
}
void OnServerInitialized()
{
NavigateTo("Lobby");
}
void OnConnectedToServer()
{
NavigateTo("Lobby");
}
}
And this is the MultiPlayer Manager
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, "Name");
//Network.InitializeSecurity();
}
void OnServerInitialized()
{
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);
}
[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 = "PlayerName";
public NetworkPlayer PlayerNetwork;
}
I used this tutorial Thanks :D If you help I will put your name in the credits
Comment
Best Answer
Answer by Shrandis · Nov 23, 2012 at 07:56 AM
In your MenuManager script:
private void Menu_Lobby()
{
ScrollLobby = GUILayout.BeginScrollView(ScrollLobby, GUILayout.MaxWidth(200));
foreach (MPPlayer pl in MultiplayerManager.instance.PlayerList);
{
GUILayout.Box(pl.PlayerName);
}
GUILayout.EndScrollView();
}
Remove the semicolon that is directly after foreach.
Please don't forget to click thumbs up and checkmark icons near the answer to close the question if the answer is correct.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
what is wrong with this online FPS script(not done) ? 1 Answer
Argument out of Range 1 Answer
NullReferenceException 1 Answer