- Home /
Script Errors with C#
I am following this tutorial involving setting up Smart Fox Server Pro with Unity.
Multiplayer with Unity and SmartFox tutorial
Everything is fine until it comes to adding the scripts. I copied and pasted the code in both scripts as it states, and the gui_Login.cs script now has three errors.
Assets/Scripts/gui_Login.cs(176,13): error CS1520: Class, struct, or interface method must have a return type
Assets/Scripts/gui_Login.cs(177,34): error CS1519: Unexpected symbol `(' in class, struct, or interface member declaration
Assets/Scripts/gui_Login.cs(179,13): error CS8025: Parsing error
I copied the code as it states, named the file as it states and I don't understand the problems. I normally script in Javascript, not C# so I don't understand.
Here is the script:
using UnityEngine;
using System; using System.Collections; // for using hash tables using System.Security.Permissions; // for getting the socket policy using SmartFoxClientAPI; // to setup SmartFox connection using SmartFoxClientAPI.Data; // necessary to access the room resource
public class gui_Login : MonoBehaviour {
// smartFox variables
private SmartFoxClient smartFox;
private string serverIP = "127.0.0.1";
private int serverPort = 9339; // default = 9339
public string zone = "city";
public bool debug = true;
// variables used in script
private string statusMessage = "";
private string username = "";
void Awake() {
Application.runInBackground = true; // Let the application be running while the window is not active.
// Create SmartFox connection if not already available
if ( SmartFox.IsInitialized() ) {
Debug.Log("SmartFox is already initialized, reusing connection");
smartFox = SmartFox.Connection;
} else {
if( Application.platform == RuntimePlatform.WindowsWebPlayer ) {
// Only set this for the webplayer, it breaks pc standalone
// See http://answers.unity3d.com/questions/25122/ for details
Security.PrefetchSocketPolicy(serverIP, serverPort);
}
try {
Debug.Log("Starting new SmartFoxClient");
smartFox = new SmartFoxClient(debug);
smartFox.runInQueueMode = true;
} catch ( Exception e ) {
Debug.Log(e.ToString());
}
}
// Register callback delegates, before callling Connect()
SFSEvent.onConnection += OnConnection;
SFSEvent.onConnectionLost += OnConnectionLost;
SFSEvent.onLogin += OnLogin;
SFSEvent.onRoomListUpdate += OnRoomList;
SFSEvent.onDebugMessage += OnDebugMessage;
//SFSEvent.onJoinRoom += OnJoinRoom; // We will not join a room in this level
Debug.Log("Attempting to connect to SmartFoxServer");
smartFox.Connect(serverIP, serverPort);
}
void FixedUpdate() {
smartFox.ProcessEventQueue();
}
void OnGUI() {
// server IP in bottom left corner
GUI.Label(new Rect(10, Screen.height-25, 200, 24), "Server: " + serverIP);
// quit button in bottom right corner
if ( Application.platform != RuntimePlatform.WindowsWebPlayer ) {
if ( GUI.Button(new Rect(Screen.width-150, Screen.height - 50, 100, 24), "Quit") ) {
smartFox.Disconnect();
UnregisterSFSSceneCallbacks();
Application.Quit();
}
}
// Show login fields if connected and reconnect button if disconnect
if (smartFox.IsConnected()) {
GUI.Label(new Rect(10, 116, 100, 100), "Username: ");
username = GUI.TextField(new Rect(100, 116, 200, 20), username, 25);
if ( GUI.Button(new Rect(100, 166, 100, 24), "Login") || (Event.current.type == EventType.keyDown && Event.current.character == '\n')) {
smartFox.Login(zone, username, "");
}
} else {
if ( GUI.Button(new Rect(100, 166, 100, 24), "Reconnect") || (Event.current.type == EventType.keyDown && Event.current.character == '\n')) {
Application.LoadLevel("sc_City");
}
}
// Draw box for status messages, if one is given
// Contains some logic to parse message of multiple lines if necessary
if (statusMessage.Length > 0)
{
int boxLength = 61; // define length of status box
int messageLength = statusMessage.Length; // get length of status message
string originalMessage = statusMessage; // copy message in to work string
string formattedMessage = ""; // define output message string
int i = 0;
while (i + boxLength < messageLength) // iterate and add newline until over length
{
formattedMessage = formattedMessage + originalMessage.Substring(i,boxLength) + "\n";
i = i + boxLength;
}
// add last piece of original message
formattedMessage = formattedMessage + originalMessage.Substring(i, boxLength - (i + boxLength - messageLength));
// draw status box with message
GUI.Box (new Rect (Screen.width - 420,10,400,48), formattedMessage);
}
}
private void UnregisterSFSSceneCallbacks() {
// This should be called when switching scenes, so callbacks from the backend do not trigger code in this scene
SFSEvent.onConnection -= OnConnection;
SFSEvent.onConnectionLost -= OnConnectionLost;
SFSEvent.onLogin -= OnLogin;
SFSEvent.onRoomListUpdate -= OnRoomList;
SFSEvent.onDebugMessage -= OnDebugMessage;
//SFSEvent.onJoinRoom -= OnJoinRoom;
}
void OnConnection(bool success, string error) {
if ( success ) {
SmartFox.Connection = smartFox;
statusMessage = "Connected to SmartFox Server";
Debug.Log(statusMessage);
} else {
statusMessage = "Can't connect! " + error;
Debug.Log(statusMessage);
}
}
void OnConnectionLost() {
statusMessage = "Connection lost / no connection to server";
}
public void OnDebugMessage(string message) {
Debug.Log("[SFS DEBUG] " + message);
}
public void OnLogin(bool success, string name, string error) {
if ( success ) {
statusMessage = "Login for user \"" + name + "\" successful.";
// Lets wait for the room list
} else {
// Login failed - lets display the error message sent to us
statusMessage = "Login error: " + error;
}
}
/* // We will not join a room in this level, the NetworkController in the next scene will take care of that void OnJoinRoom(Room room) { Debug.Log("Room " + room.GetName() + " joined successfully"); smartFox.SendPublicMessage(smartFox.myUserName + " has joined"); // We can now move on to the next level UnregisterSFSSceneCallbacks(); Application.LoadLevel("sc_City"); }
* /
void OnRoomList(Hashtable roomList) {
try {
foreach (int roomId in roomList.Keys) {
Room room = (Room)roomList[roomId];
if (room.IsPrivate()) {
Debug.Log("Room id: " + roomId + " has name: " + room.GetName() + "(private)");
}
Debug.Log("Room id: " + roomId + " has name: " + room.GetName());
}
// Users always have to be in a room, but we'll do that in the next level
/*
if (smartFox.GetActiveRoom() == null) {
smartFox.JoinRoom("Central Square");
}*/
UnregisterSFSSceneCallbacks(); /*Error 1 and 2*/
Application.LoadLevel("sc_City");
}
catch (Exception e) { /*Error 3*/
Debug.Log("Room list error: "+e.Message+" "+e.StackTrace);
}
}
}
The errors listed above are marked in the script at the bottom where it says its occuring.
Any help would be greatly appreciated. Thanks in advance.
Answer by Jesse Anders · Jan 19, 2011 at 09:20 AM
If you look at the syntax highlighting, you should see that you've commented out part of a function, but left the rest of it, resulting in various parsing errors. (It looks like the cause of the incorrect commenting is a ' /' that should be a '/'.)
[Edit: It looks like the error is in the tutorial as well. But, it's pretty easy to see that the comments are messed up, which provides a pretty good hint as to the cause of the errors.]
Your answer
Follow this Question
Related Questions
unity 3d - c# scripting problems 1 Answer
CS8025 Parsing error 3 Answers
Jukebox parsing error 2 Answers
Whats wrong with this script? 1 Answer
CS8025 parsing error, can't find, halp ! 0 Answers