Can't add script behaviour NetworkController. You need to fix all compile errors in all scripts first!

Ok so im following a tutorial and I need to grab a script from a demo and put it into my game. The problem is that in the demo the script works and whenever I try to put it in my game I get this error:

"Can't add script behaviour NetworkController. You need to fix all compile errors in all scripts first!"

The code looks like this :

using UnityEngine;
using System.Collections;

using System;
using SmartFoxClientAPI;
using SmartFoxClientAPI.Data;

public class NetworkController : MonoBehaviour {

    private static SmartFoxClient smartFoxClient;

    public static SmartFoxClient GetClient() {
        return SmartFox.Connection;
    }

    #region Events

    private bool started = false;

    private void SubscribeEvents() {
        SFSEvent.onJoinRoom += OnJoinRoom;
        SFSEvent.onUserEnterRoom += OnUserEnterRoom;
        SFSEvent.onUserLeaveRoom += OnUserLeaveRoom;
        SFSEvent.onObjectReceived += OnObjectReceived;
        SFSEvent.onPublicMessage += OnPublicMessage;
    }

    private void UnsubscribeEvents() {
        SFSEvent.onJoinRoom -= OnJoinRoom;
        SFSEvent.onUserEnterRoom -= OnUserEnterRoom;
        SFSEvent.onUserLeaveRoom -= OnUserLeaveRoom;
        SFSEvent.onObjectReceived -= OnObjectReceived;
        SFSEvent.onPublicMessage -= OnPublicMessage;
    }

    void FixedUpdate() {
        if (started) {
            smartFoxClient.ProcessEventQueue();
        }
    }

    #endregion Events

    // We start working from here
    void Start() {
        Application.runInBackground = true; // Let the application be running whyle the window is not active.
        smartFoxClient = GetClient();
        if (smartFoxClient==null) {
            Application.LoadLevel("login");
            return;
        }   
        SubscribeEvents();
        started = true;
        smartFoxClient.JoinRoom("The Garden");
    }

    // We should unsubscribe all delegates before quitting the application to avoid probleems.
    // Also we should Disconnect from server
    void OnApplicationQuit() {
        UnsubscribeEvents();
        smartFoxClient.Disconnect();
    }

    private void OnJoinRoom(Room room) {
        SendMessage("SpawnPlayers");
        Debug.Log("Connected !");
    }

    // This will be invoked when remote player enters our room
    private void OnUserEnterRoom(int roomId, User user)
    {
        //We assume here that we have only one room - so no need to check roomId
        SendMessage("UserEnterRoom", user);
    }

    // This will be invoked when a remote player lefts our room
    private void OnUserLeaveRoom(int roomId, int userId, string userName)
    {
        SendMessage("UserLeaveRoom", userId);
    }

    // Here we process incoming SFS objects
    private void OnObjectReceived(SFSObject data, User fromUser) {
        //First determine the type of this object - what it contains ?
        String _cmd = data.GetString("_cmd");
        switch (_cmd) {
            case "t":  // "t" - means transform sync data
                SendTransformToRemotePlayerObject(data, fromUser);
                break;
            case "f":  // "f" - means force our local player to send his transform
                ForceSendTransform(data);
                break;
            case "a": // "a" - for animation message received
                SendAnimationMessageToRemotePlayerObject(data, fromUser);
                break;
        }
    }

    private void SendTransformToRemotePlayerObject(SFSObject data, User fromUser) {
        int userId = fromUser.GetId();
        if (userId!=smartFoxClient.myUserId) {  // If it's not myself
            //Find user object with such Id
            GameObject user = GameObject.Find("remote_"+userId);

            //If found - send him message with transform data
            if (user) user.SendMessage("ReceiveTransform", data);
        }
    }

    private void ForceSendTransform(SFSObject data) {
        //if this message is addressed to this user
        if ((int)data.GetNumber("to_uid") == smartFoxClient.myUserId) {
            // Find local player object
            GameObject user = GameObject.Find("localPlayer");
            // Send him message
            if (user) user.SendMessage("ForceSendTransform");
        }
    }

    private void SendAnimationMessageToRemotePlayerObject(SFSObject data, User fromUser) {
        int userId = fromUser.GetId();
        if (userId!=smartFoxClient.myUserId) {  // If it's not myself
            //Find user object with such Id
            GameObject user = GameObject.Find("remote_"+userId);
            //If found - send him animation message
            if (user) user.SendMessage("PlayAnimation", data.GetString("mes"));
        }
    }

    public void OnPublicMessage(string message, User fromUser, int roomId)
    {
        int userId = fromUser.GetId();
        if (userId!=smartFoxClient.myUserId) {  // If it's not myself
            string mes = fromUser.GetName()+": "+message;

            // Send chat message to the Chat Controller         
            SendMessage("AddChatMessage", mes);

            //Find user object with such Id
            GameObject user = GameObject.Find("remote_"+userId);
            //If found - send him bubble message
            if (user) {
                user.SendMessage("ShowBubble", mes);
            }
        }
    }

}

As Julian Glenn suggests, it would be incredibly helpful if we saw the compile errors, especially the first few errors are essential.

But a wild guess is that you need additional scripts and/or some .dll's from the demo (SmartFox etc.), not just this single script you copied.