Esempio n. 1
0
        /// <summary>
        /// Handle Received Data
        /// </summary>
        /// 
        protected override void HandleData(CString Packet)
        {
            int prevPacket = 0;
            uint readc = 0;

            while (Packet.BytesLeft > 0)
            {
                CString CurPacket;

                // Grab Single Packet
                if (prevPacket == 100)
                    CurPacket = Packet.ReadChars2(readc);
                else
                    CurPacket = Packet.ReadString('\n');

                // Read Packet Type
                int PacketId = CurPacket.ReadGUByte1();

                // Run Internal Packet Function
                switch ((PacketIn)PacketId)
                {

                    // Packet 6 - Set Active Level & Clear
                    case PacketIn.LEVELNAME:
                        //ActiveLevel = Server.FindLevel(CurPacket.ReadString().Text);
                        //ActiveLevel.Clear();
                        break;

                    // Paceket 1 - Level Links
                    case PacketIn.LEVELLINK:
                        break;

                    // Packet 3 - Level NPC Props
                    case PacketIn.NPCPROPS:
                        {
                            int npcId = CurPacket.ReadGByte3();
                            //if (ActiveLevel != null)
                            //	ActiveLevel.GetNPC(npcId).SetProps(CurPacket);
                            break;
                        }

                    // Packet 5 - Level Signs
                    case PacketIn.LEVELSIGN:
                        break;

                    // Packet 39 - Level Mod Time
                    case PacketIn.LEVELMODTIME:
                        uint modTime = CurPacket.ReadGUByte5();
                        //if (ActiveLevel != null)
                        //	ActiveLevel.SetModTime(modTime);
                        break;

                    case PacketIn.SIGNATURE:
                        {
                            this.ReceivedSignature();

                            break;
                        }

                    case PacketIn.BOARDPACKET:
                        {
                            break;
                        }

                    case PacketIn.RAWDATA:
                        readc = CurPacket.ReadGUByte3();
                        //Console.WriteLine(":::readc::::" + readc.ToString() + "::::");
                        break;

                    // Packet 150 - Delete Level NPC
                    case PacketIn.NPCDEL2:

                        string _levelName = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                        int _npcId = CurPacket.ReadGByte3();
                        this.DeleteLevelNpc(_levelName, _npcId);
                        break;

                    // Packet 156 - Set Active Level
                    case PacketIn.SETACTIVELEVEL:
                        //ActiveLevel = Server.FindLevel(CurPacket.ReadString().Text);
                        break;

                    case PacketIn.ADDPLAYER:
                        {
                            short playerId = CurPacket.ReadGByte2();
                            string playerAccount = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                            Dictionary<int,dynamic> props = GraalPlayer.ParseProps(CurPacket);
                            this.AddPlayer(playerId, playerAccount, props);

                            break;
                        }

                    case PacketIn.DELPLAYER:
                        {
                            short pId = CurPacket.ReadGByte2();
                            //Server.PlayerManager.DeletePlayer(pId);
                            break;
                        }

                    // Add Player & Set Props
                    case PacketIn.OTHERPLPROPS:
                        {
                            /*
                            GraalPlayer Player = (GraalPlayer)Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());

                            if (Player != null)
                            {
                                Player.SetProps(CurPacket);
                            }
                            */
                            break;
                        }

                    case PacketIn.FLAGSET:
                        {
                            //GraalPlayer Player = (GraalPlayer)Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            String FlagName = CurPacket.ReadString('=').Text;
                            String FlagValue = CurPacket.ReadString().Text;
                            /*
                            if (Player != null)
                                Player.Flags[FlagName] = FlagValue;
                            */
                            break;
                        }

                    case PacketIn.PLAYERPROPS:
                        {
                            /*
                            if (this.form.NCPlayer == null)
                                this.form.NCPlayer = Server.PlayerManager.AddPlayer(0);
                            //this.form.WriteText(" -!- ME!\r\n");
                            this.form.NCPlayer.SetProps(CurPacket);
                            */
                            break;
                        }

                    // Add weapon to list
                    case PacketIn.NPCWEAPONADD:
                        {
                            String WeaponName = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                            String WeaponImage = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                            String WeaponScript = CurPacket.ReadString().Text;
                            //Server.SetWeapon(WeaponName, WeaponImage, WeaponScript, false);
                            break;
                        }

                    // Add/Remove weapon from Player
                    case PacketIn.NPCWEAPONDEL:
                        {
                            /*
                            GraalPlayer Player = Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            if (Player != null)
                            {
                                bool addWeapon = (CurPacket.ReadGByte1() > 0);
                                String name = CurPacket.ReadString().Text;
                                if (addWeapon)
                                    Player.AddWeapon(name);
                                else
                                    Player.DeleteWeapon(name, false);
                            }
                            */
                            break;
                        }

                    case PacketIn.UNKNOWN60:
                        {
                            /*
                            GraalPlayer Player = Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            if (Player != null)
                            {
                                while (CurPacket.BytesLeft > 0)
                                    Player.AddWeapon(CurPacket.ReadChars(CurPacket.ReadGUByte1()));
                            }
                            */
                            break;
                        }

                    case PacketIn.NEWWORLDTIME: // Remove Class from List
                        //Server.NWTime = CurPacket.ReadGByte4();
                        break;

                    // Private Message
                    case PacketIn.PRIVATEMESSAGE:
                        {
                            short PlayerId = CurPacket.ReadGByte2();
                            CString Message = CurPacket.ReadString();

                            this.ReceivedPM(PlayerId, Message);

                            break;
                        }
                    case PacketIn.TOALL:
                        {

                            short PlayerId = CurPacket.ReadGByte2();
                            CString Message = CurPacket.ReadString();
                            //this.form.WriteText(Message.Text);
                            this.ReceivedToall(PlayerId, Message);

                            break;
                        }
                    case PacketIn.RC_SERVEROPTIONSGET:
                        string serverOptions = CurPacket.ReadString().Untokenize().ToString();
                        this.ReceivedServerOptions(serverOptions);
                        break;
                    case PacketIn.RC_SERVERFLAGSGET:
                        int serverFlagsTotal = CurPacket.ReadGByte2();
                        List<string> serverFlags = new List<string>();
                        string serverFlagsString = "";
                        while (CurPacket.BytesLeft > 0)
                        {
                            serverFlags.Add(CurPacket.ReadChars(CurPacket.ReadGUByte1()));
                        }
                        serverFlags.Sort();
                        foreach (string sf in serverFlags)
                            serverFlagsString += sf + "\n";

                        this.ReceivedServerFlags(serverFlagsTotal, serverFlagsString);
                        break;
                    case PacketIn.RC_FOLDERCONFIGGET:
                        string folderConfig = CurPacket.ReadString().Untokenize().ToString();
                        this.ReceivedFolderConfig(folderConfig);
                        break;
                    case PacketIn.RC_FILEBROWSER_DIR:
                        //CString s2 = CurPacket.Untokenize();
                        this.WriteText(CurPacket.Text);
                        break;
                    // Servertext
                    case PacketIn.SERVERTEXT:
                        {
                            CString Message = CurPacket.ReadString();

                            string TheMessage2 = "";
                            TheMessage2 = CString.untokenize(Message.Text);
                            string[] test = TheMessage2.Split('\n');
                            List<string> test2 = new List<string>(test);

                            this.ReceivedServertext(test2);

                            break;
                        }

                    case PacketIn.SHOWIMG:
                        {
                            break;
                        }
                    case PacketIn.DISCMESSAGE:
                        {
                            //Console.WriteLine("PacketId: " + PacketId.ToString());
                            string _disconnectMessage = CurPacket.ReadString().Text;//Enum.GetName(typeof(PacketIn), PacketId).ToString();
                            this.Disconnected(_disconnectMessage);

                            break;
                        }
                    case PacketIn.RC_CHAT:
                        this.ReceivedRCChat(CurPacket.ReadString().Text);
                        break;
                    default:
                        {
                            Console.WriteLine("PacketId: " + PacketId.ToString());
                            try
                            {
                                string packetName = Enum.GetName(typeof(PacketIn), PacketId).ToString();
                                //this.form.WriteText("[" + packetName + "]: " + CurPacket.ReadString().Text + "");
                            }
                            catch (IndexOutOfRangeException e)
                            {

                            }
                            catch (NullReferenceException e)
                            {

                            }
                            break;
                        }
                }

                prevPacket = PacketId;

            }
        }
        /// <summary>
        /// Handle Received Data
        /// </summary>
        /// 
        protected override void HandleData(CString Packet)
        {
            if (this.serverWindow == null)
                this.serverWindow = ServerWindow.GetInstance();

            int prevPacket = 0;
            uint readc = 0;

            //System.Console.WriteLine("Test: " + Packet.Text);

            while (Packet.BytesLeft > 0)
            {
                CString CurPacket;
                // Grab Single Packet
                if (prevPacket == 100)
                    CurPacket = Packet.ReadChars2(readc);
                else
                    CurPacket = Packet.ReadString('\n');

                // Read Packet Type
                int PacketId = CurPacket.ReadGUByte1();

                // Call Packet Callback
                //RemoteControl.CallCallBack(PacketId, (CString)CurPacket.DeepClone());

                // Run Internal Packet Function
                switch ((PacketIn)PacketId)
                {
                    case PacketIn.LEVELCHEST:
                        {
                            CString Message = CurPacket.ReadString();

                            this.serverWindow.ErrorMsg = Message.Text.ToString();

                            //this.errorWindow.error_label.Text = Message.Text.ToString();

                            break;
                        }

                    case PacketIn.LEVELBOARD:
                        int serverCount = CurPacket.ReadGUByte1();
                        this.serverWindow.Write_Text("Number of servers: " + serverCount.ToString());
                        this.serverList.Clear();
                        this.listStore.Clear();
                        for (int i = 0; i < serverCount; i++)
                        {
                            // empty byte
                            CurPacket.ReadGUByte1();

                            // add server
                            TServer server = this.serverList.AddTServer((short)i);

                            // parse server
                            server.setName(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setLanguage(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setDescription(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setUrl(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setVersion(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setPCount(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            server.setIp(new CString(CurPacket.ReadChars(CurPacket.ReadGUByte1())));
                            int port;
                            int.TryParse(CurPacket.ReadChars(CurPacket.ReadGUByte1()), out port);
                            server.setPort(port);

                            Gdk.Pixbuf icon;

                            if (server.getType() == "1")
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_nuclear.png");
                            else if (server.getType() == "2")
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_gold.png");
                            else if (server.getType() == "3")
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_silver.png");
                            else if (server.getType() == "4")
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_bronze.png");
                            else if (server.getType() == "5")
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_uc.png");
                            else
                                icon = global::Gdk.Pixbuf.LoadFromResource("OpenGraal.GraalIM.Resources.rcicon_uc.png");

                            ServerWindow sw = ServerWindow.GetInstance();
                            this.listStore.AppendValues(icon, server.name, server.getPCount());

                        }
                        break;
                    default:
                        this.serverWindow.Write_Text("[" + Enum.GetName(typeof(PacketIn), PacketId).ToString() + "]: " + CurPacket.ReadString().Text + "\r\n");

                        break;
                }

                prevPacket = PacketId;

            }
            //if (this.serverWindow.ErrorMsg != "error")
            //	this.serverWindow.Hide();
        }
        /// <summary>
        /// Handle Received Data
        /// </summary>
        /// 
        protected override void HandleData(CString Packet)
        {
            // Check if the instance of Framework is null and get the instance if it is.
            if (Server == null)
                Server = Framework.GetInstance();

            if (this.form == null)
                this.form = Abstraction.GetInstance();

            int prevPacket = 0;
            uint readc = 0;

            while (Packet.BytesLeft > 0)
            {
                CString CurPacket;

                // Grab Single Packet
                if (prevPacket == 100)
                    CurPacket = Packet.ReadChars2(readc);
                else
                    CurPacket = Packet.ReadString('\n');

                // Read Packet Type
                int PacketId = CurPacket.ReadGUByte1();

                // Run Internal Packet Function
                switch ((PacketIn)PacketId)
                {

                // Packet 6 - Set Active Level & Clear
                    case PacketIn.LEVELNAME:
                        //ActiveLevel = Server.FindLevel(CurPacket.ReadString().Text);
                        //ActiveLevel.Clear();
                        break;

                // Paceket 1 - Level Links
                    case PacketIn.LEVELLINK:
                        break;

                // Packet 3 - Level NPC Props
                    case PacketIn.NPCPROPS:
                        {
                            int npcId = CurPacket.ReadGByte3();
                            //if (ActiveLevel != null)
                            //	ActiveLevel.GetNPC(npcId).SetProps(CurPacket);
                            break;
                        }

                // Packet 5 - Level Signs
                    case PacketIn.LEVELSIGN:
                        break;

                // Packet 39 - Level Mod Time
                    case PacketIn.LEVELMODTIME:
                        uint modTime = CurPacket.ReadGUByte5();
                        //if (ActiveLevel != null)
                        //	ActiveLevel.SetModTime(modTime);
                        break;

                    case PacketIn.SIGNATURE:
                        {
                            this.form.WriteText("Connected!");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.PLAYERPROPS + (byte)PLPROPS.NICKNAME + (byte)this.Nickname.Length + this.Nickname);
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,pmguilds,\"\"");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,pmservers,\"all\"");
                            //Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,pmserverplayers,\"U Classic iPhone\"\n");

                            Server.SendGSPacket(new CString() + (byte)PacketOut.SENDTEXT + "GraalEngine,lister,options,globalpms=true,buddytracking=true,showbuddies=true");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.SENDTEXT + "GraalEngine,lister,verifybuddies,1,1964252486");

                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,lister,addbuddy,\"unixmad\"");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,lister,addbuddy,\"stefan\"");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,lister,addbuddy,\"tig\"");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,lister,addbuddy,\"skyld\"");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "GraalEngine,lister,addbuddy,\"xor\"");
                            //Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "-ShopGlobal,lister,getglobalitems\n");

                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "-Serverlist,lister,list,all");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "-Serverlist,lister,upgradeinfo\n");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "-Serverlist,lister,subscriptions\n");
                            Server.SendGSPacket(new CString() + (byte)PacketOut.REQUESTTEXT + "-Serverlist,lister,getlockcomputer");

                            // Logging into IRC.
                            Server.SendGSPacket(new CString() + (byte)154 + "-Serverlist_Chat,irc,login,-");
                            Server.SendGSPacket(new CString() + (byte)154 + "-Serverlist_Chat,irc,privmsg,IRCBot,!geteventbots");
                            Server.SendGSPacket(new CString() + (byte)154 + "-Serverlist_Chat,irc,join,#graalim");

                            break;
                        }

                    case PacketIn.BOARDPACKET:
                        {
                            break;
                        }

                    case PacketIn.RAWDATA:
                        readc = CurPacket.ReadGUByte3();
                        Console.WriteLine(":::readc::::" + readc.ToString() + "::::");
                        break;

                // Packet 150 - Delete Level NPC
                    case PacketIn.NPCDEL2:
                        //Server.FindLevel(CurPacket.ReadChars(CurPacket.ReadGUByte1())).DeleteNPC(CurPacket.ReadGByte3());
                        break;

                // Packet 156 - Set Active Level
                    case PacketIn.SETACTIVELEVEL:
                        //ActiveLevel = Server.FindLevel(CurPacket.ReadString().Text);
                        break;

                    case PacketIn.ADDPLAYER:
                        {
                            Player Player = (Player)Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());

                            if (Player != null)
                            {
                                Player.Account = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                                Player.SetProps(CurPacket);
                            }

                            break;
                        }

                    case PacketIn.DELPLAYER:
                        {
                            short pId = CurPacket.ReadGByte2();
                            Server.PlayerManager.DeletePlayer(pId);
                            break;
                        }

                // Add Player & Set Props
                    case PacketIn.OTHERPLPROPS:
                        {
                            Player Player = (Player)Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());

                            if (Player != null)
                            {
                                Player.SetProps(CurPacket);
                            }

                            break;
                        }

                    case PacketIn.FLAGSET:
                        {
                            Player Player = (Player)Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            String FlagName = CurPacket.ReadString('=').Text;
                            String FlagValue = CurPacket.ReadString().Text;
                            if (Player != null)
                                Player.Flags[FlagName] = FlagValue;
                            break;
                        }

                    case PacketIn.PLAYERPROPS:
                        {
                            if (this.form.NCPlayer == null)
                                this.form.NCPlayer = Server.PlayerManager.AddPlayer(0);
                            //this.form.WriteText(" -!- ME!\r\n");
                            this.form.NCPlayer.SetProps(CurPacket);
                            break;
                        }

                // Add weapon to list
                    case PacketIn.NPCWEAPONADD:
                        {
                            String WeaponName = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                            String WeaponImage = CurPacket.ReadChars(CurPacket.ReadGUByte1());
                            String WeaponScript = CurPacket.ReadString().Text;
                            //Server.SetWeapon(WeaponName, WeaponImage, WeaponScript, false);
                            break;
                        }

                // Add/Remove weapon from Player
                    case PacketIn.NPCWEAPONDEL:
                        {
                            Player Player = Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            if (Player != null)
                            {
                                bool addWeapon = (CurPacket.ReadGByte1() > 0);
                                String name = CurPacket.ReadString().Text;
                                if (addWeapon)
                                    Player.AddWeapon(name);
                                else
                                    Player.DeleteWeapon(name, false);
                            }

                            break;
                        }

                    case PacketIn.UNKNOWN60:
                        {
                            Player Player = Server.PlayerManager.AddPlayer(CurPacket.ReadGByte2());
                            if (Player != null)
                            {
                                while (CurPacket.BytesLeft > 0)
                                    Player.AddWeapon(CurPacket.ReadChars(CurPacket.ReadGUByte1()));
                            }
                            break;
                        }

                    case PacketIn.NEWWORLDTIME: // Remove Class from List
                        Server.NWTime = CurPacket.ReadGByte4();
                        break;

                // Private Message
                    case PacketIn.PRIVATEMESSAGE:
                        {
                            short PlayerId = CurPacket.ReadGByte2();
                            CString Message = CurPacket.ReadString();

                            this.ReceivePM(PlayerId, Message);

                            break;
                        }
                    case PacketIn.TOALL:
                        {

                            short PlayerId = CurPacket.ReadGByte2();
                            CString Message = CurPacket.ReadString();
                            //this.form.WriteText(Message.Text);
                            this.ReceiveToall(PlayerId, Message);

                            break;
                        }
                    case PacketIn.RC_SERVEROPTIONSGET:
                        string serverOptions = CurPacket.ReadString().Untokenize().ToString();
                        this.form.WriteText(serverOptions);
                        break;
                    case PacketIn.RC_SERVERFLAGSGET:
                        int serverFlagsTotal = CurPacket.ReadGByte2();
                        List<string> serverFlags = new List<string>();
                        string serverFlagsString = "";
                        while (CurPacket.BytesLeft > 0)
                        {
                            serverFlags.Add(CurPacket.ReadChars(CurPacket.ReadGUByte1()));
                        }
                        serverFlags.Sort();
                        foreach (string sf in serverFlags)
                            serverFlagsString += sf + "\n";

                        this.ReceivedServerFlags(serverFlagsTotal, serverFlagsString);
                        break;
                    case PacketIn.RC_FOLDERCONFIGGET:
                        //CString s2 = CurPacket.Untokenize();
                        string folderConfig = CurPacket.ReadString().Untokenize().ToString();
                        this.ReceivedFolderConfig(folderConfig);
                        break;
                    case PacketIn.RC_FILEBROWSER_DIR:
                        //CString s2 = CurPacket.Untokenize();
                        this.form.WriteText(CurPacket.ReadString().ToString());
                        break;
                    case PacketIn.RC_FILEBROWSER_DIRLIST:
                        List<string> fileBrowserDirList = new List<string>(CurPacket.ReadString().Untokenize().ToString().Split('\n'));
                        fileBrowserDirList.Sort();
                        foreach (string dir in fileBrowserDirList)
                            this.form.WriteText(dir);
                        break;
                    case PacketIn.RC_FILEBROWSER_MESSAGE:
                        this.form.WriteText(CurPacket.ReadString().ToString());
                        break;
                // Servertext
                    case PacketIn.SERVERTEXT:
                        {
                            CString Message = CurPacket.ReadString();

                            this.form = Abstraction.GetInstance();

                            string TheMessage2 = "";
                            TheMessage2 = CString.untokenize(Message.Text);
                            string[] test = TheMessage2.Split('\n');
                            List<string> test2 = new List<string>(test);

                            if (test2[0].Trim() == "GraalEngine" || test2[0].Trim() == "-Playerlist")
                            {
                                if (test2[1].Trim() == "lister")
                                {
                                }
                            }
                            else if (test2[0].Trim() == "-Serverlist_Chat")
                            {
                                if (test2[1].Trim() == "irc")
                                {
                                    switch (test2[2].Trim())
                                    {
                                        case "join":
                                            {
                                                this.form.OpenIRC(test2[3].Trim());
                                                break;
                                            }

                                        case "addchanneluser"://[SERVERTEXT]: -Serverlist_Chat irc addchanneluser #graal CrypticMyst login1 Gos_Pira
                                            {
                                                this.form.IRC_AddChannelUser(test2[3].Trim(), test2[4].Trim());
                                                break;
                                            }
                                        case "deletechanneluser"://[SERVERTEXT]: -Serverlist_Chat irc delchanneluser #graal CrypticMyst
                                            {
                                                this.form.IRC_AddChannelUser(test2[3].Trim(), test2[4].Trim(), true);
                                                break;
                                            }
                                        case "privmsg":
                                            {
                                                string message = test2[5].Trim();
                                                if (test2[4].Trim().StartsWith("#"))
                                                    this.form.IRC_Privmsg(test2[3].Trim(), test2[4].Trim(), message);
                                                else
                                                {

                                                    this.ReceivePM(test2[3].Trim(), new CString(message));
                                                }
                                                break;
                                            }

                                        default:
                                            {

                                                break;
                                            }
                                    }

                                }
                            }
                            else if (test2[0].Trim() == "-Serverlist")
                            {
                                if (test2[1].Trim() == "lister")
                                {
                                    #region SimpleServerList
                                    if (test2[2].Trim() == "subscriptions2")
                                    {
                                        string subscription = "Trial";
                                        //this.form.WriteText(test2.Count.ToString());

                                        if (test2.Count > 3)
                                        {
                                            //this.form.WriteText(test2.Count.ToString());
                                            string server2 = CString.untokenize(test2[3].Trim());
                                            string[] test3 = server2.Split('\n');
                                            subscription = test3[1].Trim();
                                        }

                                        this.form.SetSubscriptionText("Subscription: " + subscription);
                                    }
                                    else if (test2[2].Trim() == "lockcomputer")
                                    {
                                        int locked = 0;
                                        int.TryParse(test2[3].Trim(), out locked);

                                        this.form.SetLockedByComputerText("Locked by PC-ID: " + ((locked == 1) ? "Yes" : "No"));
                                    }
                                    else if (test2[2].Trim() == "simpleserverlist" || test2[2].Trim() == "serverlist")
                                    {
                                        List<string> servers = test2;
                                        servers.RemoveRange(0, 3);
                                        this.form.WriteText("SERVERS(" + servers.Count + "):");
                                        this.form.WriteText("------------");
                                        //this.form.WriteText("[SERVERTEXT]: " + TheMessage2 + "");
                                        foreach (string server in servers)
                                        {
                                            //CString server2 = new CString();
                                            //server2.Write(server);
                                            if (server != "")
                                            {
                                                string server2 = CString.untokenize(server);
                                                string[] test3 = server2.Split('\n');
                                                //this.form.Write_Text(server2 + "\r\n");
                                                var servername = "";
                                                var servertype = "";
                                                if (test3[1].Trim().Substring(0, 2) == "P " || test3[1].Trim().Substring(0, 2) == "H " || test3[1].Trim().Substring(0, 2) == "3 " || test3[1].Trim().Substring(0, 2) == "U ")
                                                {
                                                    servertype = test3[1].Trim().Substring(0, 2);
                                                    servername = test3[1].Trim().Substring(2, test3[1].Trim().Length - 2);
                                                    if (servertype == "P ")
                                                        servertype = "Gold";
                                                    if (servertype == "H ")
                                                        servertype = "Hosted";
                                                    if (servertype == "3 ")
                                                        servertype = "3D";
                                                    if (servertype == "U ")
                                                        servertype = "Hidden";
                                                }
                                                else
                                                {
                                                    servertype = "Classic";
                                                    servername = test3[1].Trim();
                                                }

                                                var serverid = test3[0].Trim();
                                                var serverpc = test3[2].Trim();

                                                this.form.WriteText(" * Id: " + serverid + " Type: " + servertype + " Name: " + servername + " Players: " + serverpc + "");
                                            }

                                        }
                                        this.form.WriteText("");
                                    }
                                    else
                                        this.form.WriteText("[SERVERTEXT]: " + TheMessage2.Replace("\r\n", ",") + "");
                                    #endregion
                                }
                            }
                            else
                            { }// this.form.WriteText("[SERVERTEXT]: " + TheMessage2.Replace("\r\n", ",") + "");

                            break;
                        }

                    case PacketIn.SHOWIMG:
                        {
                            break;
                        }
                    case PacketIn.DISCMESSAGE:
                        {
                            //Console.WriteLine("PacketId: " + PacketId.ToString());
                            string packetName = "";//Enum.GetName(typeof(PacketIn), PacketId).ToString();
                            this.form.WriteText("Disconnect: " + CurPacket.ReadString().Text + "\r\n");

                            break;
                        }
                    case PacketIn.RC_CHAT:
                        this.form.WriteText(CurPacket.ReadString().Text + "");
                        break;
                    default:
                        {
                            Console.WriteLine("PacketId: " + PacketId.ToString());
                            try
                            {
                                string packetName = Enum.GetName(typeof(PacketIn), PacketId).ToString();
                                this.form.WriteText("[" + packetName + "]: " + CurPacket.ReadString().Text + "");
                            }
                            catch (IndexOutOfRangeException e)
                            {

                            }
                            catch (NullReferenceException e)
                            {

                            }
                            break;
                        }
                }

                prevPacket = PacketId;

            }
        }