namespace Holo.Virtual.Users { using Holo; using Holo.Managers; using Holo.Socketservers; using Holo.Source.Managers; using Holo.Virtual.Rooms; using Holo.Virtual.Rooms.Games; using Holo.Virtual.Rooms.Items; using Holo.Virtual.Rooms.Pathfinding; using Holo.Virtual.Users.Items; using Holo.Virtual.Users.Messenger; using Ion.Storage; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Globalization; using System.Net.Sockets; using System.Runtime.CompilerServices; using System.Text; using System.Threading; public class virtualUser { internal List _Badges = new List(); internal List _badgeSlotIDs = new List(); internal bool _clubMember; internal string _consoleMission; internal int _Credits; internal string _Figure; internal List _fuserights; internal int _groupID; internal int _groupMemberRank; private int _handPage; internal bool _hasRights; internal bool _hostsEvent; internal bool _inPublicroom; private bool _isDisconnected; public bool _isLoggedIn; internal bool _isMuted; internal bool _isOwner; internal string _Mission; internal byte _Rank; private bool _receivedSpriteIndex; internal bool _ROOMACCESS_PRIMARY_OK; internal bool _ROOMACCESS_SECONDARY_OK; internal int _roomID; internal char _Sex; internal int _teleporterID; internal int _Tickets; internal bool _tradeAccept; internal int _tradeItemCount; internal int[] _tradeItems = new int[0x41]; internal int _tradePartnerRoomUID = -1; internal int _tradePartnerUID = -1; internal string _Username; private Thread brbLooper; private int connectionID; private Socket connectionSocket; private byte[] dataBuffer = new byte[0x400]; internal Holo.Virtual.Rooms.Games.gamePlayer gamePlayer; private Thread infobusThread; internal virtualMessenger Messenger; internal bool pingOK; internal virtualRoom Room; private Thread roomRaiderThread; internal virtualRoomUser roomUser; private virtualSongEditor songEditor; internal virtualRoomUserStatusManager statusManager; internal int userID; public virtualUser(int connectionID, Socket connectionSocket) { this.connectionID = connectionID; this.connectionSocket = connectionSocket; try { string banReason = userManager.getBanReason(this.connectionRemoteIP); if (banReason != "") { this.sendData("@c" + banReason); this.Disconnect(); } else { this.pingOK = true; this.sendData("@@"); connectionSocket.BeginReceive(this.dataBuffer, 0, this.dataBuffer.Length, SocketFlags.None, new AsyncCallback(this.dataArrival), null); } } catch { } } internal void abortTrade() { if (((this.Room != null) && this.Room.containsUser(this._tradePartnerRoomUID)) && (this.roomUser != null)) { virtualUser Partner = this.Room.getUser(this._tradePartnerRoomUID); this.sendData("An"); this.refreshHand("update"); Partner.sendData("An"); Partner.refreshHand("update"); this._tradePartnerRoomUID = -1; this._tradeAccept = false; this._tradeItems = new int[0x41]; this._tradeItemCount = 0; this.statusManager.removeStatus("trd"); this.roomUser.Refresh(); Partner._tradePartnerRoomUID = -1; Partner._tradeAccept = false; Partner._tradeItems = new int[0x41]; Partner._tradeItemCount = 0; Partner.statusManager.removeStatus("trd"); Partner.roomUser.Refresh(); } } private void dataArrival(IAsyncResult iAr) { try { DatabaseClient dbClient; int num34; int bytesReceived = this.connectionSocket.EndReceive(iAr); string connectionData = Encoding.Default.GetString(this.dataBuffer, 0, bytesReceived); if (connectionData.Contains("Ap1")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote1 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote1 = '", num34, "'" })); } } else if (connectionData.Contains("Ap2")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote2 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote2 = '", num34, "'" })); } } else if (connectionData.Contains("Ap3")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote3 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote3 = '", num34, "'" })); } } else if (connectionData.Contains("Ap4")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote4 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote4 = '", num34, "'" })); } } else if (connectionData.Contains("Ap5")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote5 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote5 = '", num34, "'" })); } } else if (connectionData.Contains("Ap6")) { using (dbClient = Eucalypt.dbManager.GetClient()) { num34 = dbClient.getInt("SELECT vote6 FROM vote") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE vote SET vote6 = '", num34, "'" })); } } if (((connectionData.Contains("\x0001") || connectionData.Contains("\x0002")) || connectionData.Contains("\x0005")) || connectionData.Contains("\t")) { this.Disconnect(); } else { while (connectionData != "") { int v = Encoding.decodeB64(connectionData.Substring(1, 2)); this.processPacket(connectionData.Substring(3, v)); connectionData = connectionData.Substring(v + 3); } this.connectionSocket.BeginReceive(this.dataBuffer, 0, this.dataBuffer.Length, SocketFlags.None, new AsyncCallback(this.dataArrival), null); } } catch { this.Disconnect(); } } private void delDisconnectTimed(int ms) { try { this.connectionSocket.Shutdown(SocketShutdown.Both); } catch { } Thread.Sleep(ms); this.Disconnect(); } internal void Disconnect() { if (!this._isDisconnected) { try { this.connectionSocket.Close(); } catch { } this.connectionSocket = null; if ((this.Room != null) && (this.roomUser != null)) { this.Room.removeUser(this.roomUser.roomUID, false, ""); } if (this.Messenger != null) { this.Messenger.Clear(); } userManager.removeUser(this.userID); gameSocketServer.freeConnection(this.connectionID); this._isDisconnected = true; } } internal void Disconnect(int ms) { new timedDisconnector(this.delDisconnectTimed).BeginInvoke(ms, null, null); } private void infobus() { Thread.Sleep(0x7530); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int vote1 = dbClient.getInt("select vote1 from vote"); int vote2 = dbClient.getInt("select vote2 from vote"); int vote3 = dbClient.getInt("select vote3 from vote"); int vote4 = dbClient.getInt("select vote4 from vote"); int vote5 = dbClient.getInt("select vote5 from vote"); int vote6 = dbClient.getInt("select vote6 from vote"); int total = ((((vote1 + vote2) + vote3) + vote4) + vote5) + vote6; this.Room.sendData(string.Concat(new object[] { "AP/", total, "/", vote1, "/", vote2, "/", vote3, "/", vote4, "/", vote5, "/", vote6 })); } } private void infobus1() { Thread.Sleep(0x7530); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int vote1 = dbClient.getInt("select vote1 from vote"); int vote2 = dbClient.getInt("select vote2 from vote"); int total = vote1 + vote2; this.Room.sendData(string.Concat(new object[] { "AP/", total, "/", vote1, "/", vote2 })); } } private void infobus2() { Thread.Sleep(0x7530); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int vote1 = dbClient.getInt("select vote1 from vote"); int vote2 = dbClient.getInt("select vote2 from vote"); int vote3 = dbClient.getInt("select vote3 from vote"); int total = (vote1 + vote2) + vote3; this.Room.sendData(string.Concat(new object[] { "AP/", total, "/", vote1, "/", vote2, "/", vote3 })); } } private void infobus3() { Thread.Sleep(0x7530); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int vote1 = dbClient.getInt("select vote1 from vote"); int vote2 = dbClient.getInt("select vote2 from vote"); int vote3 = dbClient.getInt("select vote3 from vote"); int vote4 = dbClient.getInt("select vote4 from vote"); int total = ((vote1 + vote2) + vote3) + vote4; this.Room.sendData(string.Concat(new object[] { "AP/", total, "/", vote1, "/", vote2, "/", vote3, "/", vote4 })); } } private void infobus4() { Thread.Sleep(0x7530); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int vote1 = dbClient.getInt("select vote1 from vote"); int vote2 = dbClient.getInt("select vote2 from vote"); int vote3 = dbClient.getInt("select vote3 from vote"); int vote4 = dbClient.getInt("select vote4 from vote"); int vote5 = dbClient.getInt("select vote5 from vote"); int total = (((vote1 + vote2) + vote3) + vote4) + vote5; this.Room.sendData(string.Concat(new object[] { "AP/", total, "/", vote1, "/", vote2, "/", vote3, "/", vote4, "/", vote5 })); } } private bool isSpeechCommand(string Text) { string[] args = Text.Split(new char[] { ' ' }); try { DatabaseClient dbClient; virtualUser Target; string Message; DataRow dRow; int banHours; string Reason; int Minutes; int Credits; int X; switch (args[0].ToLower()) { case "stfu": this.sendData("BKWerpo Emulator ULTIMATE EDITED \rFAIT PAR WERPO\rBon jeu sur l'hotel \r\r"); goto Label_2689; case "details": using (dbClient = Eucalypt.dbManager.GetClient()) { this.sendData(string.Concat(new object[] { "BKHey ", this._Username, ", voici quelques informations de HabboMotel.\r\rHabbos connectes: ", userManager.userCount, ".\rRecord de Habbo connectes: ", userManager.peakUserCount, ".\rHabbo inscrits: ", dbClient.getString("SELECT COUNT(*) FROM users"), ".\rApparts utilises: ", roomManager.roomCount, ".\rRecords d'apparts utilises: ", roomManager.peakRoomCount, ".\rApparts crees: ", dbClient.getString("SELECT COUNT(*) FROM rooms"), ".\rNombre de mobis: ", dbClient.getString("SELECT COUNT(*) FROM furniture"), ".\r\rServeur : Eleane Server Pooling Edition RC1" })); } goto Label_2689; case "cleanhand": case "videmain": case "emptyhand": using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM furniture WHERE ownerid = '" + this.userID + "' AND roomid = '0'"); } this.refreshHand("update"); goto Label_2689; case "brb": if (this.brbLooper == null) { ThreadStart brbStarter = new ThreadStart(this.showBrb); this.brbLooper = new Thread(brbStarter); this.brbLooper.Priority = ThreadPriority.Lowest; this.brbLooper.Start(); } goto Label_2689; case "rofl": this.refreshAppearance(true, true, true); goto Label_2689; case "back": if (this.brbLooper != null) { this.brbLooper.Abort(); this.brbLooper = null; this.Room.sendShout(this.roomUser, "\n\n\n I'm back!\n\n\n "); } goto Label_2689; case "commands": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { break; } return false; case "whosonline": case "connections": this.sendData(userManager.generateWhosOnline(rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID))); goto Label_2689; case "server": this.sendData("BKServer Information \rHeure: " + DateTime.Now.ToString() + " (GMT)\r\rEmulateur: Eleane Server Pooling Edition RC1 \rBuild: 4500 (10/08/2009)\rVersion: r26 \r"); goto Label_2689; case "alert": if (rankManager.containsRight(this._Rank, "fuse_alert", this.userID)) { goto Label_08CA; } return false; case "roomalert": if (rankManager.containsRight(this._Rank, "fuse_room_alert", this.userID)) { goto Label_0963; } return false; case "kick": if (rankManager.containsRight(this._Rank, "fuse_kick", this.userID)) { goto Label_09DF; } return false; case "roomkick": if (rankManager.containsRight(this._Rank, "fuse_room_kick", this.userID)) { goto Label_0AC1; } return false; case "shutup": if (rankManager.containsRight(this._Rank, "fuse_mute", this.userID)) { goto Label_0B48; } return false; case "unmute": if (rankManager.containsRight(this._Rank, "fuse_mute", this.userID)) { goto Label_0C2A; } return false; case "roomshutup": if (rankManager.containsRight(this._Rank, "fuse_room_mute", this.userID)) { goto Label_0D02; } return false; case "roomunmute": if (rankManager.containsRight(this._Rank, "fuse_room_mute", this.userID)) { goto Label_0D89; } return false; case "ban": if (rankManager.containsRight(this._Rank, "fuse_ban", this.userID)) { goto Label_0E08; } return false; case "superban": if (rankManager.containsRight(this._Rank, "fuse_superban", this.userID)) { goto Label_0FCA; } return false; case "steallook": Target = userManager.getUser(args[1]); if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1191; } this.sendData("BKYou don't have the rights to steal someones look!"); goto Label_2689; case "ha": case "hw": case "hotelalert": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1232; } return false; case "offline": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_12A2; } return false; case "ra": if (rankManager.containsRight(this._Rank, "fuse_alert", this.userID)) { goto Label_1317; } return false; case "vip": if (rankManager.containsRight(this._Rank, "fuse_alert", this.userID)) { goto Label_1392; } return false; case "namego": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1404; } return false; case "goname": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_14A7; } return false; case "cleanroom": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_156A; } return false; case "credits": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_162D; } this.sendData("BKTu ne peux pas envoyer de credits!"); return false; case "teleport": goto Label_172E; case "warp": case "go": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_17A2; } return false; case "ui": case "userinfo": if (rankManager.containsRight(this._Rank, "fuse_moderator_access", this.userID)) { goto Label_1824; } return false; case "spec": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1872; } return false; case "despec": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_18EE; } return false; case "masscredits": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_198D; } this.sendData("BKTu ne peux pas envoyer de credits!"); return false; case "position": goto Label_1A39; case "sendme": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1AF5; } return false; case "infobusopen": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1B2D; } return false; case "infobusclose": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1B63; } return false; case "question": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1B99; } return false; case "repa": goto Label_1BDD; case "repb": goto Label_1C46; case "repc": goto Label_1CAF; case "repd": goto Label_1D18; case "repe": goto Label_1D81; case "repf": goto Label_1DEA; case "resetpoll": goto Label_1E53; case "startpoll": if (rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { goto Label_1F60; } return false; case "refresh": goto Label_24C4; default: return false; } this.sendData("BKListe des commandes:\r\r:alert \r:roomalert \r:kick \r:roomkick \r:shutup \r:unmute \r:roomshutup \r:roomunmute\r:ban \r:superban \r:ha \r:ra \r:teleport \r:go X Y\r:position \r:userinfo \r:refresh \r:credits \r:namego \r:goname \r:spec\r:despec \r:offline \r:cleanroom \r:masscredits \r:whosonline \r"); goto Label_2689; Label_08CA: Target = userManager.getUser(args[1]); Target.sendData("B!" + stringManager.wrapParameters(args, 2) + Convert.ToChar(2)); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("alert", this.userID, Target.userID, args[2], ""); goto Label_2689; Label_0963: Message = Text.Substring(10); this.Room.sendData("B!" + Message + Convert.ToChar(2)); staffManager.addStaffMessage("ralert", this.userID, this.Room.roomID, Message, ""); goto Label_2689; Label_09DF: Target = userManager.getUser(args[1]); if (Target._Rank < this._Rank) { Message = ""; if (args.Length > 2) { Message = stringManager.wrapParameters(args, 2); } Target.Room.removeUser(Target.roomUser.roomUID, true, Message); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("kick", this.userID, Target.userID, Message, ""); } else { this.sendData("BK" + stringManager.getString("scommand_failed")); } goto Label_2689; Label_0AC1: Message = stringManager.wrapParameters(args, 1); this.Room.kickUsers(this._Rank, Message); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("rkick", this.userID, this.Room.roomID, Message, ""); goto Label_2689; Label_0B48: Target = userManager.getUser(args[1]); if (!((Target._Rank >= this._Rank) || Target._isMuted)) { Message = stringManager.wrapParameters(args, 2); Target._isMuted = true; Target.sendData("BK" + stringManager.getString("scommand_muted") + "\r" + Message); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("mute", this.userID, Target.userID, Message, ""); } else { this.sendData("BK" + stringManager.getString("scommand_failed")); } goto Label_2689; Label_0C2A: Target = userManager.getUser(args[1]); if ((Target._Rank < this._Rank) && Target._isMuted) { Target._isMuted = false; Target.sendData("BK" + stringManager.getString("scommand_unmuted")); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("unmute", this.userID, Target.userID, "", ""); } else { this.sendData("BK" + stringManager.getString("scommand_failed")); } goto Label_2689; Label_0D02: Message = stringManager.wrapParameters(args, 1); this.Room.muteUsers(this._Rank, Message); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("rmute", this.userID, this.Room.roomID, Message, ""); goto Label_2689; Label_0D89: this.Room.unmuteUsers(this._Rank); this.sendData("BK" + stringManager.getString("scommand_success")); staffManager.addStaffMessage("runmute", this.userID, this.Room.roomID, "", ""); goto Label_2689; Label_0E08: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", args[1]); dRow = dbClient.getRow("SELECT id,rank FROM users WHERE name = @name"); } if (dRow.Table.Rows.Count == 0) { this.sendData("BK" + stringManager.getString("modtool_actionfailed") + "\r" + stringManager.getString("modtool_usernotfound")); } else if (Convert.ToByte(dRow["rank"]) > this._Rank) { this.sendData("BK" + stringManager.getString("modtool_actionfailed") + "\r" + stringManager.getString("modtool_rankerror")); } else { banHours = int.Parse(args[2]); Reason = stringManager.wrapParameters(args, 3); if ((banHours == 0) || (Reason == "")) { this.sendData("BK" + stringManager.getString("scommand_failed")); } else { staffManager.addStaffMessage("ban", this.userID, Convert.ToInt32(dRow["id"]), Reason, ""); userManager.setBan(Convert.ToInt32(dRow["id"]), banHours, Reason); this.sendData("BK" + userManager.generateBanReport(Convert.ToInt32(dRow["id"]))); } } goto Label_2689; Label_0FCA: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", args[1]); dRow = dbClient.getRow("SELECT id,rank,ipaddress_last FROM users WHERE name = @name"); } if (dRow.Table.Rows.Count == 0) { this.sendData("BK" + stringManager.getString("modtool_actionfailed") + "\r" + stringManager.getString("modtool_usernotfound")); } else if (Convert.ToByte(dRow["rank"]) > this._Rank) { this.sendData("BK" + stringManager.getString("modtool_actionfailed") + "\r" + stringManager.getString("modtool_rankerror")); } else { banHours = int.Parse(args[2]); Reason = stringManager.wrapParameters(args, 3); if ((banHours == 0) || (Reason == "")) { this.sendData("BK" + stringManager.getString("scommand_failed")); } else { string IP = Convert.ToString(dRow["ipaddress_last"]); staffManager.addStaffMessage("superban", this.userID, Convert.ToInt32(dRow["id"]), Reason, ""); userManager.setBan(IP, banHours, Reason); this.sendData("BK" + userManager.generateBanReport(IP)); } } goto Label_2689; Label_1191: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET figure = '", Target._Figure, "' WHERE id = '", this.userID, "'" })); } this.refreshAppearance(true, true, true); goto Label_2689; Label_1232: Message = Text.Substring(3); userManager.sendData("BK" + stringManager.getString("scommand_hotelalert") + "\r" + Message); staffManager.addStaffMessage("halert", this.userID, 0, Message, ""); goto Label_2689; Label_12A2: Minutes = int.Parse(args[1]); userManager.sendData("Dc" + Encoding.encodeVL64(Minutes)); staffManager.addStaffMessage("offline", this.userID, 0, "mm=" + Minutes, ""); goto Label_2689; Label_1317: Message = Text.Substring(3); userManager.sendToRank(this._Rank, false, "BK" + stringManager.getString("scommand_rankalert") + "\r" + Message); staffManager.addStaffMessage("rankalert", this.userID, this._Rank, Message, ""); goto Label_2689; Label_1392: Message = Text.Substring(3); userManager.sendToRank(3, false, "BK" + stringManager.getString("scommand_rankalert") + "\r" + Message); staffManager.addStaffMessage("rankalert", this.userID, 3, Message, ""); goto Label_2689; Label_1404: Target = userManager.getUser(args[1]); Target.sendData("BKUn admin " + this._Username + " ta convoquer"); if (this._inPublicroom) { Target.sendData("D^I" + Encoding.encodeVL64(this._roomID)); } else { Target.sendData("D^H" + Encoding.encodeVL64(this._roomID)); } goto Label_2689; Label_14A7: Target = userManager.getUser(args[1]); if ((Target.Room != null) && Target._inPublicroom) { this.sendData("D^I" + Encoding.encodeVL64(Target._roomID)); } else if (Target.Room != null) { this.sendData("D^H" + Encoding.encodeVL64(Target._roomID)); } else { this.sendData("BKImpossible de rejoindre " + Target._Username + " car il n'est dans aucun appartement."); } goto Label_2689; Label_156A: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM furniture WHERE roomid = '" + this.Room.roomID + "'"); } this.Room.sendData("DBO\r"); staffManager.addStaffMessage("cleanroom", this.userID, 0, "Cleaned room " + this.Room.roomID.ToString(), ""); goto Label_2689; Label_162D: using (dbClient = Eucalypt.dbManager.GetClient()) { Target = userManager.getUser(args[1]); Credits = int.Parse(args[2]); dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET credits = ", Target._Credits, " + ", Credits, " WHERE id = ", Target.userID })); this.sendData(string.Concat(new object[] { "BKPaiement re\x00e7u, ", Credits, " credits \x00e0 ", Target._Username, "." })); this.Room.Refresh(this.roomUser); Target.refreshAppearance(true, true, true); Target.refreshValueables(true, false); goto Label_2689; } Label_172E: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } this.roomUser.SPECIAL_TELEPORTABLE = !this.roomUser.SPECIAL_TELEPORTABLE; this.refreshAppearance(false, false, true); goto Label_2689; Label_17A2: X = int.Parse(args[1]); int Y = int.Parse(args[2]); this.roomUser.X = X; this.roomUser.Y = Y; this.roomUser.goalX = -1; this.Room.Refresh(this.roomUser); this.refreshAppearance(false, false, true); goto Label_2689; Label_1824: this.sendData("BK" + userManager.generateUserInfo(userManager.getUserID(args[1]), this._Rank)); goto Label_2689; Label_1872: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE rooms SET spec = 1 WHERE id = " + this._roomID); } this.Room.Refresh(this.roomUser); goto Label_2689; Label_18EE: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE rooms SET spec = 0 WHERE spec = 1"); } this.Room.Refresh(this.roomUser); this.Room.sendData("BKC'est fini!"); this.Room.kickUsers(this._Rank, ""); goto Label_2689; Label_198D: using (dbClient = Eucalypt.dbManager.GetClient()) { Target = userManager.getUser(args[1]); Credits = int.Parse(args[2]); dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET credits = ", this._Credits, " + ", Credits })); this.sendData("BKPaiement bien recu."); this.Room.Refresh(this.roomUser); Target.refreshAppearance(true, true, true); Target.refreshValueables(true, false); goto Label_2689; } Label_1A39: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } this.sendData(string.Concat(new object[] { "BKX: ", this.roomUser.X, "\rY: ", this.roomUser.Y, "\rH: ", this.roomUser.H })); goto Label_2689; Label_1AF5: this.sendData(stringManager.wrapParameters(args, 1)); goto Label_2689; Label_1B2D: this.sendData("AGbus open"); goto Label_2689; Label_1B63: this.sendData("AGbus close"); goto Label_2689; Label_1B99: using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET question = '" + Text.Substring(8) + "'"); goto Label_2689; } Label_1BDD: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansA = '" + Text.Substring(5) + "'"); goto Label_2689; } Label_1C46: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansB = '" + Text.Substring(4) + "'"); goto Label_2689; } Label_1CAF: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansC = '" + Text.Substring(4) + "'"); goto Label_2689; } Label_1D18: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansD = '" + Text.Substring(4) + "'"); goto Label_2689; } Label_1D81: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansE = '" + Text.Substring(4) + "'"); goto Label_2689; } Label_1DEA: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansF = '" + Text.Substring(4) + "'"); goto Label_2689; } Label_1E53: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE infobus SET ansA = null"); dbClient.runQuery("UPDATE infobus SET ansB = null"); dbClient.runQuery("UPDATE infobus SET ansC = null"); dbClient.runQuery("UPDATE infobus SET ansD = null"); dbClient.runQuery("UPDATE infobus SET ansE = null"); dbClient.runQuery("UPDATE infobus SET ansF = null"); dbClient.runQuery("UPDATE infobus SET question = null"); dbClient.runQuery("UPDATE vote SET vote1 = '0'"); dbClient.runQuery("UPDATE vote SET vote2 = '0'"); dbClient.runQuery("UPDATE vote SET vote3 = '0'"); dbClient.runQuery("UPDATE vote SET vote4 = '0'"); dbClient.runQuery("UPDATE vote SET vote5 = '0'"); dbClient.runQuery("UPDATE vote SET vote6 = '0'"); } goto Label_2689; Label_1F60: using (dbClient = Eucalypt.dbManager.GetClient()) { string question = dbClient.getString("SELECT question FROM infobus"); string ansA = dbClient.getString("SELECT ansA FROM infobus"); string ansB = dbClient.getString("SELECT ansB FROM infobus"); string ansC = dbClient.getString("SELECT ansC FROM infobus"); string ansD = dbClient.getString("SELECT ansD FROM infobus"); string ansE = dbClient.getString("SELECT ansE FROM infobus"); string ansF = dbClient.getString("SELECT ansF FROM infobus"); if (question == null) { this.sendData("BKQuestion obligatoire"); return false; } if ((ansA == null) && (ansB == null)) { this.sendData("BK2 reponses obligatoires"); return false; } if ((((ansC == null) & (ansD == null)) & (ansE == null)) & (ansF == null)) { this.Room.sendData(string.Concat(new object[] { "AO", question, Convert.ToChar(13), "1:", ansA, Convert.ToChar(13), "2:", ansB })); this.infobusThread = new Thread(new ThreadStart(this.infobus1)); this.infobusThread.Start(); return false; } if (((ansD == null) & (ansE == null)) & (ansF == null)) { this.Room.sendData(string.Concat(new object[] { "AO", question, Convert.ToChar(13), "1:", ansA, Convert.ToChar(13), "2:", ansB, Convert.ToChar(13), "3:", ansC })); this.infobusThread = new Thread(new ThreadStart(this.infobus2)); this.infobusThread.Start(); return false; } if ((ansE == null) & (ansF == null)) { this.Room.sendData(string.Concat(new object[] { "AO", question, Convert.ToChar(13), "1:", ansA, Convert.ToChar(13), "2:", ansB, Convert.ToChar(13), "3:", ansC, Convert.ToChar(13), "4:", ansD })); this.infobusThread = new Thread(new ThreadStart(this.infobus3)); this.infobusThread.Start(); return false; } if (ansF == null) { this.Room.sendData(string.Concat(new object[] { "AO", question, Convert.ToChar(13), "1:", ansA, Convert.ToChar(13), "2:", ansB, Convert.ToChar(13), "3:", ansC, Convert.ToChar(13), "4:", ansD, Convert.ToChar(13), "5:", ansE })); this.infobusThread = new Thread(new ThreadStart(this.infobus4)); this.infobusThread.Start(); return false; } this.Room.sendData(string.Concat(new object[] { "AO", question, Convert.ToChar(13), "1:", ansA, Convert.ToChar(13), "2:", ansB, Convert.ToChar(13), "3:", ansC, Convert.ToChar(13), "4:", ansD, Convert.ToChar(13), "5:", ansE, Convert.ToChar(13), "6:", ansF })); this.infobusThread = new Thread(new ThreadStart(this.infobus)); this.infobusThread.Start(); goto Label_2689; } Label_24C4: if (!rankManager.containsRight(this._Rank, "fuse_administrator_access", this.userID)) { return false; } try { ThreadStart tStarter = null; switch (args[1]) { case "catalogue": tStarter = new ThreadStart(this.refresh_cat); break; case "strings": tStarter = new ThreadStart(this.refresh_strings); break; case "config": tStarter = new ThreadStart(this.refresh_config); break; case "filter": tStarter = new ThreadStart(this.refresh_filter); break; case "fuse": tStarter = new ThreadStart(this.refresh_fuse); break; case "eco": tStarter = new ThreadStart(this.refresh_eco); break; default: this.sendData("BK" + stringManager.getString("scommand_failed")); return true; } Thread Refresher = new Thread(tStarter); Refresher.Priority = ThreadPriority.BelowNormal; Refresher.Start(); this.sendData("BK" + stringManager.getString("scommand_success")); } catch { this.sendData("BK:refresh catalogue\r:refresh eco\r:refresh strings\r:refresh config\r:refresh filter\r:refresh fuse\r"); } } catch { this.sendData("BK" + stringManager.getString("scommand_failed")); } Label_2689: return true; } internal void leaveGame() { if ((this.gamePlayer != null) && (this.gamePlayer.Game != null)) { if (this.gamePlayer.Game.Owner == this.gamePlayer) { try { this.gamePlayer.Game.Lobby.Games.Remove(this.gamePlayer.Game.ID); } catch { } this.gamePlayer.Game.Abort(); this.sendData("FS"); } else if (this.gamePlayer.teamID != -1) { this.gamePlayer.Game.movePlayer(this.gamePlayer, this.gamePlayer.teamID, -1); } else { this.gamePlayer.Game.Subviewers.Remove(this.gamePlayer); this.sendData("CmH"); this.sendData("FS"); } } this.gamePlayer = null; } private void processPacket(string currentPacket) { DatabaseClient dbClient; DataRow dRow; DataColumn dCol; if (this._isLoggedIn) { int requestID; int i; int Amount; int buddyID; string Message; int ID; string Data; int cataID; string Name; DataTable dTable; StringBuilder sb; StringBuilder Rooms; string nameString; int roomID; int categoryID; int categoryLength; int nameLength; string Description; int maxVisitors; string[] packetContent; string roomPassword; string s; int voteAmount; int messageLength; int cfhID; string roomName; bool result; int idLength; int X; int Y; int slotID; int x; string Status; string Item; string Receiver; string Target; virtualUser _Target; int templateID; int itemID; string Mode; string[] locDetails; byte Z; string Sprite; floorItem Item; int rndNum; wallItem Item; int songID; string Title; int Length; virtualUser Partner; int j; IEnumerator enumerator; string str69 = currentPacket.Substring(0, 2); switch (str69) { case "CD": this.pingOK = true; return; case "@q": this.sendData("Bc" + DateTime.Today.ToShortDateString()); return; case "BA": using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("code", currentPacket.Substring(4)); if (dbClient.findsResult("SELECT credits FROM vouchers WHERE voucher = @code")) { int voucherAmount = dbClient.getInt("SELECT credits FROM vouchers WHERE voucher = @code"); dbClient.runQuery("DELETE FROM vouchers WHERE voucher = @code LIMIT 1"); this._Credits += voucherAmount; this.sendData("@F" + this._Credits); this.sendData("CT"); dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET credits = '", voucherAmount, "' WHERE id = '", this.userID, "' LIMIT 1" })); } else { this.sendData("CU1"); } } return; case "@L": using (dbClient = Eucalypt.dbManager.GetClient()) { int num3 = dbClient.getInt("SELECT ach_login FROM users WHERE id = '" + this.userID + "'") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET ach_login = '", num3, "' WHERE id = '", this.userID, "' LIMIT 1" })); if ((num3 <= 100) && (num3 > 0x1d)) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login10'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login10' WHERE badgeid = 'ACH_Login9' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login10\x0002\x0002"); } } else if (num3 > 0x59) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login9'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login9' WHERE badgeid = 'ACH_Login8' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login9\x0002\x0002"); } } else if (num3 > 0x4f) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login8'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login8' WHERE badgeid = 'ACH_Login7' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login8\x0002\x0002"); } } else if (num3 > 0x45) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login7'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login7' WHERE badgeid = 'ACH_Login6' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login7\x0002\x0002"); } } else if (num3 > 0x3b) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login6'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login6' WHERE badgeid = 'ACH_Login5' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login6\x0002\x0002"); } } else if (num3 > 0x22) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login5'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login5' WHERE badgeid = 'ACH_Login4' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login5\x0002\x0002"); } } else if (num3 > 0x1b) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login4'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login4' WHERE badgeid = 'ACH_Login3' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login4\x0002\x0002"); } } else if (num3 > 14) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login3'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login3' WHERE badgeid = 'ACH_Login2' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login3\x0002\x0002"); } } else if (num3 > 7) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login2'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_Login2' WHERE badgeid = 'ACH_Login1' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_Login2\x0002\x0002"); } } else if (!((num3 <= 4) || dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_Login1'"))) { dbClient.runQuery("INSERT INTO users_badges (userid, badgeid, iscurrent) VALUES ('" + this.userID + "', 'ACH_Login1', '0')"); this.refreshBadges(); this.sendData("FuQDIACH_Login1\x0002\x0002"); } } this.Messenger = new virtualMessenger(this.userID); this.sendData("@L" + this.Messenger.friendList()); this.sendData("Dz" + this.Messenger.friendRequests()); return; case "@Z": this.refreshClub(); return; case "@G": this.refreshAppearance(false, true, false); return; case "@H": this.refreshValueables(true, true); return; case "B]": this.refreshBadges(); return; case "Cd": this.refreshGroupStatus(); return; case "C^": this.sendData("Do" + recyclerManager.setupString); return; case "C_": this.sendData("Dp" + recyclerManager.sessionString(this.userID)); return; case "@g": if (this.Messenger != null) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("username", currentPacket.Substring(4)); int toID = dbClient.getInt("SELECT id FROM users WHERE name = @username"); if (((toID > 0) && !this.Messenger.hasFriendRequests(toID)) && !this.Messenger.hasFriendship(toID)) { requestID = dbClient.getInt("SELECT MAX(requestid) FROM messenger_friendrequests WHERE userid_to = '" + toID + "'") + 1; dbClient.runQuery(string.Concat(new object[] { "INSERT INTO messenger_friendrequests(userid_to,userid_from,requestid) VALUES ('", toID, "','", this.userID, "','", requestID, "')" })); if (userManager.getUser(toID) != null) { userManager.getUser(toID).sendData(string.Concat(new object[] { "BDI", this._Username, Convert.ToChar(2), this.userID, Convert.ToChar(2) })); } } } } return; case "@i": { string[] IDs; string Packet = "Fs"; string PacketFriends = ""; string PacketOthers = ""; string PacketAdd = ""; int CountFriends = 0; int CountOthers = 0; using (dbClient = Eucalypt.dbManager.GetClient()) { string Search = currentPacket.Substring(4).Replace(@"\", @"\").Replace("'", @"\'"); dbClient.AddParamWithValue("search", Search); IDs = dataHandling.dColToArray(dbClient.getColumn("SELECT id FROM users WHERE name LIKE '" + Search + "%' LIMIT 20 ")); } for (i = 0; i < IDs.Length; i++) { DataRow row; int thisID = Convert.ToInt32(IDs[i]); bool online = userManager.containsUser(thisID); string onlineStr = online ? "I" : "H"; using (dbClient = Eucalypt.dbManager.GetClient()) { row = dbClient.getRow("SELECT name, mission, lastvisit, figure FROM users WHERE id = " + thisID.ToString()); } PacketAdd = string.Concat(new object[] { Encoding.encodeVL64(thisID), row[0], "\x0002", row[1], "\x0002", onlineStr, onlineStr, "\x0002", onlineStr, online ? row[3] : "", "\x0002", online ? "" : row[2], "\x0002" }); if (this.Messenger.hasFriendship(thisID)) { CountFriends++; PacketFriends = PacketFriends + PacketAdd; } else { CountOthers++; PacketOthers = PacketOthers + PacketAdd; } } PacketFriends = Encoding.encodeVL64(CountFriends) + PacketFriends; PacketOthers = Encoding.encodeVL64(CountOthers) + PacketOthers; Packet = Packet + PacketFriends + PacketOthers; this.sendData(Packet); return; } case "@e": if (this.Messenger != null) { Amount = Encoding.decodeVL64(currentPacket.Substring(2)); currentPacket = currentPacket.Substring(Encoding.encodeVL64(Amount).Length + 2); int updateAmount = 0; StringBuilder Updates = new StringBuilder(); virtualBuddy Me = new virtualBuddy(this.userID); i = 0; while (i < Amount) { int fromUserID; if (currentPacket == "") { return; } requestID = Encoding.decodeVL64(currentPacket); using (dbClient = Eucalypt.dbManager.GetClient()) { fromUserID = dbClient.getInt(string.Concat(new object[] { "SELECT userid_from FROM messenger_friendrequests WHERE userid_to = '", this.userID, "' AND requestid = '", requestID, "'" })); } if (fromUserID == 0) { return; } virtualBuddy Buddy = new virtualBuddy(fromUserID); Updates.Append(Buddy.ToString(true)); updateAmount++; this.Messenger.addBuddy(Buddy, false); if (userManager.containsUser(fromUserID) && (userManager.getUser(fromUserID).Messenger != null)) { userManager.getUser(fromUserID).Messenger.addBuddy(Me, true); } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "INSERT INTO messenger_friendships(userid,friendid) VALUES ('", fromUserID, "','", this.userID, "')" })); dbClient.runQuery(string.Concat(new object[] { "DELETE FROM messenger_friendrequests WHERE userid_to = '", this.userID, "' AND requestid = '", requestID, "' LIMIT 1" })); } currentPacket = currentPacket.Substring(Encoding.encodeVL64(requestID).Length); i++; } if (updateAmount > 0) { this.sendData("@MHI" + Encoding.encodeVL64(updateAmount) + Updates.ToString()); } } return; case "@f": if (this.Messenger != null) { Amount = Encoding.decodeVL64(currentPacket.Substring(3)); currentPacket = currentPacket.Substring(Encoding.encodeVL64(Amount).Length + 3); i = 0; while (i < Amount) { if (currentPacket == "") { return; } requestID = Encoding.decodeVL64(currentPacket); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "DELETE FROM messenger_friendrequests WHERE userid_to = '", this.userID, "' AND requestid = '", requestID, "' LIMIT 1" })); } currentPacket = currentPacket.Substring(Encoding.encodeVL64(requestID).Length); i++; } } return; case "@h": if (this.Messenger != null) { buddyID = Encoding.decodeVL64(currentPacket.Substring(3)); this.Messenger.removeBuddy(buddyID); if (userManager.containsUser(buddyID) && (userManager.getUser(buddyID).Messenger != null)) { userManager.getUser(buddyID).Messenger.removeBuddy(this.userID); } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "DELETE FROM messenger_friendships WHERE (userid = '", this.userID, "' AND friendid = '", buddyID, "') OR (userid = '", buddyID, "' AND friendid = '", this.userID, "') LIMIT 1" })); } } return; case "@a": if (this.Messenger != null) { buddyID = Encoding.decodeVL64(currentPacket.Substring(2)); Message = stringManager.filterSwearwords(currentPacket.Substring(Encoding.encodeVL64(buddyID).Length + 4)); if (!this.Messenger.containsOnlineBuddy(buddyID)) { this.sendData("DE" + Encoding.encodeVL64(5) + Encoding.encodeVL64(this.userID)); return; } userManager.getUser(buddyID).sendData(string.Concat(new object[] { "BF", Encoding.encodeVL64(this.userID), Message, Convert.ToChar(2) })); } return; case "DF": if (this.Messenger != null) { ID = Encoding.decodeVL64(currentPacket.Substring(2)); int errorID = -1; if (!this.Messenger.hasFriendship(ID)) { errorID = 0; } else if (!userManager.containsUser(ID)) { errorID = 1; } else { virtualUser _User = userManager.getUser(ID); if (_User._roomID <= 0) { errorID = 2; } else if (!_User._inPublicroom) { this.sendData("D^H" + Encoding.encodeVL64(_User._roomID)); } else { this.sendData("D^I" + Encoding.encodeVL64(_User._roomID)); } } if (errorID != -1) { this.sendData("E]" + Encoding.encodeVL64(errorID)); } } return; case "@b": try { if ((this.Messenger != null) && (this.roomUser != null)) { Amount = Encoding.decodeVL64(currentPacket.Substring(2)); int[] IDs = new int[Amount]; currentPacket = currentPacket.Substring(Encoding.encodeVL64(Amount).Length + 2); for (i = 0; i < Amount; i++) { if (currentPacket == "") { return; } ID = Encoding.decodeVL64(currentPacket); if (this.Messenger.hasFriendship(ID) && userManager.containsUser(ID)) { IDs[i] = ID; } currentPacket = currentPacket.Substring(Encoding.encodeVL64(ID).Length); } Message = currentPacket.Substring(2); Data = string.Concat(new object[] { "BG", Encoding.encodeVL64(this.userID), Message, Convert.ToChar(2) }); for (i = 0; i < Amount; i++) { if (userManager.containsUser(IDs[i])) { userManager.getUser(IDs[i]).sendData(Data); } } } } catch { this.sendData("BKSorry something went wrong during sending the invites."); } return; case "BV": { this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); int hideFull = Encoding.decodeVL64(currentPacket.Substring(2, 1)); cataID = Encoding.decodeVL64(currentPacket.Substring(3)); Name = navigatorManager.getNameAcces(this._Rank, cataID); if (!(Name == "")) { int Type = navigatorManager.getType(cataID); int parentID = navigatorManager.getParent(cataID); StringBuilder Navigator = new StringBuilder(string.Concat(new object[] { @"C\", Encoding.encodeVL64(hideFull), Encoding.encodeVL64(cataID), Encoding.encodeVL64(Type), Name, Convert.ToChar(2), Encoding.encodeVL64(0), Encoding.encodeVL64(0x2710), Encoding.encodeVL64(parentID) })); string _SQL_ORDER_HELPER = ""; if (Type == 0) { if (hideFull == 1) { _SQL_ORDER_HELPER = "AND visitors_now < visitors_max ORDER BY id ASC"; } else { _SQL_ORDER_HELPER = "ORDER BY id ASC"; } } else if (hideFull == 1) { _SQL_ORDER_HELPER = "AND visitors_now < visitors_max ORDER BY visitors_now DESC LIMIT 30"; } else { _SQL_ORDER_HELPER = "ORDER BY visitors_now DESC LIMIT " + Config.Navigator_openCategory_maxResults; } using (dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable(string.Concat(new object[] { "SELECT id,state,showname,visitors_now,visitors_max,name,description,owner,ccts FROM rooms WHERE category = '", cataID, "' ", _SQL_ORDER_HELPER })); } if (Type == 2) { Navigator.Append(Encoding.encodeVL64(dTable.Rows.Count)); } bool canSeeHiddenNames = false; if (Type != 0) { canSeeHiddenNames = rankManager.containsRight(this._Rank, "fuse_enter_locked_rooms", this.userID); } using (enumerator = dTable.Rows.GetEnumerator()) { while (enumerator.MoveNext()) { dRow = (DataRow) enumerator.Current; if (Type == 0) { Navigator.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), "I", Convert.ToString(dRow["name"]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow["visitors_now"])), Encoding.encodeVL64(Convert.ToInt32(dRow["visitors_max"])), Encoding.encodeVL64(cataID), Convert.ToString(dRow["description"]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), "H", Convert.ToString(dRow["ccts"]), Convert.ToChar(2), "HI" })); } else { if (!((Convert.ToInt32(dRow["showname"]) != 0) || canSeeHiddenNames)) { continue; } Navigator.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), Convert.ToString(dRow["name"]), Convert.ToChar(2), Convert.ToString(dRow["owner"]), Convert.ToChar(2), roomManager.getRoomState(Convert.ToInt32(dRow["state"])), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow["visitors_now"])), Encoding.encodeVL64(Convert.ToInt32(dRow["visitors_max"])), Convert.ToString(dRow["description"]), Convert.ToChar(2) })); } } } dCol = navigatorManager.getAccesParent(this._Rank, cataID); if (dCol.Table.Rows.Count > 0) { sb = new StringBuilder(); List emptyIDs = new List(); using (enumerator = dCol.Table.Rows.GetEnumerator()) { while (enumerator.MoveNext()) { dRow = (DataRow) enumerator.Current; sb.Append(" OR category = '" + Convert.ToString(dRow[0]) + "'"); emptyIDs.Add(Convert.ToInt32(dRow[0])); } } dTable = navigatorManager.getGuestroomQuery("SELECT SUM(visitors_now),SUM(visitors_max),category FROM rooms WHERE" + sb.ToString().Substring(3) + " GROUP BY category", false); foreach (DataRow dRow in dTable.Rows) { if (((Convert.ToInt32(dRow[1]) <= 0) || (hideFull != 1)) || (Convert.ToInt32(dRow[0]) < Convert.ToInt32(dRow[1]))) { Navigator.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow[2])), "H", navigatorManager.getName(Convert.ToInt32(dRow[2])), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[0])), Encoding.encodeVL64(Convert.ToInt32(dRow[1])), Encoding.encodeVL64(cataID) })); emptyIDs.Remove(Convert.ToInt32(dRow[2])); } } foreach (int emptyID in emptyIDs) { Navigator.Append(string.Concat(new object[] { Encoding.encodeVL64(emptyID), "H", navigatorManager.getName(emptyID), Convert.ToChar(2), "HH", Encoding.encodeVL64(cataID) })); } } this.sendData(Navigator.ToString()); return; } return; } case "BW": { StringBuilder Categories = new StringBuilder(); using (dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT id,name FROM room_categories WHERE type = '2' AND parent > 0 AND access_rank_min <= " + this._Rank); } foreach (DataRow dRow in dTable.Rows) { Categories.Append(Encoding.encodeVL64(Convert.ToInt32(dRow["id"])) + dRow["name"] + Convert.ToChar(2)); } this.sendData("C]" + Encoding.encodeVL64(dTable.Rows.Count) + Categories.ToString()); return; } case "DH": this.sendData("E_" + Encoding.encodeVL64(3) + navigatorManager.getRandomRooms()); return; case "@P": using (dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT id,name,description,state,showname,visitors_now,visitors_max FROM rooms WHERE owner = '" + this._Username + "' ORDER BY id ASC"); } if (dTable.Rows.Count <= 0) { this.sendData("@y" + this._Username); return; } Rooms = new StringBuilder(); foreach (DataRow dRow in dTable.Rows) { Rooms.Append(string.Concat(new object[] { Convert.ToString(dRow["id"]), "\t", Convert.ToString(dRow["name"]), Convert.ToChar(9), this._Username, Convert.ToChar(9), roomManager.getRoomState(Convert.ToInt32(dRow["state"])), Convert.ToChar(9), "x", Convert.ToChar(9), Convert.ToString(dRow["visitors_now"]), Convert.ToChar(9), Convert.ToString(dRow["visitors_max"]), Convert.ToChar(9), "null", Convert.ToChar(9), Convert.ToString(dRow["description"]), Convert.ToChar(9), Convert.ToString(dRow["description"]), Convert.ToChar(9), Convert.ToChar(13) })); } this.sendData("@P" + Rooms.ToString()); return; case "@Q": { bool seeAllRoomOwners = rankManager.containsRight(this._Rank, "fuse_see_all_roomowners", this.userID); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("search", currentPacket.Substring(2)); dbClient.AddParamWithValue("max", Config.Navigator_roomSearch_maxResults); dTable = dbClient.getTable("SELECT id,name,owner,description,state,showname,visitors_now,visitors_max FROM rooms WHERE (owner = @search OR name LIKE '@search%') ORDER BY id ASC LIMIT @max"); } if (dTable.Rows.Count <= 0) { this.sendData("@z"); return; } Rooms = new StringBuilder(); foreach (DataRow dRow in dTable.Rows) { nameString = Convert.ToString(dRow["owner"]); if (!((!(Convert.ToString(dRow["showname"]) == "0") || !(Convert.ToString(dRow["owner"]) != this._Username)) || seeAllRoomOwners)) { nameString = "-"; } Rooms.Append(string.Concat(new object[] { Convert.ToString(dRow["id"]), Convert.ToChar(9), Convert.ToString(dRow["name"]), Convert.ToChar(9), Convert.ToString(dRow["owner"]), Convert.ToChar(9), roomManager.getRoomState(Convert.ToInt32(dRow["state"])), Convert.ToChar(9), "x", Convert.ToChar(9), Convert.ToString(dRow["visitors_now"]), Convert.ToChar(9), Convert.ToString(dRow["visitors_max"]), Convert.ToChar(9), "null", Convert.ToChar(9), Convert.ToString(dRow["description"]), Convert.ToChar(9), Convert.ToChar(13) })); } this.sendData("@w" + Rooms.ToString()); return; } case "@U": this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); roomID = int.Parse(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT name,owner,description,model,state,superusers,showname,category,visitors_now,visitors_max FROM rooms WHERE id = '" + roomID + "' AND NOT(owner IS NULL)"); } if (dRow.Table.Rows.Count > 0) { StringBuilder Details = new StringBuilder(Encoding.encodeVL64(Convert.ToInt32(dRow[5])) + Encoding.encodeVL64(Convert.ToInt32(dRow[4])) + Encoding.encodeVL64(roomID)); if ((Convert.ToString(dRow[6]) == "0") && rankManager.containsRight(this._Rank, "fuse_see_all_roomowners", this.userID)) { Details.Append("-"); } else { Details.Append(Convert.ToString(dRow[1])); } Details.Append(string.Concat(new object[] { Convert.ToChar(2), "model_", Convert.ToString(dRow[3]), Convert.ToChar(2), Convert.ToString(dRow[0]), Convert.ToChar(2), Convert.ToString(dRow[2]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[6])) })); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult("SELECT id FROM room_categories WHERE id = '" + Convert.ToString(dRow[7]) + "' AND trading = '1'")) { Details.Append("I"); } else { Details.Append("H"); } } Details.Append(Encoding.encodeVL64(Convert.ToInt32(dRow[8])) + Encoding.encodeVL64(Convert.ToInt32(dRow[9]))); this.sendData("@v" + Details.ToString()); } return; case "@R": { using (dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn(string.Concat(new object[] { "SELECT roomid FROM users_favourites WHERE userid = '", this.userID, "' ORDER BY roomid DESC LIMIT ", Config.Navigator_Favourites_maxRooms })); } Hashtable deletedIDs = new Hashtable(dCol.Table.Rows.Count); string roomIDs = " "; using (enumerator = dCol.Table.Rows.GetEnumerator()) { while (enumerator.MoveNext()) { dRow = (DataRow) enumerator.Current; deletedIDs.Add(Convert.ToInt32(dRow["roomid"]), Convert.ToInt32(dRow["roomid"])); roomIDs = roomIDs + "id = '" + Convert.ToString(dRow["roomid"]) + "' OR "; } } roomIDs = roomIDs.Substring(0, roomIDs.Length - 4); if (roomIDs.Length > 0) { int guestRoomAmount = 0; bool seeHiddenRoomOwners = rankManager.containsRight(this._Rank, "fuse_enter_locked_rooms", this.userID); Rooms = new StringBuilder(); using (dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT name,owner,state,showname,visitors_now,visitors_max,description,category,ccts,id FROM rooms WHERE " + roomIDs); } foreach (DataRow dRow in dTable.Rows) { deletedIDs.Remove(Convert.ToInt32(dRow["id"])); if (Convert.ToString(dRow[1]) == "") { Rooms.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), "I", Convert.ToString(dRow[0]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[4])), Encoding.encodeVL64(Convert.ToInt32(dRow[5])), Encoding.encodeVL64(Convert.ToInt32(dRow[7])), Convert.ToString(dRow[6]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), "H", Convert.ToString(dRow[8]), Convert.ToChar(2), "HI" })); } else { nameString = Convert.ToString(dRow[0]); if (!((!(Convert.ToString(dRow[3]) == "0") || !(this._Username != Convert.ToString(dRow[1]))) || seeHiddenRoomOwners)) { nameString = "-"; } Rooms.Append(string.Concat(new object[] { Encoding.encodeVL64(Convert.ToInt32(dRow["id"])), nameString, Convert.ToChar(2), Convert.ToString(dRow[1]), Convert.ToChar(2), roomManager.getRoomState(Convert.ToInt32(dRow[2])), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[4])), Encoding.encodeVL64(Convert.ToInt32(dRow[5])), Convert.ToString(dRow[6]), Convert.ToChar(2) })); guestRoomAmount++; } } using (dbClient = Eucalypt.dbManager.GetClient()) { foreach (int rID in deletedIDs.Values) { dbClient.runQuery("DELETE FROM users_favourites WHERE roomid = '" + rID + "' LIMIT 1"); } } this.sendData(string.Concat(new object[] { "@}HHJ", Convert.ToChar(2), "HHH", Encoding.encodeVL64(guestRoomAmount - deletedIDs.Count), Rooms.ToString() })); } return; } case "@S": roomID = Encoding.decodeVL64(currentPacket.Substring(3)); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult("SELECT id FROM rooms WHERE id = '" + roomID + "'") && !dbClient.findsResult(string.Concat(new object[] { "SELECT userid FROM users_favourites WHERE userid = '", this.userID, "' AND roomid = '", roomID, "'" }))) { if (dbClient.getInt("SELECT COUNT(userid) FROM users_favourites WHERE userid = '" + this.userID + "'") < Config.Navigator_Favourites_maxRooms) { dbClient.runQuery(string.Concat(new object[] { "INSERT INTO users_favourites (userid,roomid) VALUES ('", this.userID, "','", roomID, "')" })); } else { this.sendData("@anav_error_toomanyfavrooms"); } } } return; case "@T": roomID = Encoding.decodeVL64(currentPacket.Substring(3)); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "DELETE FROM users_favourites WHERE userid = '", this.userID, "' AND roomid = '", roomID, "' LIMIT 1" })); } return; case "Ej": { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE users SET guideavailable = '1' WHERE id = '" + this.userID + "' LIMIT 1"); this.sendData("FjJH"); return; } } case "Ek": { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE users SET guideavailable = '0' WHERE id = '" + this.userID + "' LIMIT 1"); return; } } case "EA": this.sendData("Ep" + Encoding.encodeVL64(eventManager.categoryAmount)); return; case "EY": if ((!this._inPublicroom && (this.roomUser != null)) && !this._hostsEvent) { this.sendData("EoI"); return; } this.sendData("EoH"); return; case "D{": categoryID = Encoding.decodeVL64(currentPacket.Substring(2)); if (eventManager.categoryOK(categoryID)) { this.sendData("Eb" + Encoding.encodeVL64(categoryID)); } return; case "E^": categoryID = Encoding.decodeVL64(currentPacket.Substring(2)); if ((categoryID >= 1) && (categoryID <= 11)) { this.sendData("Eq" + Encoding.encodeVL64(categoryID) + eventManager.getEvents(categoryID)); } return; case "EZ": if (((this._isOwner && !this._hostsEvent) && !this._inPublicroom) && (this.roomUser != null)) { categoryID = Encoding.decodeVL64(currentPacket.Substring(2)); if (eventManager.categoryOK(categoryID)) { categoryLength = Encoding.encodeVL64(categoryID).Length; nameLength = Encoding.decodeB64(currentPacket.Substring(categoryLength + 2, 2)); Name = currentPacket.Substring(categoryLength + 4, nameLength); Description = currentPacket.Substring((categoryLength + nameLength) + 6); this._hostsEvent = true; eventManager.createEvent(categoryID, this.userID, this._roomID, Name, Description); this.Room.sendData("Er" + eventManager.getEvent(this._roomID)); } } return; case @"E\": if (((this._hostsEvent && this._isOwner) && !this._inPublicroom) && (this.roomUser != null)) { categoryID = Encoding.decodeVL64(currentPacket.Substring(2)); if (eventManager.categoryOK(categoryID)) { categoryLength = Encoding.encodeVL64(categoryID).Length; nameLength = Encoding.decodeB64(currentPacket.Substring(categoryLength + 2, 2)); Name = currentPacket.Substring(categoryLength + 4, nameLength); Description = currentPacket.Substring((categoryLength + nameLength) + 6); eventManager.editEvent(categoryID, this._roomID, Name, Description); this.Room.sendData("Er" + eventManager.getEvent(this._roomID)); } } return; case "E[": if (((this._hostsEvent && this._isOwner) && !this._inPublicroom) && (this.roomUser != null)) { this._hostsEvent = false; eventManager.removeEvent(this._roomID); this.Room.sendData("Er-1"); } return; case "@]": using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.getInt("SELECT COUNT(id) FROM rooms WHERE owner = '" + this._Username + "'") < Config.Navigator_createRoom_maxRooms) { string[] roomSettings = currentPacket.Split(new char[] { '/' }); roomSettings[2] = stringManager.filterSwearwords(roomSettings[2]); roomSettings[3] = roomSettings[3].Substring(6, 1); roomSettings[4] = roomManager.getRoomState(roomSettings[4]).ToString(); if (!(roomSettings[5] != "0") || !(roomSettings[5] != "1")) { dbClient.AddParamWithValue("rs2", roomSettings[2]); dbClient.AddParamWithValue("user", this._Username); dbClient.AddParamWithValue("rs3", roomSettings[3]); dbClient.AddParamWithValue("rs4", roomSettings[4]); dbClient.AddParamWithValue("rs5", roomSettings[5]); dbClient.runQuery("INSERT INTO rooms (name, owner, model, state, showname) VALUES (@rs2,@user,@rs3,@rs4,@rs5)"); string roomID = dbClient.getString("SELECT MAX(id) FROM rooms WHERE owner = @user"); this.sendData(string.Concat(new object[] { "@{", roomID, Convert.ToChar(13), roomSettings[2] })); } } else { this.sendData("@aError creating a private room"); } } return; case "@Y": { roomID = 0; if (!(currentPacket.Substring(2, 1) == "/")) { roomID = int.Parse(currentPacket.Substring(2).Split(new char[] { '/' })[0]); } else { roomID = int.Parse(currentPacket.Split(new char[] { '/' })[1]); } string superUsers = "0"; maxVisitors = 0x19; packetContent = currentPacket.Split(new char[] { Convert.ToChar(13) }); string roomDescription = ""; roomPassword = ""; for (i = 1; i < packetContent.Length; i++) { string updHeader = packetContent[i].Split(new char[] { '=' })[0]; string updValue = packetContent[i].Substring(updHeader.Length + 1); str69 = updHeader; if (str69 == null) { return; } if (!(str69 == "description")) { if (str69 != "allsuperuser") { if (str69 == "maxvisitors") { goto Label_3F11; } if (str69 != "password") { return; } goto Label_3F38; } } else { roomDescription = stringManager.filterSwearwords(updValue); continue; } superUsers = updValue; if ((superUsers != "0") && (superUsers != "1")) { superUsers = "0"; } continue; Label_3F11: maxVisitors = int.Parse(updValue); if ((maxVisitors < 10) || (maxVisitors > 50)) { maxVisitors = 0x19; } continue; Label_3F38: roomPassword = updValue; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("desc", roomDescription); dbClient.AddParamWithValue("super", superUsers); dbClient.AddParamWithValue("max", maxVisitors); dbClient.AddParamWithValue("pass", roomPassword); dbClient.AddParamWithValue("id", roomID); dbClient.AddParamWithValue("owner", this._Username); dbClient.runQuery("UPDATE rooms SET description = @desc,superusers = @super,visitors_max = @max, password = @pass WHERE id = @id AND owner = @owner LIMIT 1"); } return; } case "@X": packetContent = currentPacket.Substring(2).Split(new char[] { '/' }); if ((packetContent[3] != "1") && (packetContent[2] != "0")) { packetContent[2] = "1"; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", stringManager.filterSwearwords(packetContent[1])); dbClient.AddParamWithValue("state", roomManager.getRoomState(packetContent[2])); dbClient.AddParamWithValue("show", packetContent[3]); dbClient.AddParamWithValue("id", packetContent[0]); dbClient.AddParamWithValue("owner", this._Username); dbClient.runQuery("UPDATE rooms SET name = @name,state = @state,showname = @show WHERE id = @id AND owner = @owner LIMIT 1"); } return; case "BX": string roomCategory; roomID = Encoding.decodeVL64(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { roomCategory = dbClient.getString(string.Concat(new object[] { "SELECT category FROM rooms WHERE id = '", roomID, "' AND owner = '", this._Username, "'" })); } if (roomCategory != "") { this.sendData("C^" + Encoding.encodeVL64(roomID) + Encoding.encodeVL64(int.Parse(roomCategory))); } return; case "BY": roomID = Encoding.decodeVL64(currentPacket.Substring(2)); cataID = Encoding.decodeVL64(currentPacket.Substring(Encoding.encodeVL64(roomID).Length + 2)); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM room_categories WHERE id = '", cataID, "' AND type = '2' AND parent > 0 AND access_rank_min <= ", this._Rank }))) { dbClient.runQuery(string.Concat(new object[] { "UPDATE rooms SET category = '", cataID, "' WHERE id = '", roomID, "' AND owner = '", this._Username, "' LIMIT 1" })); } } return; case "@W": roomID = int.Parse(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM rooms WHERE id = '", roomID, "' AND owner = '", this._Username, "'" }))) { dbClient.runQuery("DELETE FROM room_rights WHERE roomid = '" + roomID + "'"); dbClient.runQuery("DELETE FROM rooms WHERE id = '" + roomID + "' LIMIT 1"); dbClient.runQuery("DELETE FROM users_favourites WHERE roomid = '" + this._roomID + "'"); dbClient.runQuery("DELETE FROM room_votes WHERE roomid = '" + roomID + "'"); dbClient.runQuery("DELETE FROM room_bans WHERE roomid = '" + roomID + "' LIMIT 1"); dbClient.runQuery("DELETE FROM furniture WHERE roomid = '" + roomID + "'"); dbClient.runQuery("DELETE FROM furniture_moodlight WHERE roomid = '" + roomID + "'"); } } if (roomManager.containsRoom(roomID)) { roomManager.getRoom(roomID).kickUsers(byte.Parse("9"), "This room has been deleted"); } return; case "BZ": roomID = Encoding.decodeVL64(currentPacket.Substring(2)); if (!roomManager.containsRoom(roomID)) { this.sendData("C_"); return; } this.sendData("C_" + roomManager.getRoom(roomID).Userlist); return; case "B[": using (dbClient = Eucalypt.dbManager.GetClient()) { roomID = Encoding.decodeVL64(currentPacket.Substring(2)); string roomOwner = dbClient.getString("SELECT owner FROM rooms WHERE id = '" + roomID + "'"); if (this._Username == roomOwner) { dbClient.runQuery("DELETE FROM room_rights WHERE roomid = '" + roomID + "'"); } } return; case "@u": this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); if ((this.Room == null) || (this.roomUser == null)) { if (this.gamePlayer != null) { this.leaveGame(); } return; } this.Room.removeUser(this.roomUser.roomUID, false, ""); return; case "Bv": Config.Rooms_LoadAvertisement_img = ""; if (!(Config.Rooms_LoadAvertisement_img == "")) { this.sendData(string.Concat(new object[] { "DB", Config.Rooms_LoadAvertisement_img, Convert.ToChar(9), Config.Rooms_LoadAvertisement_uri })); return; } this.sendData("DB0"); return; case "@B": { int spec; this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); roomID = Encoding.decodeVL64(currentPacket.Substring(3)); bool isPublicroom = currentPacket.Substring(2, 1) == "A"; using (dbClient = Eucalypt.dbManager.GetClient()) { spec = dbClient.getInt("SELECT spec FROM rooms WHERE id = " + roomID); } if (spec == 1) { this.sendData("C~"); } using (dbClient = Eucalypt.dbManager.GetClient()) { if ((dbClient.getInt("SELECT COUNT(tag) FROM cms_tags WHERE ownerid = '" + this.userID + "'") > 4) && !dbClient.findsResult("SELECT badgeid FROM users_badges WHERE badgeid = 'ACH_AvatarTags1' AND userid = '" + this.userID + "'")) { dbClient.runQuery("INSERT INTO users_badges (badgeid, userid, slotid, iscurrent) VALUES ('ACH_AvatarTags1','" + this.userID + "','0','0')"); this.refreshBadges(); } } this.sendData("@S"); this.sendData("Bfhttp://wwww.sunnieday.nl/"); if ((this.gamePlayer != null) && (this.gamePlayer.Game != null)) { if (this.gamePlayer.enteringGame) { this.Room.removeUser(this.roomUser.roomUID, false, ""); this.sendData(string.Concat(new object[] { "AE", this.gamePlayer.Game.Lobby.Type, "_arena_", this.gamePlayer.Game.mapID, " ", roomID })); this.sendData("Cs" + this.gamePlayer.Game.getMap()); s = this.gamePlayer.Game.getMap(); } else { this.leaveGame(); } } else { if ((this.Room != null) && (this.roomUser != null)) { this.Room.removeUser(this.roomUser.roomUID, false, ""); } if (this._teleporterID == 0) { int accessLevel; bool allowEnterLockedRooms = rankManager.containsRight(this._Rank, "fuse_enter_locked_rooms", this.userID); using (dbClient = Eucalypt.dbManager.GetClient()) { accessLevel = dbClient.getInt("SELECT state FROM rooms WHERE id = '" + roomID + "'"); } if (!(((accessLevel != 3) || this._clubMember) || allowEnterLockedRooms)) { this.sendData("C`Kc"); return; } if (!((accessLevel != 4) || allowEnterLockedRooms)) { this.sendData("BK" + stringManager.getString("room_stafflocked")); return; } using (dbClient = Eucalypt.dbManager.GetClient()) { int nowVisitors = dbClient.getInt("SELECT SUM(visitors_now) FROM rooms WHERE id = '" + roomID + "'"); if (nowVisitors > 0) { maxVisitors = dbClient.getInt("SELECT SUM(visitors_max) FROM rooms WHERE id = '" + roomID + "'"); if ((nowVisitors >= maxVisitors) && !rankManager.containsRight(this._Rank, "fuse_enter_full_rooms", this.userID)) { if (!isPublicroom) { this.sendData("C`I"); } else { this.sendData("BK" + stringManager.getString("room_full")); } return; } } } } this._roomID = roomID; this._inPublicroom = isPublicroom; this._ROOMACCESS_PRIMARY_OK = true; if (isPublicroom) { string roomModel; using (dbClient = Eucalypt.dbManager.GetClient()) { roomModel = dbClient.getString("SELECT model FROM rooms WHERE id = '" + roomID + "'"); } this.sendData(string.Concat(new object[] { "AE", roomModel, " ", roomID })); this._ROOMACCESS_SECONDARY_OK = true; } } return; } case "@v": this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); this.sendData("@S"); return; case "@y": if (!this._inPublicroom) { using (dbClient = Eucalypt.dbManager.GetClient()) { this._isOwner = dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM rooms WHERE id = '", this._roomID, "' AND owner = '", this._Username, "'" })); if (!this._isOwner) { this._hasRights = dbClient.findsResult(string.Concat(new object[] { "SELECT userid FROM room_rights WHERE roomid = '", this._roomID, "' AND userid = '", this.userID, "'" })); } if (!this._hasRights) { this._hasRights = dbClient.findsResult("SELECT id FROM rooms WHERE id = '" + this._roomID + "' AND superusers = '1'"); } dRow = dbClient.getRow("SELECT owner FROM rooms WHERE id = '" + this._roomID + "'"); if (((this._teleporterID == 0) && !this._isOwner) && !rankManager.containsRight(this._Rank, "fuse_enter_locked_rooms", this.userID)) { int accessFlag = dbClient.getInt("SELECT state FROM rooms WHERE id = '" + this._roomID + "'"); if (!(this._ROOMACCESS_PRIMARY_OK || (accessFlag == 2))) { return; } if (dbClient.findsResult(string.Concat(new object[] { "SELECT roomid FROM room_bans WHERE roomid = '", this._roomID, "' AND userid = '", this.userID, "'" }))) { if (DateTime.Compare(DateTime.Parse(dbClient.getString(string.Concat(new object[] { "SELECT ban_expire FROM room_bans WHERE roomid = '", this._roomID, "' AND userid = '", this.userID, "'" }))), DateTime.Now) > 0) { this.sendData("C`PA"); this.sendData("@R"); return; } dbClient.runQuery(string.Concat(new object[] { "DELETE FROM room_bans WHERE roomid = '", this._roomID, "' AND userid = '", this.userID, "' LIMIT 1" })); } switch (accessFlag) { case 1: if (!roomManager.containsRoom(this._roomID)) { this.sendData("BC"); } else { roomManager.getRoom(this._roomID).sendDataToRights("A[" + this._Username); this.sendData("A["); } return; case 2: { string givenPassword = ""; try { givenPassword = currentPacket.Split(new char[] { '/' })[1]; } catch { } roomPassword = dbClient.getString("SELECT password FROM rooms WHERE id = '" + this._roomID + "'"); if (givenPassword != roomPassword) { this.sendData("@aIncorrect flat password"); return; } break; } } } this._ROOMACCESS_SECONDARY_OK = true; this.sendData("@i"); } } return; case "Ab": if (this._hasRights || !rankManager.containsRight(this.roomUser.User._Rank, "fuse_enter_locked_rooms", this.userID)) { string ringer = currentPacket.Substring(4, Encoding.decodeB64(currentPacket.Substring(2, 2))); bool letIn = currentPacket.Substring(currentPacket.Length - 1) == "A"; virtualUser ringerData = userManager.getUser(ringer); if ((ringerData != null) && (ringerData._roomID == this._roomID)) { if (letIn) { ringerData._ROOMACCESS_SECONDARY_OK = true; this.Room.sendDataToRights("@i" + ringer + Convert.ToChar(2)); ringerData.sendData("@i"); } else { ringerData.sendData("BC"); ringerData._roomID = 0; ringerData._inPublicroom = false; ringerData._ROOMACCESS_PRIMARY_OK = false; ringerData._ROOMACCESS_SECONDARY_OK = false; ringerData._isOwner = false; ringerData._hasRights = false; ringerData.Room = null; ringerData.roomUser = null; } } return; } return; case "@{": if (this._ROOMACCESS_SECONDARY_OK && !this._inPublicroom) { string Landscape; using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT model, wallpaper, floor FROM rooms WHERE id = '" + this._roomID + "'"); Landscape = dbClient.getString("SELECT landscape FROM rooms WHERE id = '" + this._roomID + "'"); } string Model = "model_" + Convert.ToString(dRow["model"]); this.sendData(string.Concat(new object[] { "AE", Model, " ", this._roomID })); int Wallpaper = Convert.ToInt32(dRow["wallpaper"]); int Floor = Convert.ToInt32(dRow["floor"]); this.sendData("@nlandscape/" + Landscape.Replace(",", ".")); if (Wallpaper > 0) { this.sendData("@nwallpaper/" + Wallpaper); } if (Floor > 0) { this.sendData("@nfloor/" + Floor); } if (!this._isOwner) { this._isOwner = rankManager.containsRight(this._Rank, "fuse_any_room_controller", this.userID); } if (this._isOwner) { this._hasRights = true; this.sendData("@o"); } if (this._hasRights) { this.sendData("@j"); } voteAmount = -1; using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult(string.Concat(new object[] { "SELECT userid FROM room_votes WHERE userid = '", this.userID, "' AND roomid = '", this._roomID, "'" }))) { voteAmount = dbClient.getInt("SELECT SUM(vote) FROM room_votes WHERE roomid = '" + this._roomID + "'"); if (voteAmount < 0) { voteAmount = 0; } } } this.sendData("EY" + Encoding.encodeVL64(voteAmount)); this.sendData("Er" + eventManager.getEvent(this._roomID)); } return; case "A~": using (dbClient = Eucalypt.dbManager.GetClient()) { if (this._inPublicroom && dbClient.findsResult("SELECT roomid FROM room_ads WHERE roomid = '" + this._roomID + "'")) { dRow = dbClient.getRow("SELECT img, uri FROM room_ads WHERE roomid = '" + this._roomID + "'"); string advImg = Convert.ToString(dRow["img"]); string advUri = Convert.ToString(dRow["uri"]); this.sendData(string.Concat(new object[] { "CP", advImg, Convert.ToChar(9), advUri })); } else { this.sendData("CP0"); } } return; case "@|": if (!this._ROOMACCESS_SECONDARY_OK) { if ((((this.gamePlayer != null) && this.gamePlayer.enteringGame) && (this.gamePlayer.teamID != -1)) && (this.gamePlayer.Game != null)) { this.sendData("@_" + this.gamePlayer.Game.Heightmap); this.sendData("Cs" + this.gamePlayer.Game.getPlayers()); s = this.gamePlayer.Game.getPlayers(); } this.gamePlayer.enteringGame = false; return; } if (!roomManager.containsRoom(this._roomID)) { this.Room = new virtualRoom(this._roomID, this._inPublicroom); roomManager.addRoom(this._roomID, this.Room); } else { this.Room = roomManager.getRoom(this._roomID); } this.sendData("@_" + this.Room.Heightmap); this.sendData(@"@\" + this.Room.dynamicUnits); return; case "@}": if (this._ROOMACCESS_SECONDARY_OK && (this.Room != null)) { this.sendData("@^" + this.Room.PublicroomItems); this.sendData("@`" + this.Room.Flooritems); } return; case "@~": if (this._ROOMACCESS_SECONDARY_OK && (this.Room != null)) { this.sendData("Du" + this.Room.Groups); if (this.Room.Lobby != null) { this.sendData(string.Concat(new object[] { "CgH", this.Room.Lobby.Rank.Title, Convert.ToChar(2), Encoding.encodeVL64(this.Room.Lobby.Rank.minPoints), Encoding.encodeVL64(this.Room.Lobby.Rank.maxPoints) })); this.sendData("Cz" + this.Room.Lobby.playerRanks); } this.sendData("DiH"); if (!this._receivedSpriteIndex) { this.sendData("Dg[SEshelves_norja\x0002X~Dshelves_polyfon\x0002YmAshelves_silo\x0002XQHtable_polyfon_small\x0002YmAchair_polyfon\x0002ZbBtable_norja_med\x0002Y_Itable_silo_med\x0002X~Dtable_plasto_4leg\x0002Y_Itable_plasto_round\x0002Y_Itable_plasto_bigsquare\x0002Y_Istand_polyfon_z\x0002ZbBchair_silo\x0002X~Dsofa_silo\x0002X~Dcouch_norja\x0002X~Dchair_norja\x0002X~Dtable_polyfon_med\x0002YmAdoormat_love\x0002ZbBdoormat_plain\x0002Z[Msofachair_polyfon\x0002X~Dsofa_polyfon\x0002Z[Msofachair_silo\x0002X~Dchair_plasty\x0002X~Dchair_plasto\x0002YmAtable_plasto_square\x0002Y_Ibed_polyfon\x0002X~Dbed_polyfon_one\x0002[dObed_trad_one\x0002YmAbed_trad\x0002YmAbed_silo_one\x0002YmAbed_silo_two\x0002YmAtable_silo_small\x0002X~Dbed_armas_two\x0002YmAbed_budget_one\x0002XQHbed_budget\x0002XQHshelves_armas\x0002YmAbench_armas\x0002YmAtable_armas\x0002YmAsmall_table_armas\x0002ZbBsmall_chair_armas\x0002YmAfireplace_armas\x0002YmAlamp_armas\x0002YmAbed_armas_one\x0002YmAcarpet_standard\x0002Y_Icarpet_armas\x0002YmAcarpet_polar\x0002Y_Ifireplace_polyfon\x0002Y_Itable_plasto_4leg*1\x0002Y_Itable_plasto_bigsquare*1\x0002Y_Itable_plasto_round*1\x0002Y_Itable_plasto_square*1\x0002Y_Ichair_plasto*1\x0002YmAcarpet_standard*1\x0002Y_Idoormat_plain*1\x0002Z[Mtable_plasto_4leg*2\x0002Y_Itable_plasto_bigsquare*2\x0002Y_Itable_plasto_round*2\x0002Y_Itable_plasto_square*2\x0002Y_Ichair_plasto*2\x0002YmAdoormat_plain*2\x0002Z[Mcarpet_standard*2\x0002Y_Itable_plasto_4leg*3\x0002Y_Itable_plasto_bigsquare*3\x0002Y_Itable_plasto_round*3\x0002Y_Itable_plasto_square*3\x0002Y_Ichair_plasto*3\x0002YmAcarpet_standard*3\x0002Y_Idoormat_plain*3\x0002Z[Mtable_plasto_4leg*4\x0002Y_Itable_plasto_bigsquare*4\x0002Y_Itable_plasto_round*4\x0002Y_Itable_plasto_square*4\x0002Y_Ichair_plasto*4\x0002YmAcarpet_standard*4\x0002Y_Idoormat_plain*4\x0002Z[Mdoormat_plain*6\x0002Z[Mdoormat_plain*5\x0002Z[Mcarpet_standard*5\x0002Y_Itable_plasto_4leg*5\x0002Y_Itable_plasto_bigsquare*5\x0002Y_Itable_plasto_round*5\x0002Y_Itable_plasto_square*5\x0002Y_Ichair_plasto*5\x0002YmAtable_plasto_4leg*6\x0002Y_Itable_plasto_bigsquare*6\x0002Y_Itable_plasto_round*6\x0002Y_Itable_plasto_square*6\x0002Y_Ichair_plasto*6\x0002YmAtable_plasto_4leg*7\x0002Y_Itable_plasto_bigsquare*7\x0002Y_Itable_plasto_round*7\x0002Y_Itable_plasto_square*7\x0002Y_Ichair_plasto*7\x0002YmAtable_plasto_4leg*8\x0002Y_Itable_plasto_bigsquare*8\x0002Y_Itable_plasto_round*8\x0002Y_Itable_plasto_square*8\x0002Y_Ichair_plasto*8\x0002YmAtable_plasto_4leg*9\x0002Y_Itable_plasto_bigsquare*9\x0002Y_Itable_plasto_round*9\x0002Y_Itable_plasto_square*9\x0002Y_Ichair_plasto*9\x0002YmAcarpet_standard*6\x0002Y_Ichair_plasty*1\x0002X~Dpizza\x0002YmAdrinks\x0002YmAchair_plasty*2\x0002X~Dchair_plasty*3\x0002X~Dchair_plasty*4\x0002X~Dbar_polyfon\x0002Y_Iplant_cruddy\x0002YmAbottle\x0002YmAbardesk_polyfon\x0002X~Dbardeskcorner_polyfon\x0002X~Dfloortile\x0002Hbar_armas\x0002Y_Ibartable_armas\x0002YmAbar_chair_armas\x0002YmAcarpet_soft\x0002Z@Kcarpet_soft*1\x0002Z@Kcarpet_soft*2\x0002Z@Kcarpet_soft*3\x0002Z@Kcarpet_soft*4\x0002Z@Kcarpet_soft*5\x0002Z@Kcarpet_soft*6\x0002Z@Kred_tv\x0002Y_Iwood_tv\x0002YmAcarpet_polar*1\x0002Y_Ichair_plasty*5\x0002X~Dcarpet_polar*2\x0002Y_Icarpet_polar*3\x0002Y_Icarpet_polar*4\x0002Y_Ichair_plasty*6\x0002X~Dtable_polyfon\x0002YmAsmooth_table_polyfon\x0002YmAsofachair_polyfon_girl\x0002X~Dbed_polyfon_girl_one\x0002[dObed_polyfon_girl\x0002X~Dsofa_polyfon_girl\x0002Z[Mbed_budgetb_one\x0002XQHbed_budgetb\x0002XQHplant_pineapple\x0002YmAplant_fruittree\x0002Y_Iplant_small_cactus\x0002Y_Iplant_bonsai\x0002Y_Iplant_big_cactus\x0002Y_Iplant_yukka\x0002Y_Icarpet_standard*7\x0002Y_Icarpet_standard*8\x0002Y_Icarpet_standard*9\x0002Y_Icarpet_standard*a\x0002Y_Icarpet_standard*b\x0002Y_Iplant_sunflower\x0002Y_Iplant_rose\x0002Y_Itv_luxus\x0002Y_Ibath\x0002Z\\Bsink\x0002Y_Itoilet\x0002YmAduck\x0002YmAtile\x0002YmAtoilet_red\x0002YmAtoilet_yell\x0002YmAtile_red\x0002YmAtile_yell\x0002YmApresent_gen\x0002[~Npresent_gen1\x0002[~Npresent_gen2\x0002[~Npresent_gen3\x0002[~Npresent_gen4\x0002[~Npresent_gen5\x0002[~Npresent_gen6\x0002[~Nbar_basic\x0002Y_Ishelves_basic\x0002XQHsoft_sofachair_norja\x0002X~Dsoft_sofa_norja\x0002X~Dlamp_basic\x0002XQHlamp2_armas\x0002YmAfridge\x0002Y_Idoor\x0002Yc[doorB\x0002Yc[doorC\x0002Yc[pumpkin\x0002YmAskullcandle\x0002YmAdeadduck\x0002YmAdeadduck2\x0002YmAdeadduck3\x0002YmAmenorah\x0002YmApudding\x0002YmAham\x0002YmAturkey\x0002YmAxmasduck\x0002Y_Ihouse\x0002YmAtriplecandle\x0002YmAtree3\x0002YmAtree4\x0002YmAtree5\x0002X~Dham2\x0002YmAwcandleset\x0002YmArcandleset\x0002YmAstatue\x0002YmAheart\x0002Y_Ivaleduck\x0002YmAheartsofa\x0002X~Dthrone\x0002YmAsamovar\x0002Y_Igiftflowers\x0002Y_Ihabbocake\x0002YmAhologram\x0002YmAeasterduck\x0002Y_Ibunny\x0002YmAbasket\x0002Y_Ibirdie\x0002YmAedice\x0002X~Dclub_sofa\x0002Z[Mprize1\x0002YmAprize2\x0002YmAprize3\x0002YmAdivider_poly3\x0002X~Ddivider_arm1\x0002YmAdivider_arm2\x0002YmAdivider_arm3\x0002YmAdivider_nor1\x0002X~Ddivider_silo1\x0002X~Ddivider_nor2\x0002X~Ddivider_silo2\x0002Z[Mdivider_nor3\x0002X~Ddivider_silo3\x0002X~Dtypingmachine\x0002YmAspyro\x0002YmAredhologram\x0002YmAcamera\x0002Hjoulutahti\x0002YmAhyacinth1\x0002YmAhyacinth2\x0002YmAchair_plasto*10\x0002YmAchair_plasto*11\x0002YmAbardeskcorner_polyfon*12\x0002X~Dbardeskcorner_polyfon*13\x0002X~Dchair_plasto*12\x0002YmAchair_plasto*13\x0002YmAchair_plasto*14\x0002YmAtable_plasto_4leg*14\x0002Y_Imocchamaster\x0002Y_Icarpet_legocourt\x0002YmAbench_lego\x0002YmAlegotrophy\x0002YmAvalentinescreen\x0002YmAedicehc\x0002YmArare_daffodil_rug\x0002YmArare_beehive_bulb\x0002Y_Ihcsohva\x0002YmAhcamme\x0002YmArare_elephant_statue\x0002YmArare_fountain\x0002Y_Irare_stand\x0002YmArare_globe\x0002YmArare_hammock\x0002YmArare_elephant_statue*1\x0002YmArare_elephant_statue*2\x0002YmArare_fountain*1\x0002Y_Irare_fountain*2\x0002Y_Irare_fountain*3\x0002Y_Irare_beehive_bulb*1\x0002Y_Irare_beehive_bulb*2\x0002Y_Irare_xmas_screen\x0002Y_Irare_parasol*1\x0002XMVrare_parasol*2\x0002XMVrare_parasol*3\x0002XMVtree1\x0002X~Dtree2\x0002ZmBwcandle\x0002YxBrcandle\x0002YxBsoft_jaggara_norja\x0002YmAhouse2\x0002YmAdjesko_turntable\x0002YmAmd_sofa\x0002Z[Mmd_limukaappi\x0002Y_Itable_plasto_4leg*10\x0002Y_Itable_plasto_4leg*15\x0002Y_Itable_plasto_bigsquare*14\x0002Y_Itable_plasto_bigsquare*15\x0002Y_Itable_plasto_round*14\x0002Y_Itable_plasto_round*15\x0002Y_Itable_plasto_square*14\x0002Y_Itable_plasto_square*15\x0002Y_Ichair_plasto*15\x0002YmAchair_plasty*7\x0002X~Dchair_plasty*8\x0002X~Dchair_plasty*9\x0002X~Dchair_plasty*10\x0002X~Dchair_plasty*11\x0002X~Dchair_plasto*16\x0002YmAtable_plasto_4leg*16\x0002Y_Ihockey_score\x0002Y_Ihockey_light\x0002YmAdoorD\x0002Yc[prizetrophy2*3\x0002Yd[prizetrophy3*3\x0002Yd[prizetrophy4*3\x0002Yd[prizetrophy5*3\x0002Yd[prizetrophy6*3\x0002Yd[prizetrophy*1\x0002Yd[prizetrophy2*1\x0002Yd[prizetrophy3*1\x0002Yd[prizetrophy4*1\x0002Yd[prizetrophy5*1\x0002Yd[prizetrophy6*1\x0002Yd[prizetrophy*2\x0002Yd[prizetrophy2*2\x0002Yd[prizetrophy3*2\x0002Yd[prizetrophy4*2\x0002Yd[prizetrophy5*2\x0002Yd[prizetrophy6*2\x0002Yd[prizetrophy*3\x0002Yd[rare_parasol*0\x0002XMVhc_lmp\x0002[fBhc_tbl\x0002YmAhc_chr\x0002YmAhc_dsk\x0002XQHnest\x0002Hpetfood1\x0002ZvCpetfood2\x0002ZvCpetfood3\x0002ZvCwaterbowl*4\x0002XICwaterbowl*5\x0002XICwaterbowl*2\x0002XICwaterbowl*1\x0002XICwaterbowl*3\x0002XICtoy1\x0002XICtoy1*1\x0002XICtoy1*2\x0002XICtoy1*3\x0002XICtoy1*4\x0002XICgoodie1\x0002Yc[goodie1*1\x0002Yc[goodie1*2\x0002Yc[goodie2\x0002Yc[prizetrophy7*3\x0002Yd[prizetrophy7*1\x0002Yd[prizetrophy7*2\x0002Yd[scifiport*0\x0002Y_Iscifiport*9\x0002Y_Iscifiport*8\x0002Y_Iscifiport*7\x0002Y_Iscifiport*6\x0002Y_Iscifiport*5\x0002Y_Iscifiport*4\x0002Y_Iscifiport*3\x0002Y_Iscifiport*2\x0002Y_Iscifiport*1\x0002Y_Iscifirocket*9\x0002Y_Iscifirocket*8\x0002Y_Iscifirocket*7\x0002Y_Iscifirocket*6\x0002Y_Iscifirocket*5\x0002Y_Iscifirocket*4\x0002Y_Iscifirocket*3\x0002Y_Iscifirocket*2\x0002Y_Iscifirocket*1\x0002Y_Iscifirocket*0\x0002Y_Iscifidoor*10\x0002Y_Iscifidoor*9\x0002Y_Iscifidoor*8\x0002Y_Iscifidoor*7\x0002Y_Iscifidoor*6\x0002Y_Iscifidoor*5\x0002Y_Iscifidoor*4\x0002Y_Iscifidoor*3\x0002Y_Iscifidoor*2\x0002Y_Iscifidoor*1\x0002Y_Ipillow*5\x0002YmApillow*8\x0002YmApillow*0\x0002YmApillow*1\x0002YmApillow*2\x0002YmApillow*7\x0002YmApillow*9\x0002YmApillow*4\x0002YmApillow*6\x0002YmApillow*3\x0002YmAmarquee*1\x0002Y_Imarquee*2\x0002Y_Imarquee*7\x0002Y_Imarquee*a\x0002Y_Imarquee*8\x0002Y_Imarquee*9\x0002Y_Imarquee*5\x0002Y_Imarquee*4\x0002Y_Imarquee*6\x0002Y_Imarquee*3\x0002Y_Iwooden_screen*1\x0002Y_Iwooden_screen*2\x0002Y_Iwooden_screen*7\x0002Y_Iwooden_screen*0\x0002Y_Iwooden_screen*8\x0002Y_Iwooden_screen*5\x0002Y_Iwooden_screen*9\x0002Y_Iwooden_screen*4\x0002Y_Iwooden_screen*6\x0002Y_Iwooden_screen*3\x0002Y_Ipillar*6\x0002Y_Ipillar*1\x0002Y_Ipillar*9\x0002Y_Ipillar*0\x0002Y_Ipillar*8\x0002Y_Ipillar*2\x0002Y_Ipillar*5\x0002Y_Ipillar*4\x0002Y_Ipillar*7\x0002Y_Ipillar*3\x0002Y_Irare_dragonlamp*4\x0002Y_Irare_dragonlamp*0\x0002Y_Irare_dragonlamp*5\x0002Y_Irare_dragonlamp*2\x0002Y_Irare_dragonlamp*8\x0002Y_Irare_dragonlamp*9\x0002Y_Irare_dragonlamp*7\x0002Y_Irare_dragonlamp*6\x0002Y_Irare_dragonlamp*1\x0002Y_Irare_dragonlamp*3\x0002Y_Irare_icecream*1\x0002Y_Irare_icecream*7\x0002Y_Irare_icecream*8\x0002Y_Irare_icecream*2\x0002Y_Irare_icecream*6\x0002Y_Irare_icecream*9\x0002Y_Irare_icecream*3\x0002Y_Irare_icecream*0\x0002Y_Irare_icecream*4\x0002Y_Irare_icecream*5\x0002Y_Irare_fan*7\x0002YxBrare_fan*6\x0002YxBrare_fan*9\x0002YxBrare_fan*3\x0002YxBrare_fan*0\x0002YxBrare_fan*4\x0002YxBrare_fan*5\x0002YxBrare_fan*1\x0002YxBrare_fan*8\x0002YxBrare_fan*2\x0002YxBqueue_tile1*3\x0002X~Dqueue_tile1*6\x0002X~Dqueue_tile1*4\x0002X~Dqueue_tile1*9\x0002X~Dqueue_tile1*8\x0002X~Dqueue_tile1*5\x0002X~Dqueue_tile1*7\x0002X~Dqueue_tile1*2\x0002X~Dqueue_tile1*1\x0002X~Dqueue_tile1*0\x0002X~Dticket\x0002Hrare_snowrug\x0002X~Dcn_lamp\x0002ZxIcn_sofa\x0002YmAsporttrack1*1\x0002YmAsporttrack1*3\x0002YmAsporttrack1*2\x0002YmAsporttrack2*1\x0002[~Nsporttrack2*2\x0002[~Nsporttrack2*3\x0002[~Nsporttrack3*1\x0002YmAsporttrack3*2\x0002YmAsporttrack3*3\x0002YmAfootylamp\x0002X~Dbarchair_silo\x0002X~Ddivider_nor4*4\x0002X~Dtraffic_light*1\x0002ZxItraffic_light*2\x0002ZxItraffic_light*3\x0002ZxItraffic_light*4\x0002ZxItraffic_light*6\x0002ZxIrubberchair*1\x0002X~Drubberchair*2\x0002X~Drubberchair*3\x0002X~Drubberchair*4\x0002X~Drubberchair*5\x0002X~Drubberchair*6\x0002X~Dbarrier*1\x0002X~Dbarrier*2\x0002X~Dbarrier*3\x0002X~Drubberchair*7\x0002X~Drubberchair*8\x0002X~Dtable_norja_med*2\x0002Y_Itable_norja_med*3\x0002Y_Itable_norja_med*4\x0002Y_Itable_norja_med*5\x0002Y_Itable_norja_med*6\x0002Y_Itable_norja_med*7\x0002Y_Itable_norja_med*8\x0002Y_Itable_norja_med*9\x0002Y_Icouch_norja*2\x0002X~Dcouch_norja*3\x0002X~Dcouch_norja*4\x0002X~Dcouch_norja*5\x0002X~Dcouch_norja*6\x0002X~Dcouch_norja*7\x0002X~Dcouch_norja*8\x0002X~Dcouch_norja*9\x0002X~Dshelves_norja*2\x0002X~Dshelves_norja*3\x0002X~Dshelves_norja*4\x0002X~Dshelves_norja*5\x0002X~Dshelves_norja*6\x0002X~Dshelves_norja*7\x0002X~Dshelves_norja*8\x0002X~Dshelves_norja*9\x0002X~Dchair_norja*2\x0002X~Dchair_norja*3\x0002X~Dchair_norja*4\x0002X~Dchair_norja*5\x0002X~Dchair_norja*6\x0002X~Dchair_norja*7\x0002X~Dchair_norja*8\x0002X~Dchair_norja*9\x0002X~Ddivider_nor1*2\x0002X~Ddivider_nor1*3\x0002X~Ddivider_nor1*4\x0002X~Ddivider_nor1*5\x0002X~Ddivider_nor1*6\x0002X~Ddivider_nor1*7\x0002X~Ddivider_nor1*8\x0002X~Ddivider_nor1*9\x0002X~Dsoft_sofa_norja*2\x0002X~Dsoft_sofa_norja*3\x0002X~Dsoft_sofa_norja*4\x0002X~Dsoft_sofa_norja*5\x0002X~Dsoft_sofa_norja*6\x0002X~Dsoft_sofa_norja*7\x0002X~Dsoft_sofa_norja*8\x0002X~Dsoft_sofa_norja*9\x0002X~Dsoft_sofachair_norja*2\x0002X~Dsoft_sofachair_norja*3\x0002X~Dsoft_sofachair_norja*4\x0002X~Dsoft_sofachair_norja*5\x0002X~Dsoft_sofachair_norja*6\x0002X~Dsoft_sofachair_norja*7\x0002X~Dsoft_sofachair_norja*8\x0002X~Dsoft_sofachair_norja*9\x0002X~Dsofachair_silo*2\x0002X~Dsofachair_silo*3\x0002X~Dsofachair_silo*4\x0002X~Dsofachair_silo*5\x0002X~Dsofachair_silo*6\x0002X~Dsofachair_silo*7\x0002X~Dsofachair_silo*8\x0002X~Dsofachair_silo*9\x0002X~Dtable_silo_small*2\x0002X~Dtable_silo_small*3\x0002X~Dtable_silo_small*4\x0002X~Dtable_silo_small*5\x0002X~Dtable_silo_small*6\x0002X~Dtable_silo_small*7\x0002X~Dtable_silo_small*8\x0002X~Dtable_silo_small*9\x0002X~Ddivider_silo1*2\x0002X~Ddivider_silo1*3\x0002X~Ddivider_silo1*4\x0002X~Ddivider_silo1*5\x0002X~Ddivider_silo1*6\x0002X~Ddivider_silo1*7\x0002X~Ddivider_silo1*8\x0002X~Ddivider_silo1*9\x0002X~Ddivider_silo3*2\x0002X~Ddivider_silo3*3\x0002X~Ddivider_silo3*4\x0002X~Ddivider_silo3*5\x0002X~Ddivider_silo3*6\x0002X~Ddivider_silo3*7\x0002X~Ddivider_silo3*8\x0002X~Ddivider_silo3*9\x0002X~Dtable_silo_med*2\x0002X~Dtable_silo_med*3\x0002X~Dtable_silo_med*4\x0002X~Dtable_silo_med*5\x0002X~Dtable_silo_med*6\x0002X~Dtable_silo_med*7\x0002X~Dtable_silo_med*8\x0002X~Dtable_silo_med*9\x0002X~Dsofa_silo*2\x0002X~Dsofa_silo*3\x0002X~Dsofa_silo*4\x0002X~Dsofa_silo*5\x0002X~Dsofa_silo*6\x0002X~Dsofa_silo*7\x0002X~Dsofa_silo*8\x0002X~Dsofa_silo*9\x0002X~Dsofachair_polyfon*2\x0002X~Dsofachair_polyfon*3\x0002X~Dsofachair_polyfon*4\x0002X~Dsofachair_polyfon*6\x0002X~Dsofachair_polyfon*7\x0002X~Dsofachair_polyfon*8\x0002X~Dsofachair_polyfon*9\x0002X~Dsofa_polyfon*2\x0002Z[Msofa_polyfon*3\x0002Z[Msofa_polyfon*4\x0002Z[Msofa_polyfon*6\x0002Z[Msofa_polyfon*7\x0002Z[Msofa_polyfon*8\x0002Z[Msofa_polyfon*9\x0002Z[Mbed_polyfon*2\x0002X~Dbed_polyfon*3\x0002X~Dbed_polyfon*4\x0002X~Dbed_polyfon*6\x0002X~Dbed_polyfon*7\x0002X~Dbed_polyfon*8\x0002X~Dbed_polyfon*9\x0002X~Dbed_polyfon_one*2\x0002[dObed_polyfon_one*3\x0002[dObed_polyfon_one*4\x0002[dObed_polyfon_one*6\x0002[dObed_polyfon_one*7\x0002[dObed_polyfon_one*8\x0002[dObed_polyfon_one*9\x0002[dObardesk_polyfon*2\x0002X~Dbardesk_polyfon*3\x0002X~Dbardesk_polyfon*4\x0002X~Dbardesk_polyfon*5\x0002X~Dbardesk_polyfon*6\x0002X~Dbardesk_polyfon*7\x0002X~Dbardesk_polyfon*8\x0002X~Dbardesk_polyfon*9\x0002X~Dbardeskcorner_polyfon*2\x0002X~Dbardeskcorner_polyfon*3\x0002X~Dbardeskcorner_polyfon*4\x0002X~Dbardeskcorner_polyfon*5\x0002X~Dbardeskcorner_polyfon*6\x0002X~Dbardeskcorner_polyfon*7\x0002X~Dbardeskcorner_polyfon*8\x0002X~Dbardeskcorner_polyfon*9\x0002X~Ddivider_poly3*2\x0002X~Ddivider_poly3*3\x0002X~Ddivider_poly3*4\x0002X~Ddivider_poly3*5\x0002X~Ddivider_poly3*6\x0002X~Ddivider_poly3*7\x0002X~Ddivider_poly3*8\x0002X~Ddivider_poly3*9\x0002X~Dchair_silo*2\x0002X~Dchair_silo*3\x0002X~Dchair_silo*4\x0002X~Dchair_silo*5\x0002X~Dchair_silo*6\x0002X~Dchair_silo*7\x0002X~Dchair_silo*8\x0002X~Dchair_silo*9\x0002X~Ddivider_nor3*2\x0002X~Ddivider_nor3*3\x0002X~Ddivider_nor3*4\x0002X~Ddivider_nor3*5\x0002X~Ddivider_nor3*6\x0002X~Ddivider_nor3*7\x0002X~Ddivider_nor3*8\x0002X~Ddivider_nor3*9\x0002X~Ddivider_nor2*2\x0002X~Ddivider_nor2*3\x0002X~Ddivider_nor2*4\x0002X~Ddivider_nor2*5\x0002X~Ddivider_nor2*6\x0002X~Ddivider_nor2*7\x0002X~Ddivider_nor2*8\x0002X~Ddivider_nor2*9\x0002X~Dsilo_studydesk\x0002X~Dsolarium_norja\x0002Y_Isolarium_norja*1\x0002Y_Isolarium_norja*2\x0002Y_Isolarium_norja*3\x0002Y_Isolarium_norja*5\x0002Y_Isolarium_norja*6\x0002Y_Isolarium_norja*7\x0002Y_Isolarium_norja*8\x0002Y_Isolarium_norja*9\x0002Y_Isandrug\x0002X~Drare_moonrug\x0002YmAchair_china\x0002YmAchina_table\x0002YmAsleepingbag*1\x0002YmAsleepingbag*2\x0002YmAsleepingbag*3\x0002YmAsleepingbag*4\x0002YmAsafe_silo\x0002Y_Isleepingbag*7\x0002YmAsleepingbag*9\x0002YmAsleepingbag*5\x0002YmAsleepingbag*10\x0002YmAsleepingbag*6\x0002YmAsleepingbag*8\x0002YmAchina_shelve\x0002X~Dtraffic_light*5\x0002ZxIdivider_nor4*2\x0002X~Ddivider_nor4*3\x0002X~Ddivider_nor4*5\x0002X~Ddivider_nor4*6\x0002X~Ddivider_nor4*7\x0002X~Ddivider_nor4*8\x0002X~Ddivider_nor4*9\x0002X~Ddivider_nor5*2\x0002X~Ddivider_nor5*3\x0002X~Ddivider_nor5*4\x0002X~Ddivider_nor5*5\x0002X~Ddivider_nor5*6\x0002X~Ddivider_nor5*7\x0002X~Ddivider_nor5*8\x0002X~Ddivider_nor5*9\x0002X~Ddivider_nor5\x0002X~Ddivider_nor4\x0002X~Dwall_china\x0002YmAcorner_china\x0002YmAbarchair_silo*2\x0002X~Dbarchair_silo*3\x0002X~Dbarchair_silo*4\x0002X~Dbarchair_silo*5\x0002X~Dbarchair_silo*6\x0002X~Dbarchair_silo*7\x0002X~Dbarchair_silo*8\x0002X~Dbarchair_silo*9\x0002X~Dsafe_silo*2\x0002Y_Isafe_silo*3\x0002Y_Isafe_silo*4\x0002Y_Isafe_silo*5\x0002Y_Isafe_silo*6\x0002Y_Isafe_silo*7\x0002Y_Isafe_silo*8\x0002Y_Isafe_silo*9\x0002Y_Iglass_shelf\x0002Y_Iglass_chair\x0002Y_Iglass_stool\x0002Y_Iglass_sofa\x0002Y_Iglass_table\x0002Y_Iglass_table*2\x0002Y_Iglass_table*3\x0002Y_Iglass_table*4\x0002Y_Iglass_table*5\x0002Y_Iglass_table*6\x0002Y_Iglass_table*7\x0002Y_Iglass_table*8\x0002Y_Iglass_table*9\x0002Y_Iglass_chair*2\x0002Y_Iglass_chair*3\x0002Y_Iglass_chair*4\x0002Y_Iglass_chair*5\x0002Y_Iglass_chair*6\x0002Y_Iglass_chair*7\x0002Y_Iglass_chair*8\x0002Y_Iglass_chair*9\x0002Y_Iglass_sofa*2\x0002Y_Iglass_sofa*3\x0002Y_Iglass_sofa*4\x0002Y_Iglass_sofa*5\x0002Y_Iglass_sofa*6\x0002Y_Iglass_sofa*7\x0002Y_Iglass_sofa*8\x0002Y_Iglass_sofa*9\x0002Y_Iglass_stool*2\x0002Y_Iglass_stool*4\x0002Y_Iglass_stool*5\x0002Y_Iglass_stool*6\x0002Y_Iglass_stool*7\x0002Y_Iglass_stool*8\x0002Y_Iglass_stool*3\x0002Y_Iglass_stool*9\x0002Y_ICF_10_coin_gold\x0002ZvCCF_1_coin_bronze\x0002ZvCCF_20_moneybag\x0002ZvCCF_50_goldbar\x0002ZvCCF_5_coin_silver\x0002ZvChc_crpt\x0002YmAhc_tv\x0002Z\\Bgothgate\x0002X~Dgothiccandelabra\x0002YxBgothrailing\x0002X~Dgoth_table\x0002YmAhc_bkshlf\x0002YmAhc_btlr\x0002Y_Ihc_crtn\x0002YmAhc_djset\x0002YmAhc_frplc\x0002ZbBhc_lmpst\x0002YmAhc_machine\x0002YmAhc_rllr\x0002XQHhc_rntgn\x0002X~Dhc_trll\x0002YmAgothic_chair*1\x0002X~Dgothic_sofa*1\x0002X~Dgothic_stool*1\x0002X~Dgothic_chair*2\x0002X~Dgothic_sofa*2\x0002X~Dgothic_stool*2\x0002X~Dgothic_chair*3\x0002X~Dgothic_sofa*3\x0002X~Dgothic_stool*3\x0002X~Dgothic_chair*4\x0002X~Dgothic_sofa*4\x0002X~Dgothic_stool*4\x0002X~Dgothic_chair*5\x0002X~Dgothic_sofa*5\x0002X~Dgothic_stool*5\x0002X~Dgothic_chair*6\x0002X~Dgothic_sofa*6\x0002X~Dgothic_stool*6\x0002X~Dval_cauldron\x0002X~Dsound_machine\x0002X~Dromantique_pianochair*3\x0002Y_Iromantique_pianochair*5\x0002Y_Iromantique_pianochair*2\x0002Y_Iromantique_pianochair*4\x0002Y_Iromantique_pianochair*1\x0002Y_Iromantique_divan*3\x0002Y_Iromantique_divan*5\x0002Y_Iromantique_divan*2\x0002Y_Iromantique_divan*4\x0002Y_Iromantique_divan*1\x0002Y_Iromantique_chair*3\x0002Y_Iromantique_chair*5\x0002Y_Iromantique_chair*2\x0002Y_Iromantique_chair*4\x0002Y_Iromantique_chair*1\x0002Y_Irare_parasol\x0002Y_Iplant_valentinerose*3\x0002XICplant_valentinerose*5\x0002XICplant_valentinerose*2\x0002XICplant_valentinerose*4\x0002XICplant_valentinerose*1\x0002XICplant_mazegate\x0002YeCplant_maze\x0002ZcCplant_bulrush\x0002XICpetfood4\x0002Y_Icarpet_valentine\x0002Z|Egothic_carpet\x0002XICgothic_carpet2\x0002Z|Egothic_chair\x0002X~Dgothic_sofa\x0002X~Dgothic_stool\x0002X~Dgrand_piano*3\x0002Z|Egrand_piano*5\x0002Z|Egrand_piano*2\x0002Z|Egrand_piano*4\x0002Z|Egrand_piano*1\x0002Z|Etheatre_seat\x0002Z@Kromantique_tray2\x0002Y_Iromantique_tray1\x0002Y_Iromantique_smalltabl*3\x0002Y_Iromantique_smalltabl*5\x0002Y_Iromantique_smalltabl*2\x0002Y_Iromantique_smalltabl*4\x0002Y_Iromantique_smalltabl*1\x0002Y_Iromantique_mirrortabl\x0002Y_Iromantique_divider*3\x0002Z[Mromantique_divider*2\x0002Z[Mromantique_divider*4\x0002Z[Mromantique_divider*1\x0002Z[Mjp_tatami2\x0002[dWjp_tatami\x0002YGGhabbowood_chair\x0002YGGjp_bamboo\x0002YGGjp_irori\x0002XQHjp_pillow\x0002YGGsound_set_1\x0002[dWsound_set_2\x0002[dWsound_set_3\x0002[dWsound_set_4\x0002[dWsound_set_5\x0002[dWsound_set_6\x0002[dWsound_set_7\x0002[dWsound_set_8\x0002[dWsound_set_9\x0002[dWsound_machine*1\x0002Yc[spotlight\x0002Y_Isound_machine*2\x0002Yc[sound_machine*3\x0002Yc[sound_machine*4\x0002Yc[sound_machine*5\x0002Yc[sound_machine*6\x0002Yc[sound_machine*7\x0002Yc[rom_lamp\x0002Z|Erclr_sofa\x0002XQHrclr_garden\x0002XQHrclr_chair\x0002Z|Esound_set_28\x0002[dWsound_set_27\x0002[dWsound_set_26\x0002[dWsound_set_25\x0002[dWsound_set_24\x0002[dWsound_set_23\x0002[dWsound_set_22\x0002[dWsound_set_21\x0002[dWsound_set_20\x0002[dWsound_set_19\x0002[dWsound_set_18\x0002[dWsound_set_17\x0002[dWsound_set_16\x0002[dWsound_set_15\x0002[dWsound_set_14\x0002[dWsound_set_13\x0002[dWsound_set_12\x0002[dWsound_set_11\x0002[dWsound_set_10\x0002[dWrope_divider\x0002XQHromantique_clock\x0002Y_Irare_icecream_campaign\x0002Y_Ipura_mdl5*1\x0002Yc[pura_mdl5*2\x0002Yc[pura_mdl5*3\x0002Yc[pura_mdl5*4\x0002Yc[pura_mdl5*5\x0002Yc[pura_mdl5*6\x0002Yc[pura_mdl5*7\x0002Yc[pura_mdl5*8\x0002Yc[pura_mdl5*9\x0002Yc[pura_mdl4*1\x0002XQHpura_mdl4*2\x0002XQHpura_mdl4*3\x0002XQHpura_mdl4*4\x0002XQHpura_mdl4*5\x0002XQHpura_mdl4*6\x0002XQHpura_mdl4*7\x0002XQHpura_mdl4*8\x0002XQHpura_mdl4*9\x0002XQHpura_mdl3*1\x0002XQHpura_mdl3*2\x0002XQHpura_mdl3*3\x0002XQHpura_mdl3*4\x0002XQHpura_mdl3*5\x0002XQHpura_mdl3*6\x0002XQHpura_mdl3*7\x0002XQHpura_mdl3*8\x0002XQHpura_mdl3*9\x0002XQHpura_mdl2*1\x0002XQHpura_mdl2*2\x0002XQHpura_mdl2*3\x0002XQHpura_mdl2*4\x0002XQHpura_mdl2*5\x0002XQHpura_mdl2*6\x0002XQHpura_mdl2*7\x0002XQHpura_mdl2*8\x0002XQHpura_mdl2*9\x0002XQHpura_mdl1*1\x0002XQHpura_mdl1*2\x0002XQHpura_mdl1*3\x0002XQHpura_mdl1*4\x0002XQHpura_mdl1*5\x0002XQHpura_mdl1*6\x0002XQHpura_mdl1*7\x0002XQHpura_mdl1*8\x0002XQHpura_mdl1*9\x0002XQHjp_lantern\x0002XQHchair_basic*1\x0002XQHchair_basic*2\x0002XQHchair_basic*3\x0002XQHchair_basic*4\x0002XQHchair_basic*5\x0002XQHchair_basic*6\x0002XQHchair_basic*7\x0002XQHchair_basic*8\x0002XQHchair_basic*9\x0002XQHbed_budget*1\x0002XQHbed_budget*2\x0002XQHbed_budget*3\x0002XQHbed_budget*4\x0002XQHbed_budget*5\x0002XQHbed_budget*6\x0002XQHbed_budget*7\x0002XQHbed_budget*8\x0002XQHbed_budget*9\x0002XQHbed_budget_one*1\x0002XQHbed_budget_one*2\x0002XQHbed_budget_one*3\x0002XQHbed_budget_one*4\x0002XQHbed_budget_one*5\x0002XQHbed_budget_one*6\x0002XQHbed_budget_one*7\x0002XQHbed_budget_one*8\x0002XQHbed_budget_one*9\x0002XQHjp_drawer\x0002XQHtile_stella\x0002Z[Mtile_marble\x0002Z[Mtile_brown\x0002Z[Msummer_grill*1\x0002Y_Isummer_grill*2\x0002Y_Isummer_grill*3\x0002Y_Isummer_grill*4\x0002Y_Isummer_chair*1\x0002Y_Isummer_chair*2\x0002Y_Isummer_chair*3\x0002Y_Isummer_chair*4\x0002Y_Isummer_chair*5\x0002Y_Isummer_chair*6\x0002Y_Isummer_chair*7\x0002Y_Isummer_chair*8\x0002Y_Isummer_chair*9\x0002Y_Isound_set_36\x0002[dWsound_set_35\x0002[dWsound_set_34\x0002[dWsound_set_33\x0002[dWsound_set_32\x0002[dWsound_set_31\x0002[dWsound_set_30\x0002[dWsound_set_29\x0002[dWsound_machine_pro\x0002Yc[rare_mnstr\x0002Y_Ione_way_door*1\x0002XQHone_way_door*2\x0002XQHone_way_door*3\x0002XQHone_way_door*4\x0002XQHone_way_door*5\x0002XQHone_way_door*6\x0002XQHone_way_door*7\x0002XQHone_way_door*8\x0002XQHone_way_door*9\x0002XQHexe_rug\x0002Z[Mexe_s_table\x0002ZGRsound_set_37\x0002[dWsummer_pool*1\x0002ZlIsummer_pool*2\x0002ZlIsummer_pool*3\x0002ZlIsummer_pool*4\x0002ZlIsong_disk\x0002Yc[jukebox*1\x0002Yc[carpet_soft_tut\x0002[~Nsound_set_44\x0002[dWsound_set_43\x0002[dWsound_set_42\x0002[dWsound_set_41\x0002[dWsound_set_40\x0002[dWsound_set_39\x0002[dWsound_set_38\x0002[dWgrunge_chair\x0002Z@Kgrunge_mattress\x0002Z@Kgrunge_radiator\x0002Z@Kgrunge_shelf\x0002Z@Kgrunge_sign\x0002Z@Kgrunge_table\x0002Z@Khabboween_crypt\x0002[uKhabboween_grass\x0002Z@Khal_cauldron\x0002Z@Khal_grave\x0002Z@Ksound_set_52\x0002[dWsound_set_51\x0002[dWsound_set_50\x0002[dWsound_set_49\x0002[dWsound_set_48\x0002[dWsound_set_47\x0002[dWsound_set_46\x0002[dWsound_set_45\x0002[dWxmas_icelamp\x0002Z[Mxmas_cstl_wall\x0002Z[Mxmas_cstl_twr\x0002Z[Mxmas_cstl_gate\x0002[~Ntree7\x0002Z[Mtree6\x0002Z[Msound_set_54\x0002[dWsound_set_53\x0002[dWsafe_silo_pb\x0002[dOplant_mazegate_snow\x0002Z[Mplant_maze_snow\x0002Z[Mchristmas_sleigh\x0002Z[Mchristmas_reindeer\x0002[~Nchristmas_poop\x0002Z[Mexe_bardesk\x0002Z[Mexe_chair\x0002Z[Mexe_chair2\x0002Z[Mexe_corner\x0002Z[Mexe_drinks\x0002Z[Mexe_sofa\x0002Z[Mexe_table\x0002Z[Msound_set_59\x0002[dWsound_set_58\x0002[dWsound_set_57\x0002[dWsound_set_56\x0002[dWsound_set_55\x0002[dWnoob_table*1\x0002[~Nnoob_table*2\x0002[~Nnoob_table*3\x0002[~Nnoob_table*4\x0002[~Nnoob_table*5\x0002[~Nnoob_table*6\x0002[~Nnoob_stool*1\x0002[~Nnoob_stool*2\x0002[~Nnoob_stool*3\x0002[~Nnoob_stool*4\x0002[~Nnoob_stool*5\x0002[~Nnoob_stool*6\x0002[~Nnoob_rug*1\x0002[~Nnoob_rug*2\x0002[~Nnoob_rug*3\x0002[~Nnoob_rug*4\x0002[~Nnoob_rug*5\x0002[~Nnoob_rug*6\x0002[~Nnoob_lamp*1\x0002[dOnoob_lamp*2\x0002[dOnoob_lamp*3\x0002[dOnoob_lamp*4\x0002[dOnoob_lamp*5\x0002[dOnoob_lamp*6\x0002[dOnoob_chair*1\x0002[~Nnoob_chair*2\x0002[~Nnoob_chair*3\x0002[~Nnoob_chair*4\x0002[~Nnoob_chair*5\x0002[~Nnoob_chair*6\x0002[~Nexe_globe\x0002[~Nexe_plant\x0002Z[Mval_teddy*1\x0002[dOval_teddy*2\x0002[dOval_teddy*3\x0002[dOval_teddy*4\x0002[dOval_teddy*5\x0002[dOval_teddy*6\x0002[dOval_randomizer\x0002[dOval_choco\x0002[dOteleport_door\x0002Yc[sound_set_61\x0002[dWsound_set_60\x0002[dWfortune\x0002[dOsw_table\x0002ZIPsw_raven\x0002[cQsw_chest\x0002ZIPsand_cstl_wall\x0002ZIPsand_cstl_twr\x0002ZIPsand_cstl_gate\x0002ZIPgrunge_candle\x0002ZIPgrunge_bench\x0002ZIPgrunge_barrel\x0002ZIPrclr_lamp\x0002ZGRprizetrophy9*1\x0002Yd[prizetrophy8*1\x0002Yd[nouvelle_trax\x0002Yc[md_rug\x0002ZGRjp_tray6\x0002ZGRjp_tray5\x0002ZGRjp_tray4\x0002ZGRjp_tray3\x0002ZGRjp_tray2\x0002ZGRjp_tray1\x0002ZGRarabian_teamk\x0002ZGRarabian_snake\x0002ZGRarabian_rug\x0002ZGRarabian_pllw\x0002ZGRarabian_divdr\x0002ZGRarabian_chair\x0002ZGRarabian_bigtb\x0002ZGRarabian_tetbl\x0002ZGRarabian_tray1\x0002ZGRarabian_tray2\x0002ZGRarabian_tray3\x0002ZGRarabian_tray4\x0002ZGRsound_set_64\x0002[dWsound_set_63\x0002[dWsound_set_62\x0002[dWjukebox_ptv*1\x0002Yc[calippo\x0002ZAStraxsilver\x0002Yc[traxgold\x0002Yc[traxbronze\x0002Yc[bench_puffet\x0002YATCFC_500_goldbar\x0002ZvCCFC_200_moneybag\x0002ZvCCFC_10_coin_bronze\x0002ZvCCFC_100_coin_gold\x0002ZvCCFC_50_coin_silver\x0002ZvCjp_table\x0002XMVjp_rare\x0002XMVjp_katana3\x0002XMVjp_katana2\x0002XMVjp_katana1\x0002XMVfootylamp_campaign\x0002XMVtiki_waterfall\x0002[dWtiki_tray4\x0002[dWtiki_tray3\x0002[dWtiki_tray2\x0002[dWtiki_tray1\x0002[dWtiki_tray0\x0002[dWtiki_toucan\x0002[dWtiki_torch\x0002[dWtiki_statue\x0002[dWtiki_sand\x0002[dWtiki_parasol\x0002[dWtiki_junglerug\x0002[dWtiki_corner\x0002[dWtiki_bflies\x0002[dWtiki_bench\x0002[dWtiki_bardesk\x0002[dWtampax_rug\x0002[dWsound_set_70\x0002[dWsound_set_69\x0002[dWsound_set_68\x0002[dWsound_set_67\x0002[dWsound_set_66\x0002[dWsound_set_65\x0002[dWnoob_rug_tradeable*1\x0002[dWnoob_rug_tradeable*2\x0002[dWnoob_rug_tradeable*3\x0002[dWnoob_rug_tradeable*4\x0002[dWnoob_rug_tradeable*5\x0002[dWnoob_rug_tradeable*6\x0002[dWnoob_plant\x0002[dWnoob_lamp_tradeable*1\x0002[dWnoob_lamp_tradeable*2\x0002[dWnoob_lamp_tradeable*3\x0002[dWnoob_lamp_tradeable*4\x0002[dWnoob_lamp_tradeable*5\x0002[dWnoob_lamp_tradeable*6\x0002[dWnoob_chair_tradeable*1\x0002[dWnoob_chair_tradeable*2\x0002[dWnoob_chair_tradeable*3\x0002[dWnoob_chair_tradeable*4\x0002[dWnoob_chair_tradeable*5\x0002[dWnoob_chair_tradeable*6\x0002[dWjp_teamaker\x0002[dWsvnr_uk\x0002[`_svnr_nl\x0002XhXsvnr_it\x0002XhXsvnr_de\x0002[gXsvnr_aus\x0002[gXdiner_tray_7\x0002[gXdiner_tray_6\x0002[gXdiner_tray_5\x0002[gXdiner_tray_4\x0002[gXdiner_tray_3\x0002[gXdiner_tray_2\x0002[gXdiner_tray_1\x0002[gXdiner_tray_0\x0002[gXdiner_sofa_2*1\x0002[gXdiner_sofa_2*2\x0002[gXdiner_sofa_2*3\x0002[gXdiner_sofa_2*4\x0002[gXdiner_sofa_2*5\x0002[gXdiner_sofa_2*6\x0002[gXdiner_sofa_2*7\x0002[gXdiner_sofa_2*8\x0002[gXdiner_sofa_2*9\x0002[gXdiner_shaker\x0002[gXdiner_rug\x0002[gXdiner_gumvendor*1\x0002[gXdiner_gumvendor*2\x0002[gXdiner_gumvendor*3\x0002[gXdiner_gumvendor*4\x0002[gXdiner_gumvendor*5\x0002[gXdiner_gumvendor*6\x0002[gXdiner_gumvendor*7\x0002[gXdiner_gumvendor*8\x0002[gXdiner_gumvendor*9\x0002[gXdiner_cashreg*1\x0002[gXdiner_cashreg*2\x0002[gXdiner_cashreg*3\x0002[gXdiner_cashreg*4\x0002[gXdiner_cashreg*5\x0002[gXdiner_cashreg*6\x0002[gXdiner_cashreg*7\x0002[gXdiner_cashreg*8\x0002[gXdiner_cashreg*9\x0002[gXdiner_table_2*1\x0002XiZdiner_table_2*2diner_table_2*2\x0002XiZdiner_table_2*3\x0002XiZdiner_table_2*4\x0002XiZdiner_table_2*5\x0002XiZdiner_table_2*6\x0002XiZdiner_table_2*7\x0002XiZdiner_table_2*8\x0002XiZdiner_table_2*9\x0002XiZdiner_table_1*1\x0002XiZdiner_table_1*2\x0002XiZdiner_table_1*3\x0002XiZdiner_table_1*4\x0002XiZdiner_table_1*5\x0002XiZdiner_table_1*6\x0002XiZdiner_table_1*7\x0002XiZdiner_table_1*8\x0002XiZdiner_table_1*9\x0002XiZdiner_sofa_1*1\x0002XiZdiner_sofa_1*2\x0002XiZdiner_sofa_1*3\x0002XiZdiner_sofa_1*4\x0002XiZdiner_sofa_1*5\x0002XiZdiner_sofa_1*6\x0002XiZdiner_sofa_1*7\x0002XiZdiner_sofa_1*8\x0002XiZdiner_sofa_1*9\x0002XiZdiner_chair*1\x0002XiZdiner_chair*2\x0002XiZdiner_chair*3\x0002XiZdiner_chair*4\x0002XiZdiner_chair*5\x0002XiZdiner_chair*6\x0002XiZdiner_chair*7\x0002XiZdiner_chair*8\x0002XiZdiner_chair*9\x0002XiZdiner_bardesk_gate*1\x0002XiZdiner_bardesk_gate*2\x0002XiZdiner_bardesk_gate*3\x0002XiZdiner_bardesk_gate*4\x0002XiZdiner_bardesk_gate*5\x0002XiZdiner_bardesk_gate*6\x0002XiZdiner_bardesk_gate*7\x0002XiZdiner_bardesk_gate*8\x0002XiZdiner_bardesk_gate*9\x0002XiZdiner_bardesk_corner*1\x0002XiZdiner_bardesk_corner*2\x0002XiZdiner_bardesk_corner*3\x0002XiZdiner_bardesk_corner*4\x0002XiZdiner_bardesk_corner*5\x0002XiZdiner_bardesk_corner*6\x0002XiZdiner_bardesk_corner*7\x0002XiZdiner_bardesk_corner*8\x0002XiZdiner_bardesk_corner*9\x0002XiZdiner_bardesk*1\x0002XiZdiner_bardesk*2\x0002XiZdiner_bardesk*3\x0002XiZdiner_bardesk*4\x0002XiZdiner_bardesk*5\x0002XiZdiner_bardesk*6\x0002XiZdiner_bardesk*7\x0002XiZdiner_bardesk*8\x0002XiZdiner_bardesk*9\x0002XiZads_dave_cns\x0002XiZeasy_carpet\x0002Yc[easy_bowl2\x0002Yc[greek_corner\x0002Yc[greek_gate\x0002Yc[greek_pillars\x0002Yc[greek_seat\x0002Yc[greektrophy*1\x0002[P\\greektrophy*2\x0002[P\\greektrophy*3\x0002[P\\greek_block\x0002Xt[hcc_table\x0002Y`]hcc_shelf\x0002Y`]hcc_sofa\x0002Y`]hcc_minibar\x0002Y`]hcc_chair\x0002Y`]det_divider\x0002Y`]netari_carpet\x0002Y`]det_body\x0002Y`]hcc_stool\x0002Y`]hcc_sofachair\x0002Y`]hcc_crnr\x0002Xw]hcc_dvdr\x0002Xw]sob_carpet\x0002[`_igor_seat\x0002[`_ads_igorbrain\x0002Y_aads_igorswitch\x0002Y_aads_711*1\x0002Y_aads_711*2\x0002Y_aads_711*3\x0002Y_aads_711*4\x0002Y_aads_igorraygun\x0002Y_ahween08_sink\x0002Y[chween08_curtain\x0002Y[chween08_bath\x0002Y[chween08_defibs\x0002Y[chween08_bbag\x0002Y[chween08_curtain2\x0002Y[chween08_defibs2\x0002Y[chween08_bed\x0002Y[chween08_sink2\x0002Y[chween08_bed2\x0002Y[chween08_bath2\x0002Y[chween08_manhole\x0002Y[chween08_trll\x0002Y[cPRpost.it\x0002Hpost.it.vd\x0002Hphoto\x0002HChess\x0002HTicTacToe\x0002HBattleShip\x0002HPoker\x0002Hwallpaper\x0002Hfloor\x0002Hposter\x0002Z@Kgothicfountain\x0002YxBhc_wall_lamp\x0002ZbBindustrialfan\x0002Z`Btorch\x0002Z\\Bval_heart\x0002XBCwallmirror\x0002Z|Ejp_ninjastars\x0002XQHhabw_mirror\x0002XQHhabbowheel\x0002Z[Mguitar_skull\x0002Z@Kguitar_v\x0002Z@Kxmas_light\x0002[~Nhrella_poster_3\x0002[\x007fNhrella_poster_2\x0002ZIPhrella_poster_1\x0002[\x007fNsw_swords\x0002ZIPsw_stone\x0002ZIPsw_hole\x0002ZIProomdimmer\x0002Yc[md_logo_wall\x0002ZGRmd_can\x0002ZGRjp_sheet3\x0002ZGRjp_sheet2\x0002ZGRjp_sheet1\x0002ZGRarabian_swords\x0002ZGRarabian_wndw\x0002ZGRtiki_wallplnt\x0002[dWtiki_surfboard\x0002[dWtampax_wall\x0002[dWwindow_single_default\x0002[gXwindow_double_default\x0002[gXnoob_window_double\x0002[dWwindow_triple\x0002[gXwindow_square\x0002[gXwindow_romantic_wide\x0002[gXwindow_romantic_narrow\x0002[gXwindow_grunge\x0002[gXwindow_golden\x0002[gXwindow_chinese_wide\x0002[gXwindow_chinese_narrow\x0002YA\\window_basic\x0002[gXwindow_70s_wide\x0002[gXwindow_70s_narrow\x0002[gXads_sunnyd\x0002YlXwindow_diner2\x0002XiZwindow_diner\x0002XiZdiner_walltable\x0002XiZads_dave_wall\x0002XiZwindow_hole\x0002Yc[easy_poster\x0002Yc[ads_nokia_logo\x0002Yc[ads_nokia_phone\x0002Yc[landscape\x0002XV^window_skyscraper\x0002[j\\netari_poster\x0002Y`]det_bhole\x0002Y`]ads_campguitar\x0002Xw]hween08_rad\x0002Y[chween08_wndwb\x0002Y[chween08_wndw\x0002Y[chween08_bio\x0002Y[chw_08_xray\x0002Y[c"); this._receivedSpriteIndex = true; } } return; case "@\x007f": if (this._ROOMACCESS_SECONDARY_OK && (this.Room != null)) { this.sendData("@m" + this.Room.Wallitems); } return; case "A@": if ((this._ROOMACCESS_SECONDARY_OK && (this.Room != null)) && (this.roomUser == null)) { this.sendData("@b" + this.Room.dynamicStatuses); this.Room.addUser(this); if (this.Room.hasSpecialCasts("cam1")) { this.sendData("AGcam1 targetcamera " + this.roomUser.roomUID); } if (!this._isOwner) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE users SET roomvisits = roomvisits + 1 WHERE id = '" + this.userID + "'"); } this.roomRaiderThread = new Thread(new ThreadStart(this.roomRaiderWait)); this.roomRaiderThread.Start(); } } return; case "CH": { messageLength = 0; Message = ""; int staffNoteLength = 0; string staffNote = ""; string targetUser = ""; str69 = currentPacket.Substring(2, 2); if (str69 != null) { virtualUser _targetUser; if (str69 == "HH") { if (!rankManager.containsRight(this._Rank, "fuse_alert", this.userID)) { this.sendData("BK" + stringManager.getString("modtool_accesserror")); } else { messageLength = Encoding.decodeB64(currentPacket.Substring(4, 2)); Message = currentPacket.Substring(6, messageLength).Replace(Convert.ToChar(1).ToString(), " "); staffNoteLength = Encoding.decodeB64(currentPacket.Substring(messageLength + 6, 2)); staffNote = currentPacket.Substring(messageLength + 8, staffNoteLength); targetUser = currentPacket.Substring((messageLength + staffNoteLength) + 10); if ((Message != "") && !(targetUser == "")) { _targetUser = userManager.getUser(targetUser); if (_targetUser == null) { this.sendData("BK" + stringManager.getString("modtool_actionfail") + "\r" + stringManager.getString("modtool_usernotfound")); } else { _targetUser.sendData("B!" + Message + Convert.ToChar(2)); staffManager.addStaffMessage("alert", this.userID, _targetUser.userID, Message, staffNote); } } } return; } if (str69 == "HI") { if (!rankManager.containsRight(this._Rank, "fuse_kick", this.userID)) { this.sendData("BK" + stringManager.getString("modtool_accesserror")); } else { messageLength = Encoding.decodeB64(currentPacket.Substring(4, 2)); Message = currentPacket.Substring(6, messageLength).Replace(Convert.ToChar(1).ToString(), " "); staffNoteLength = Encoding.decodeB64(currentPacket.Substring(messageLength + 6, 2)); staffNote = currentPacket.Substring(messageLength + 8, staffNoteLength); targetUser = currentPacket.Substring((messageLength + staffNoteLength) + 10); if ((Message != "") && !(targetUser == "")) { _targetUser = userManager.getUser(targetUser); if (_targetUser == null) { this.sendData("BK" + stringManager.getString("modtool_actionfail") + "\r" + stringManager.getString("modtool_usernotfound")); } else if ((_targetUser.Room != null) && (_targetUser.roomUser != null)) { if (_targetUser._Rank < this._Rank) { _targetUser.Room.removeUser(_targetUser.roomUser.roomUID, true, Message); staffManager.addStaffMessage("kick", this.userID, _targetUser.userID, Message, staffNote); } else { this.sendData("BK" + stringManager.getString("modtool_actionfail") + "\r" + stringManager.getString("modtool_rankerror")); } } } } return; } if (str69 == "HJ") { if (!rankManager.containsRight(this._Rank, "fuse_ban", this.userID)) { this.sendData("BK" + stringManager.getString("modtool_accesserror")); } else { int targetUserLength = 0; int banHours = 0; bool banIP = currentPacket.Substring(currentPacket.Length - 1, 1) == "I"; messageLength = Encoding.decodeB64(currentPacket.Substring(4, 2)); Message = currentPacket.Substring(6, messageLength).Replace(Convert.ToChar(1).ToString(), " "); staffNoteLength = Encoding.decodeB64(currentPacket.Substring(messageLength + 6, 2)); staffNote = currentPacket.Substring(messageLength + 8, staffNoteLength); targetUserLength = Encoding.decodeB64(currentPacket.Substring((messageLength + staffNoteLength) + 8, 2)); targetUser = currentPacket.Substring((messageLength + staffNoteLength) + 10, targetUserLength); banHours = Encoding.decodeVL64(currentPacket.Substring(((messageLength + staffNoteLength) + targetUserLength) + 10)); if (((Message != "") && (targetUser != "")) && (banHours != 0)) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", targetUser); dRow = dbClient.getRow("SELECT id,rank,ipaddress_last FROM users WHERE name = @name"); } if (dRow.Table.Rows.Count == 0) { this.sendData("BK" + stringManager.getString("modtool_actionfail") + "\r" + stringManager.getString("modtool_usernotfound")); } else if (Convert.ToByte(dRow["rank"]) >= this._Rank) { this.sendData("BK" + stringManager.getString("modtool_actionfail") + "\r" + stringManager.getString("modtool_rankerror")); } else { int targetID = Convert.ToInt32(dRow["id"]); string Report = ""; staffManager.addStaffMessage("ban", this.userID, targetID, Message, staffNote); if (banIP && rankManager.containsRight(this._Rank, "fuse_superban", this.userID)) { userManager.setBan(Convert.ToString(dRow["ipaddress_last"]), banHours, Message); Report = userManager.generateBanReport(Convert.ToString(dRow["ipaddress_last"])); } else { userManager.setBan(targetID, banHours, Message); Report = userManager.generateBanReport(targetID); } this.sendData("BK" + Report); } } } return; } if (str69 == "IH") { if (!rankManager.containsRight(this._Rank, "fuse_room_alert", this.userID)) { this.sendData("BK" + stringManager.getString("modtool_accesserror")); } else if ((this.Room != null) && (this.roomUser != null)) { messageLength = Encoding.decodeB64(currentPacket.Substring(4, 2)); Message = currentPacket.Substring(6, messageLength).Replace(Convert.ToChar(1).ToString(), " "); staffNoteLength = Encoding.decodeB64(currentPacket.Substring(messageLength + 6, 2)); staffNote = currentPacket.Substring(messageLength + 8, staffNoteLength); if (Message != "") { this.Room.sendData("B!" + Message + Convert.ToChar(2)); staffManager.addStaffMessage("ralert", this.userID, this._roomID, Message, staffNote); } } return; } if (str69 == "II") { if (!rankManager.containsRight(this._Rank, "fuse_room_kick", this.userID)) { this.sendData("BK" + stringManager.getString("modtool_accesserror")); } else if ((this.Room != null) && (this.roomUser != null)) { messageLength = Encoding.decodeB64(currentPacket.Substring(4, 2)); Message = currentPacket.Substring(6, messageLength).Replace(Convert.ToChar(1).ToString(), " "); staffNoteLength = Encoding.decodeB64(currentPacket.Substring(messageLength + 6, 2)); staffNote = currentPacket.Substring(messageLength + 8, staffNoteLength); if (Message != "") { this.Room.kickUsers(this._Rank, Message); staffManager.addStaffMessage("rkick", this.userID, this._roomID, Message, staffNote); } } return; } } return; } case "Cm": using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT id, date, message FROM cms_help WHERE username = '" + this._Username + "' AND picked_up = '0'"); } if (dRow.Table.Rows.Count == 0) { this.sendData("D\x007fH"); } else { this.sendData(string.Concat(new object[] { "D\x007fI", Convert.ToString(dRow[0]), Convert.ToChar(2), Convert.ToString(dRow[1]), Convert.ToChar(2), Convert.ToString(dRow[2]), Convert.ToChar(2) })); } return; case "Cn": using (dbClient = Eucalypt.dbManager.GetClient()) { cfhID = dbClient.getInt("SELECT id FROM cms_help WHERE username = '" + this._Username + "' AND picked_up = '0'"); dbClient.runQuery("DELETE FROM cms_help WHERE picked_up = '0' AND username = '" + this._Username + "' LIMIT 1"); } this.sendData("D\x007fH"); userManager.sendToRank(Config.Minimum_CFH_Rank, true, string.Concat(new object[] { "BT", Encoding.encodeVL64(cfhID), Convert.ToChar(2), "IUser Deleted!", Convert.ToChar(2), "User Deleted!", Convert.ToChar(2), "User Deleted!", Convert.ToChar(2), Encoding.encodeVL64(0), Convert.ToChar(2), Convert.ToChar(2), "H", Convert.ToChar(2), Encoding.encodeVL64(0) })); return; case "AV": using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult("SELECT id FROM cms_help WHERE username = '" + this._Username + "' AND picked_up = '0'")) { return; } } messageLength = Encoding.decodeB64(currentPacket.Substring(2, 2)); if (messageLength != 0) { string cfhMessage = currentPacket.Substring(4, messageLength); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("username", this._Username); dbClient.AddParamWithValue("ip", this.connectionSocket.RemoteEndPoint.ToString().Split(new char[] { char.Parse(":") })[0]); dbClient.AddParamWithValue("message", cfhMessage); dbClient.AddParamWithValue("date", DateTime.Now); dbClient.AddParamWithValue("roomid", this._roomID.ToString()); dbClient.runQuery("INSERT INTO cms_help (username,ip,message,date,picked_up,subject,roomid) VALUES (@username,@ip,@message,@date,'0','CFH message [hotel]',@roomid)"); cfhID = dbClient.getInt("SELECT id FROM cms_help WHERE username = @username AND picked_up = '0'"); roomName = dbClient.getString("SELECT name FROM rooms WHERE id = @roomid"); } this.sendData("EAH"); userManager.sendToRank(Config.Minimum_CFH_Rank, true, string.Concat(new object[] { "BT", Encoding.encodeVL64(cfhID), Convert.ToChar(2), "ISent: ", DateTime.Now, Convert.ToChar(2), this._Username, Convert.ToChar(2), cfhMessage, Convert.ToChar(2), Encoding.encodeVL64(this._roomID), Convert.ToChar(2), roomName, Convert.ToChar(2), "I", Convert.ToChar(2), Encoding.encodeVL64(this._roomID) })); } return; case "CG": if (rankManager.containsRight(this._Rank, "fuse_receive_calls_for_help", this.userID)) { string toUserName; cfhID = Encoding.decodeVL64(currentPacket.Substring(4, Encoding.decodeB64(currentPacket.Substring(2, 2)))); string cfhReply = currentPacket.Substring(Encoding.decodeB64(currentPacket.Substring(2, 2)) + 6); using (dbClient = Eucalypt.dbManager.GetClient()) { toUserName = dbClient.getString("SELECT username FROM cms_help WHERE id = '" + cfhID + "'"); } if (toUserName == null) { this.sendData("BK" + stringManager.getString("cfh_fail")); } else { virtualUser toVirtualUser = userManager.getUser(userManager.getUserID(toUserName)); if (toVirtualUser._isLoggedIn) { toVirtualUser.sendData("DR" + cfhReply + Convert.ToChar(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE cms_help SET picked_up = '", this._Username, "' WHERE id = '", cfhID, "' LIMIT 1" })); } } } return; } return; case "CF": if (rankManager.containsRight(this._Rank, "fuse_receive_calls_for_help", this.userID)) { cfhID = Encoding.decodeVL64(currentPacket.Substring(4, Encoding.decodeB64(currentPacket.Substring(2, 2)))); using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT picked_up FROM cms_help WHERE id = '" + cfhID + "'"); } if (dRow.Table.Columns.Count != 0) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM cms_help WHERE id = '" + cfhID + "' LIMIT 1"); } userManager.sendToRank(Config.Minimum_CFH_Rank, true, string.Concat(new object[] { "BT", Encoding.encodeVL64(cfhID), Convert.ToChar(2), "HStaff Deleted!", Convert.ToChar(2), "Staff Deleted!", Convert.ToChar(2), "Staff Deleted!", Convert.ToChar(2), "H", Convert.ToChar(2), Convert.ToChar(2), "H", Convert.ToChar(2), "H" })); } return; } return; case "@p": cfhID = Encoding.decodeVL64(currentPacket.Substring(4)); using (dbClient = Eucalypt.dbManager.GetClient()) { result = dbClient.findsResult("SELECT id FROM cms_help WHERE id = '" + cfhID + "'"); } if (!result) { this.sendData("BK" + stringManager.getString("cfh_deleted")); } else { using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT picked_up,username,message,roomid FROM cms_help WHERE id = '" + cfhID + "'"); roomName = dbClient.getString("SELECT name FROM rooms WHERE id = '" + Convert.ToString(dRow[3]) + "'"); } if (Convert.ToString(dRow[0]) == "1") { this.sendData("BK" + stringManager.getString("cfh_picked_up")); } else { userManager.sendToRank(Config.Minimum_CFH_Rank, true, string.Concat(new object[] { "BT", Encoding.encodeVL64(cfhID), Convert.ToChar(2), "IPicked up: ", DateTime.Now, Convert.ToChar(2), Convert.ToString(dRow[1]), Convert.ToChar(2), Convert.ToString(dRow[2]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[3])), Convert.ToChar(2), roomName, Convert.ToChar(2), "I", Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow[3])) })); } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE cms_help SET picked_up = '1' WHERE id = '" + cfhID + "' LIMIT 1"); } } return; case "EC": if (rankManager.containsRight(this._Rank, "fuse_receive_calls_for_help", this.userID)) { idLength = Encoding.decodeB64(currentPacket.Substring(2, 2)); cfhID = Encoding.decodeVL64(currentPacket.Substring(4, idLength)); using (dbClient = Eucalypt.dbManager.GetClient()) { roomID = dbClient.getInt("SELECT roomid FROM cms_help WHERE id = '" + cfhID + "'"); } if (roomID != 0) { if (roomManager.getRoom(roomID).isPublicroom) { this.sendData("D^I" + Encoding.encodeVL64(roomID)); } else { this.sendData("D^H" + Encoding.encodeVL64(roomID)); } } return; } return; case "FC": this.sendData("FC" + Convert.ToChar(1)); return; case "CL": this.sendData("FC" + Convert.ToChar(1)); return; case "Dn": this.sendData("FYPC1\x0002SnowStorm level 1\x0002HI2\x0002SnowStorm level 2\x0002HJ3\x0002SnowStorm level 3\x0002HK4\x0002SnowStorm level 4\x0002HPA5\x0002SnowStorm level 5\x0002HQA6\x0002SnowStorm level 6\x0002HRA7\x0002SnowStorm level 7\x0002HSA8\x0002Bouncing Ball level 1\x0002III9\x0002Bouncing Ball level 2\x0002IJI10\x0002Bouncing Ball level 3\x0002IKI11\x0002Bouncing Ball level 4\x0002IPAI12\x0002Bouncing Ball level 5\x0002IQAH"); return; case "Da": this.sendData("@b"); this.statusManager.addStatus("joingame", "8 1/"); return; case "Dl": this.sendData("FIRA"); return; case "Dw": this.sendData("DwFL"); return; case "Dr": this.sendData("BrDa"); return; case "Du": this.sendData("FLPBH"); return; case "Dv": this.sendData("DvBKDv"); return; case "Dx": this.sendData("DxQA"); return; case "AO": if (!((((this.Room == null) || (this.roomUser == null)) || this.statusManager.containsStatus("sit")) || this.statusManager.containsStatus("lay"))) { X = int.Parse(currentPacket.Substring(2).Split(new char[] { ' ' })[0]); Y = int.Parse(currentPacket.Split(new char[] { ' ' })[1]); this.roomUser.Z1 = Rotation.Calculate(this.roomUser.X, this.roomUser.Y, X, Y); this.roomUser.Z2 = this.roomUser.Z1; this.roomUser.Refresh(); } return; case "AK": if (((this.Room != null) && (this.roomUser != null)) && !this.roomUser.walkLock) { int goalX = Encoding.decodeB64(currentPacket.Substring(2, 2)); int goalY = Encoding.decodeB64(currentPacket.Substring(4, 2)); if (!this.roomUser.SPECIAL_TELEPORTABLE) { this.roomUser.goalX = goalX; this.roomUser.goalY = goalY; return; } this.roomUser.X = goalX; this.roomUser.Y = goalY; this.roomUser.goalX = -1; this.Room.Refresh(this.roomUser); this.refreshAppearance(false, false, true); } return; case "As": if (!(((this.Room == null) || (this.roomUser == null)) || this.roomUser.walkDoor)) { this.roomUser.walkDoor = true; this.roomUser.goalX = this.Room.doorX; this.roomUser.goalY = this.Room.doorY; } return; case "At": if ((this.Room != null) || ((this.roomUser != null) && this.Room.hasSwimmingPool)) { virtualRoom.squareTrigger Trigger = this.Room.getTrigger(this.roomUser.X, this.roomUser.Y); if ((Trigger.Object == "curtains1") || (Trigger.Object == "curtains2")) { this.roomUser.swimOutfit = currentPacket.Substring(2); this.Room.sendData(@"@\" + this.roomUser.detailsString); this.Room.sendSpecialCast(Trigger.Object, "open"); this.roomUser.walkLock = false; this.roomUser.goalX = Trigger.goalX; this.roomUser.goalY = Trigger.goalY; using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("figure_swim", currentPacket.Substring(2)); dbClient.AddParamWithValue("id", this.userID); dbClient.runQuery("UPDATE users SET figure_swim = @figure_swim WHERE id = @id LIMIT 1"); } } } return; case "B^": if ((this.Room != null) && (this.roomUser != null)) { int badgeNameLength; using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE users_badges SET slotid = '0' WHERE userid = '" + this.userID + "'"); } int enabledBadgeAmount = 0; for (string szWorkData = currentPacket.Substring(2); szWorkData != ""; szWorkData = szWorkData.Substring(badgeNameLength + 2)) { slotID = Encoding.decodeVL64(szWorkData); szWorkData = szWorkData.Substring(Encoding.encodeVL64(slotID).Length); badgeNameLength = Encoding.decodeB64(szWorkData.Substring(0, 2)); if (badgeNameLength > 0) { string Badge = szWorkData.Substring(2, badgeNameLength); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE users_badges SET slotid = '", slotID, "' WHERE userid = '", this.userID, "' AND badgeid = '", Badge, "' LIMIT 1" })); } enabledBadgeAmount++; } } this.refreshBadges(); string szNotify = this.userID + Convert.ToChar(2).ToString() + Encoding.encodeVL64(enabledBadgeAmount); for (x = 0; x < this._Badges.Count; x++) { if (this._badgeSlotIDs[x] > 0) { szNotify = (szNotify + Encoding.encodeVL64(this._badgeSlotIDs[x])) + this._Badges[x] + Convert.ToChar(2); } } this.Room.sendData("Cd" + szNotify); } return; case "DG": { int ownerID = Encoding.decodeVL64(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT tag FROM cms_tags WHERE ownerid = '" + ownerID + "' LIMIT 20"); } StringBuilder List = new StringBuilder(Encoding.encodeVL64(ownerID) + Encoding.encodeVL64(dCol.Table.Rows.Count)); foreach (DataRow dRow in dCol.Table.Rows) { List.Append(Convert.ToString(dRow["tag"]) + Convert.ToChar(2)); } this.sendData("E^" + List.ToString()); return; } case "Cg": if ((this.Room != null) && (this.roomUser != null)) { int groupID = Encoding.decodeVL64(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT name,description,roomid FROM groups_details WHERE id = '" + groupID + "'"); } if (dRow.Table.Rows.Count != 1) { return; } roomName = ""; roomID = Convert.ToInt32(dRow["roomid"]); if (roomID <= 0) { roomID = -1; } else { using (dbClient = Eucalypt.dbManager.GetClient()) { roomName = dbClient.getString("SELECT name FROM rooms WHERE id = '" + roomID + "'"); } } this.sendData(string.Concat(new object[] { "Dw", Encoding.encodeVL64(groupID), Convert.ToString(dRow["name"]), Convert.ToChar(2), Convert.ToString(dRow["description"]), Convert.ToChar(2), Encoding.encodeVL64(Convert.ToInt32(dRow["roomid"])), roomName, Convert.ToChar(2) })); } return; case "AX": if (this.statusManager != null) { Status = currentPacket.Substring(2); if (!(Status == "CarryItem")) { if (Status == "Dance") { this.statusManager.removeStatus("dance"); this.statusManager.Refresh(); } return; } this.statusManager.dropCarrydItem(); } return; case "A^": if (!(((this.Room == null) || (this.roomUser == null)) || this.statusManager.containsStatus("wave"))) { this.statusManager.removeStatus("dance"); this.statusManager.handleStatus("wave", "", Config.Statuses_Wave_waveDuration); } return; case "A]": if ((((this.Room != null) && (this.roomUser != null)) && !this.statusManager.containsStatus("sit")) && !this.statusManager.containsStatus("lay")) { this.statusManager.dropCarrydItem(); if (currentPacket.Length != 2) { if (!rankManager.containsRight(this._Rank, "fuse_use_club_dance", this.userID)) { return; } int danceID = Encoding.decodeVL64(currentPacket.Substring(2)); if ((danceID < 0) || (danceID > 4)) { return; } this.statusManager.addStatus("dance", danceID.ToString()); } else { this.statusManager.addStatus("dance", ""); } this.statusManager.Refresh(); } return; case "AP": if ((this.Room != null) && (this.roomUser != null)) { Item = currentPacket.Substring(2); if (!this.statusManager.containsStatus("lay") && !Item.Contains("/")) { try { int nItem = int.Parse(Item); if ((nItem < 1) || (nItem > 0x1a)) { return; } } catch { if (((!this._inPublicroom && (Item != "Water")) && (Item != "Milk")) && (Item != "Juice")) { return; } } this.statusManager.carryItem(Item); return; } } return; case "Ah": if ((((this.Room != null) && (this.roomUser != null)) && !this.statusManager.containsStatus("sit")) && !this.statusManager.containsStatus("lay")) { if (currentPacket.Length != 2) { string signID = currentPacket.Substring(2); this.statusManager.handleStatus("sign", signID, Config.Statuses_Wave_waveDuration); } else { this.statusManager.addStatus("sign", ""); } this.statusManager.Refresh(); } return; case "@t": case "@w": Message = currentPacket.Substring(4); if (((!this._isMuted && (this.Room != null)) && (this.roomUser != null)) || ((this.Room == null) && (this.gamePlayer != null))) { userManager.addChatMessage(this._Username, this._roomID, Message); Message = stringManager.filterSwearwords(Message); if (!(Message.Substring(0, 1) == ":") || !this.isSpeechCommand(Message.Substring(1))) { if (currentPacket.Substring(1, 1) == "w") { if (this.gamePlayer == null) { this.Room.sendShout(this.roomUser, Message); } else { this.gamePlayer.Game.sendData(string.Concat(new object[] { "Ei", Encoding.encodeVL64(this.gamePlayer.roomUID), "H", Convert.ToChar(1), "@Z", Encoding.encodeVL64(this.gamePlayer.roomUID), Message, Convert.ToChar(2) })); } } else if (this.gamePlayer == null) { this.Room.sendSaying(this.roomUser, Message); } else { this.gamePlayer.Game.sendData(string.Concat(new object[] { "Ei", Encoding.encodeVL64(this.gamePlayer.roomUID), "H", Convert.ToChar(1), "@X", Encoding.encodeVL64(this.gamePlayer.roomUID), Message, Convert.ToChar(2) })); } return; } if (this.roomUser == null) { this.gamePlayer.Game.sendData("FO" + Encoding.encodeVL64(this.gamePlayer.roomUID) + "I"); return; } if (this.roomUser.isTyping) { this.Room.sendData("Ei" + Encoding.encodeVL64(this.roomUser.roomUID) + "H"); this.roomUser.isTyping = false; } } return; case "@x": if ((!this._isMuted && (this.Room != null)) && (this.roomUser != null)) { Receiver = currentPacket.Substring(4).Split(new char[] { ' ' })[0]; Message = currentPacket.Substring(Receiver.Length + 5); userManager.addChatMessage(this._Username, this._roomID, Message); Message = stringManager.filterSwearwords(Message); this.Room.sendWhisper(this.roomUser, Receiver, Message); } return; case "D}": if ((!this._isMuted && (this.Room != null)) && (this.roomUser != null)) { this.Room.sendData("Ei" + Encoding.encodeVL64(this.roomUser.roomUID) + "I"); this.roomUser.isTyping = true; } return; case "D~": if ((this.Room != null) && (this.roomUser != null)) { this.Room.sendData("Ei" + Encoding.encodeVL64(this.roomUser.roomUID) + "H"); this.roomUser.isTyping = false; } return; case "A`": if ((((this.Room != null) && (this.roomUser != null)) && !this._inPublicroom) && this._isOwner) { Target = currentPacket.Substring(2); if (userManager.containsUser(Target)) { _Target = userManager.getUser(Target); if (((_Target._roomID == this._roomID) && !_Target._hasRights) && !_Target._isOwner) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "INSERT INTO room_rights(roomid,userid) VALUES ('", this._roomID, "','", _Target.userID, "')" })); } _Target._hasRights = true; _Target.statusManager.addStatus("flatctrl", "onlyfurniture"); _Target.roomUser.Refresh(); _Target.sendData("@j"); } } return; } return; case "Aa": if ((((this.Room != null) && (this.roomUser != null)) && !this._inPublicroom) && this._isOwner) { Target = currentPacket.Substring(2); if (userManager.containsUser(Target)) { _Target = userManager.getUser(Target); if (((_Target._roomID == this._roomID) && _Target._hasRights) && !_Target._isOwner) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "DELETE FROM room_rights WHERE roomid = '", this._roomID, "' AND userid = '", _Target.userID, "' LIMIT 1" })); } _Target._hasRights = false; _Target.statusManager.removeStatus("flatctrl"); _Target.roomUser.Refresh(); _Target.sendData("@k"); } } return; } return; case "A_": if ((((this.Room != null) && (this.roomUser != null)) && !this._inPublicroom) && this._hasRights) { Target = currentPacket.Substring(2); if (userManager.containsUser(Target)) { _Target = userManager.getUser(Target); if ((_Target._roomID == this._roomID) && ((!_Target._isOwner && (_Target._Rank <= this._Rank)) && !rankManager.containsRight(_Target._Rank, "fuse_any_room_controller", this.userID))) { _Target.roomUser.walkLock = true; _Target.roomUser.walkDoor = true; _Target.roomUser.goalX = this.Room.doorX; _Target.roomUser.goalY = this.Room.doorY; } } return; } return; case "E@": if (((this._hasRights && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { Target = currentPacket.Substring(2); if (userManager.containsUser(Target)) { _Target = userManager.getUser(Target); if ((_Target._roomID == this._roomID) && (!_Target._isOwner || ((_Target._Rank <= this._Rank) && !rankManager.containsRight(_Target._Rank, "fuse_any_room_controller", this.userID)))) { string banExpireMoment = DateTime.Now.AddMinutes((double) Config.Rooms_roomBan_banDuration).ToString(); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "INSERT INTO room_bans (roomid,userid,ban_expire) VALUES ('", this._roomID, "','", _Target.userID, "','", banExpireMoment, "')" })); } _Target.roomUser.walkLock = true; _Target.roomUser.walkDoor = true; _Target.roomUser.goalX = this.Room.doorX; _Target.roomUser.goalY = this.Room.doorY; } } return; } return; case "DE": if ((!this._inPublicroom && (this.Room != null)) && (this.roomUser != null)) { int Vote = Encoding.decodeVL64(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { if (((Vote == 1) || (Vote == -1)) && !dbClient.findsResult(string.Concat(new object[] { "SELECT userid FROM room_votes WHERE userid = '", this.userID, "' AND roomid = '", this._roomID, "'" }))) { dbClient.runQuery(string.Concat(new object[] { "INSERT INTO room_votes (userid,roomid,vote) VALUES ('", this.userID, "','", this._roomID, "','", Vote, "')" })); voteAmount = dbClient.getInt("SELECT SUM(vote) FROM room_votes WHERE roomid = '" + this._roomID + "'"); if (voteAmount < 0) { voteAmount = 0; } this.roomUser.hasVoted = true; if (this._isOwner) { this.roomUser.Room.sendNewVoteAmount(voteAmount); } } } return; } return; case "Ae": this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); if ((this.Room != null) && (this.roomUser != null)) { this.sendData("A~" + catalogueManager.getPageIndex(this._Rank)); } return; case "Af": if ((this.Room != null) && (this.roomUser != null)) { string pageIndexName = currentPacket.Split(new char[] { '/' })[1]; this.sendData("A\x007f" + catalogueManager.getPage(pageIndexName, this._Rank)); } return; case "Ad": { int Cost; DatabaseClient dbClient1; packetContent = currentPacket.Split(new char[] { Convert.ToChar(13) }); string Page = packetContent[1]; Item = packetContent[3]; string VarItem = packetContent[4]; using (dbClient1 = Eucalypt.dbManager.GetClient()) { dbClient1.AddParamWithValue("indexname", Page); dbClient1.AddParamWithValue("name_cct", Item); int pageID = dbClient1.getInt("SELECT indexid FROM catalogue_pages WHERE indexname = @indexname AND minrank <= " + this._Rank); templateID = dbClient1.getInt("SELECT tid FROM catalogue_items WHERE name_cct = @name_cct"); Cost = dbClient1.getInt(string.Concat(new object[] { "SELECT catalogue_cost FROM catalogue_items WHERE catalogue_id_page = '", pageID, "' AND tid = '", templateID, "'" })); } if ((Cost == 0) || (Cost > this._Credits)) { this.sendData("AD"); } else { bool handlePresentbox = false; int receiverID = this.userID; int presentBoxID = 0; roomID = 0; if (packetContent[5] == "1") { handlePresentbox = true; string receiverName = packetContent[6]; using (DatabaseClient dbClient2 = Eucalypt.dbManager.GetClient()) { dbClient2.AddParamWithValue("name", receiverName); if (receiverName != this._Username) { i = dbClient2.getInt("SELECT id FROM users WHERE name = @name LIMIT 1"); if (i > 0) { receiverID = i; } else { this.sendData("AL" + receiverName); return; } } } string boxSprite = "present_gen" + new Random().Next(1, 7); using (dbClient1 = Eucalypt.dbManager.GetClient()) { string boxTemplateID = dbClient1.getString("SELECT tid FROM catalogue_items WHERE name_cct = '" + boxSprite + "'"); dbClient1.AddParamWithValue("tid", boxTemplateID); dbClient1.AddParamWithValue("ownerid", receiverID); dbClient1.AddParamWithValue("var", "!" + stringManager.filterSwearwords(packetContent[7])); dbClient1.runQuery("INSERT INTO furniture(tid,ownerid,var) VALUES (@tid,@ownerid,@var)"); presentBoxID = dbClient1.getInt("SELECT MAX(id) FROM furniture"); } roomID = -1; } this._Credits -= Cost; this.sendData("@F" + this._Credits); using (dbClient1 = Eucalypt.dbManager.GetClient()) { dbClient1.runQuery(string.Concat(new object[] { "UPDATE users SET credits = '", this._Credits, "' WHERE id = '", this.userID, "' LIMIT 1" })); } if (stringManager.getStringPart(Item, 0, 4) == "deal") { int dealID = int.Parse(Item.Substring(4)); using (dbClient1 = Eucalypt.dbManager.GetClient()) { dTable = dbClient1.getTable("SELECT tid,amount FROM catalogue_deals WHERE id = '" + dealID + "'"); } sb = new StringBuilder(); foreach (DataRow dRow in dTable.Rows) { i = 0; while (i <= Convert.ToInt32(dRow["amount"])) { sb.Append(string.Concat(new object[] { ",('", Convert.ToString(dRow["tid"]), "','", receiverID, "','", roomID, "')" })); i++; } using (dbClient1 = Eucalypt.dbManager.GetClient()) { dbClient1.runQuery("INSERT INTO furniture(tid,ownerid,roomid) VALUES " + sb.ToString().Substring(1)); } i = 0; while (i <= Convert.ToInt32(dRow["amount"])) { catalogueManager.handlePurchase(Convert.ToInt32(dRow["tid"]), receiverID, roomID, "0", presentBoxID, 0); i++; } } } else { int teleportid1 = 0; using (dbClient1 = Eucalypt.dbManager.GetClient()) { dbClient1.runQuery(string.Concat(new object[] { "INSERT INTO furniture(tid,ownerid,roomid) VALUES ('", templateID, "','", receiverID, "','", roomID, "' )" })); teleportid1 = catalogueManager.lastItemID; } if (((catalogueManager.getTemplate(templateID).Sprite == "wallpaper") || (catalogueManager.getTemplate(templateID).Sprite == "floor")) || catalogueManager.getTemplate(templateID).Sprite.Contains("landscape")) { string decorID = packetContent[4]; catalogueManager.handlePurchase(templateID, receiverID, 0, decorID, presentBoxID, 0); } else if ((stringManager.getStringPart(Item, 0, 11) == "greektrophy") || (stringManager.getStringPart(Item, 0, 11) == "prizetrophy")) { DatabaseClient dbClient4; string vari; if (!handlePresentbox) { using (dbClient4 = Eucalypt.dbManager.GetClient()) { vari = (this._Username + "\t" + DateTime.Today.ToShortDateString() + "\t" + stringManager.filterSwearwords(packetContent[4])).Replace(@"\", @"\").Replace("'", @"\'"); dbClient4.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", vari, "' WHERE id = '", catalogueManager.lastItemID, "' LIMIT 1" })); } } else { using (dbClient4 = Eucalypt.dbManager.GetClient()) { vari = (this._Username + "\t" + DateTime.Today.ToShortDateString() + "\t" + stringManager.filterSwearwords(packetContent[4])).Replace(@"\", @"\").Replace("'", @"\'"); dbClient4.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", vari, "' WHERE id = '", catalogueManager.lastItemID, "' LIMIT 1" })); dbClient4.runQuery(string.Concat(new object[] { "INSERT INTO furniture_presents(id,itemid) VALUES ('", presentBoxID, "','", teleportid1, "')" })); this.refreshHand("last"); return; } } } else { catalogueManager.handlePurchase(templateID, receiverID, roomID, "0", presentBoxID, teleportid1); } } if (receiverID == this.userID) { this.refreshHand("last"); } else if (userManager.containsUser(receiverID)) { userManager.getUser(receiverID).refreshHand("last"); } } return; } case "Ai": { string args = currentPacket.Substring(2); Amount = Encoding.decodeVL64(args.Substring(0, 3)); Receiver = args.Substring(3); int Ticketamount = 0; int Price = 0; if (Amount != 1) { if (Amount != 2) { return; } Ticketamount = 20; Price = 6; } else { Ticketamount = 2; Price = 1; } if (Price > this._Credits) { this.sendData("AD"); } else { int ReceiverID; using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("name", Receiver); ReceiverID = dbClient.getInt("SELECT id FROM users WHERE name = @name"); } if (ReceiverID <= 0) { this.sendData("AL" + Receiver); } else { this._Credits -= Price; this.sendData("@F" + this._Credits); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET credits = '", this._Credits, "' WHERE id = '", this.userID, "' LIMIT 1" })); dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET tickets = tickets+", Ticketamount, " WHERE id = '", ReceiverID, "' LIMIT 1" })); } if (userManager.containsUser(ReceiverID)) { virtualUser _Receiver = userManager.getUser(ReceiverID); _Receiver._Tickets += Ticketamount; if (ReceiverID == this.userID) { _Receiver.refreshValueables(false, true); } else { _Receiver.refreshValueables(true, true); } } this.sendData("AC"); } } return; } case "Ca": if ((Config.enableRecycler && (this.Room != null)) && !recyclerManager.sessionExists(this.userID)) { int itemCount = Encoding.decodeVL64(currentPacket.Substring(2)); if (recyclerManager.rewardExists(itemCount)) { recyclerManager.createSession(this.userID, itemCount); currentPacket = currentPacket.Substring(Encoding.encodeVL64(itemCount).ToString().Length + 2); for (i = 0; i < itemCount; i++) { itemID = Encoding.decodeVL64(currentPacket); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult("SELECT id FROM furniture WHERE ownerid = '" + this.userID + "' AND roomid = '0'")) { dbClient.runQuery("UPDATE furniture SET roomid = '-2' WHERE id = '" + itemID + "' LIMIT 1"); currentPacket = currentPacket.Substring(Encoding.encodeVL64(itemID).Length); } else { recyclerManager.dropSession(this.userID, true); this.sendData("DpH"); return; } } } this.sendData("Dp" + recyclerManager.sessionString(this.userID)); this.refreshHand("update"); } return; } return; case "Cb": if (!(Config.enableRecycler && ((this.Room == null) || !recyclerManager.sessionExists(this.userID)))) { bool Redeem = currentPacket.Substring(2) == "I"; if (Redeem && recyclerManager.sessionReady(this.userID)) { recyclerManager.rewardSession(this.userID); } recyclerManager.dropSession(this.userID, Redeem); this.sendData("Dp" + recyclerManager.sessionString(this.userID)); if (Redeem) { this.refreshHand("last"); } else { this.refreshHand("new"); } } return; case "AA": if ((this.Room != null) && (this.roomUser != null)) { Mode = currentPacket.Substring(2); this.refreshHand(Mode); return; } return; case "LB": if ((this.Room != null) && (this.roomUser != null)) { Mode = currentPacket.Substring(2); this.refreshHand(Mode); return; } return; case "Ch": { this.sendData("Dx" + currentPacket.Substring(2) + "I" + Encoding.encodeVL64(this.roomUser.roomUID)); this.roomUser.goalX = -1; string str3 = ""; x = this.roomUser.X; int y = this.roomUser.Y; if (x == (this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X + 1)) { str3 = "X1"; } if (x == (this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X - 1)) { str3 = "X-1"; } if (y == (this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y + 1)) { str3 = "Y1"; } if (y == (this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y - 1)) { str3 = "Y-1"; } this.Room.moveUser(this.roomUser, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y, true); Thread.Sleep(500); if (this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Sprite == "one_way_door") { str69 = str3; if (str69 != null) { if (!(str69 == "X-1")) { if (str69 == "X1") { this.Room.moveUser(this.roomUser, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X - 1, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y, true); } else if (str69 == "Y-1") { this.Room.moveUser(this.roomUser, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y + 1, true); } else if (str69 == "Y1") { this.Room.moveUser(this.roomUser, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y - 1, true); } } else { this.Room.moveUser(this.roomUser, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).X + 1, this.Room.floorItemManager.getItem(Encoding.decodeVL64(currentPacket.Substring(2))).Y, true); } } } Thread.Sleep(500); this.sendData("Dx" + currentPacket.Substring(2) + "H" + Encoding.encodeVL64(this.roomUser.roomUID)); return; } case "AB": if (((this._hasRights && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Split(new char[] { '/' })[1]); string decorType = currentPacket.Substring(2).Split(new char[] { '/' })[0]; if ((!(decorType != "wallpaper") || !(decorType != "floor")) || !(decorType != "landscape")) { using (dbClient = Eucalypt.dbManager.GetClient()) { if (catalogueManager.getTemplate(dbClient.getInt(string.Concat(new object[] { "SELECT tid FROM furniture WHERE id = '", itemID, "' AND ownerid = '", this.userID, "' AND roomid = '0'" }))).Sprite == decorType) { string decorVal = dbClient.getString("SELECT var FROM furniture WHERE id = '" + itemID + "'"); this.Room.sendData("@n" + decorType + "/" + decorVal); dbClient.runQuery(string.Concat(new object[] { "UPDATE rooms SET ", decorType, " = '", decorVal, "' WHERE id = '", this._roomID, "' LIMIT 1" })); dbClient.runQuery("DELETE FROM furniture WHERE id = '" + itemID + "' LIMIT 1"); } } } return; } return; case "AZ": if (((this._hasRights && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { if (int.TryParse(currentPacket.Split(new char[] { ' ' })[0].Substring(2), out itemID)) { using (dbClient = Eucalypt.dbManager.GetClient()) { templateID = dbClient.getInt(string.Concat(new object[] { "SELECT tid FROM furniture WHERE id = '", itemID, "' AND ownerid = '", this.userID, "' AND roomid = '0'" })); } if (templateID != 0) { if (catalogueManager.getTemplate(templateID).typeID == 0) { string _INPUTPOS = currentPacket.Substring(itemID.ToString().Length + 3); string _CHECKEDPOS = catalogueManager.wallPositionOK(_INPUTPOS); if (_CHECKEDPOS == _INPUTPOS) { int VarValue = 0; using (dbClient = Eucalypt.dbManager.GetClient()) { string Var = dbClient.getString("SELECT var FROM furniture WHERE id = '" + itemID + "'"); int.TryParse(Var, out VarValue); if (stringManager.getStringPart(catalogueManager.getTemplate(templateID).Sprite, 0, 7) == "post.it") { if (VarValue > 1) { dbClient.runQuery("UPDATE furniture SET var = var - 1 WHERE id = '" + itemID + "' LIMIT 1"); } else { dbClient.runQuery("DELETE FROM furniture WHERE id = '" + itemID + "' LIMIT 1"); } dbClient.runQuery(string.Concat(new object[] { "INSERT INTO furniture(tid,ownerid) VALUES ('", templateID, "','", this.userID, "')" })); itemID = catalogueManager.lastItemID; dbClient.runQuery("INSERT INTO furniture_stickies(id) VALUES ('" + itemID + "')"); Var = "FFFF33"; dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", Var, "' WHERE id = '", itemID, "' LIMIT 1" })); } else if (stringManager.getStringPart(catalogueManager.getTemplate(templateID).Sprite, 0, 10) == "roomdimmer") { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture_moodlight SET roomid = '", this._roomID, "' WHERE id = '", itemID, "' LIMIT 1" })); } this.Room.wallItemManager.addItem(itemID, templateID, _CHECKEDPOS, Var, true); } } } else { locDetails = currentPacket.Split(new char[] { ' ' }); X = int.Parse(locDetails[1]); Y = int.Parse(locDetails[2]); Z = byte.Parse(locDetails[3]); byte typeID = catalogueManager.getTemplate(templateID).typeID; this.Room.floorItemManager.placeItem(itemID, templateID, X, Y, typeID, Z); } } } return; } return; case "AC": if (((this._isOwner && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Split(new char[] { ' ' })[2]); if (this.Room.floorItemManager.containsItem(itemID)) { this.Room.floorItemManager.removeItem(itemID, this.userID); } else { if (!this.Room.wallItemManager.containsItem(itemID) || !(stringManager.getStringPart(this.Room.wallItemManager.getItem(itemID).Sprite, 0, 7) != "post.it")) { return; } this.Room.wallItemManager.removeItem(itemID, this.userID); } this.refreshHand("update"); return; } return; case "AI": if (((this._hasRights && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Split(new char[] { ' ' })[0].Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { locDetails = currentPacket.Split(new char[] { ' ' }); X = int.Parse(locDetails[1]); Y = int.Parse(locDetails[2]); Z = byte.Parse(locDetails[3]); this.Room.floorItemManager.relocateItem(itemID, X, Y, Z); } return; } return; case "CV": try { if ((!this._inPublicroom && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Substring(4, Encoding.decodeB64(currentPacket.Substring(2, 2)))); int toStatus = Encoding.decodeVL64(currentPacket.Substring(itemID.ToString().Length + 4)); this.Room.wallItemManager.toggleItemStatus(itemID, toStatus); } } catch { } return; case "AJ": try { int tester; itemID = int.Parse(currentPacket.Substring(4, Encoding.decodeB64(currentPacket.Substring(2, 2)))); string toStatus = currentPacket.Substring(itemID.ToString().Length + 6); if (((((toStatus.ToLower() == "false") || (toStatus.ToLower() == "on")) || ((toStatus.ToLower() == "off") || (toStatus.ToLower() == "true"))) || (int.TryParse(toStatus, out tester) || (toStatus.ToLower() == "c"))) || (toStatus.ToLower() == "o")) { this.Room.floorItemManager.toggleItemStatus(itemID, toStatus, this._hasRights); } else { this.Disconnect(); } } catch { } return; case "AN": if (((this._isOwner && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { using (dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT itemid FROM furniture_presents WHERE id = '" + itemID + "'"); if (dCol.Table.Rows.Count > 0) { sb = new StringBuilder(); int lastItemID = 0; foreach (DataRow dRow in dCol.Table.Rows) { sb.Append(" OR id = '" + Convert.ToString(dRow["itemid"]) + "'"); lastItemID = Convert.ToInt32(dRow["itemid"]); } dbClient.runQuery("UPDATE furniture SET roomid = '-' WHERE " + sb.ToString().Substring(4)); this.Room.floorItemManager.removeItem(itemID, 0); catalogueManager.itemTemplate Template = catalogueManager.getTemplate(dbClient.getInt("SELECT tid FROM furniture WHERE id = '" + lastItemID + "'")); if (Template.typeID > 0) { this.sendData(string.Concat(new object[] { "BA", Template.Sprite, "\r", Template.Sprite, "\r", Template.Length, Convert.ToChar(30), Template.Width, Convert.ToChar(30), Template.Colour })); } else { this.sendData("BA" + Template.Sprite + "\r" + Template.Sprite + " " + Template.Colour + "\r"); } } dbClient.runQuery(string.Concat(new object[] { "DELETE FROM furniture_presents WHERE id = '", itemID, "' LIMIT ", dCol.Table.Rows.Count })); dbClient.runQuery("DELETE FROM furniture WHERE id = '" + itemID + "' LIMIT 1"); } this.refreshHand("last"); } return; } return; case "Bw": if (((this._isOwner && !this._inPublicroom) && (this.Room != null)) && (this.roomUser != null)) { itemID = Encoding.decodeVL64(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { Sprite = this.Room.floorItemManager.getItem(itemID).Sprite; if ((Sprite.Substring(0, 3).ToLower() == "cf_") || (Sprite.Substring(0, 4).ToLower() == "cfc_")) { int redeemValue = 0; try { redeemValue = int.Parse(Sprite.Split(new char[] { '_' })[1]); } catch { return; } this.Room.floorItemManager.removeItem(itemID, 0); this._Credits += redeemValue; this.sendData("@F" + this._Credits); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET credits = '", this._Credits, "' WHERE id = '", this.userID, "' LIMIT 1" })); } } } return; } return; case "AQ": if ((!this._inPublicroom && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { floorItem Teleporter = this.Room.floorItemManager.getItem(itemID); if ((((Teleporter.Z != 2) || (this.roomUser.X == (Teleporter.X + 1))) || (this.roomUser.Y == Teleporter.Y)) && (((Teleporter.Z != 4) || (this.roomUser.X == Teleporter.X)) || (this.roomUser.Y == (Teleporter.Y + 1)))) { this.roomUser.goalX = -1; this.Room.moveUser(this.roomUser, Teleporter.X, Teleporter.Y, true); } } return; } return; case @"@\": if ((!this._inPublicroom && (this.Room != null)) && (this.roomUser != null)) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { floorItem Teleporter1 = this.Room.floorItemManager.getItem(itemID); if ((this.roomUser.X == Teleporter1.X) || (this.roomUser.Y == Teleporter1.Y)) { int roomIDTeleporter2; int idTeleporter2; using (dbClient = Eucalypt.dbManager.GetClient()) { idTeleporter2 = dbClient.getInt("SELECT teleportid FROM furniture WHERE id = '" + itemID + "'"); roomIDTeleporter2 = dbClient.getInt("SELECT roomid FROM furniture WHERE id = '" + idTeleporter2 + "'"); } if (roomIDTeleporter2 > 0) { new TeleporterUsageSleep(this.useTeleporter).BeginInvoke(Teleporter1, idTeleporter2, roomIDTeleporter2, null, null); } } } return; } return; case "AM": if (((this.Room != null) && (this.roomUser != null)) && !this._inPublicroom) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { Item = this.Room.floorItemManager.getItem(itemID); Sprite = Item.Sprite; if (((Sprite == "edice") || (Sprite == "edicehc")) && ((Math.Abs((int) (this.roomUser.X - Item.X)) <= 1) && (Math.Abs((int) (this.roomUser.Y - Item.Y)) <= 1))) { Item.Var = "0"; this.Room.sendData(string.Concat(new object[] { "AZ", itemID, " ", itemID * 0x26 })); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE furniture SET var = '0' WHERE id = '" + itemID + "' LIMIT 1"); } } } return; } return; case "AL": if (((this._hasRights && (this.Room != null)) && (this.roomUser != null)) && !this._inPublicroom) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID)) { Item = this.Room.floorItemManager.getItem(itemID); Sprite = Item.Sprite; if (((Sprite == "edice") || (Sprite == "edicehc")) && ((Math.Abs((int) (this.roomUser.X - Item.X)) <= 1) && (Math.Abs((int) (this.roomUser.Y - Item.Y)) <= 1))) { this.Room.sendData("AZ" + itemID); rndNum = new Random(DateTime.Now.Millisecond).Next(1, 7); this.Room.sendData(string.Concat(new object[] { "AZ", itemID, " ", (itemID * 0x26) + rndNum }), 0x7d0); Item.Var = rndNum.ToString(); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", rndNum, "' WHERE id = '", itemID, "' LIMIT 1" })); } } } return; } return; case "Cw": if (((this._hasRights && (this.Room != null)) && (this.roomUser != null)) && !this._inPublicroom) { itemID = Encoding.decodeVL64(currentPacket.Substring(2)); if (this.Room.wallItemManager.containsItem(itemID)) { Item = this.Room.wallItemManager.getItem(itemID); if (Item.Sprite == "ads_lin_wh_c") { rndNum = new Random(DateTime.Now.Millisecond).Next(0, 10); this.Room.sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), "habbowheel", Convert.ToChar(9), " ", Item.wallPosition, Convert.ToChar(9), "-1" })); this.Room.sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), "habbowheel", Convert.ToChar(9), " ", Item.wallPosition, Convert.ToChar(9), rndNum }), 0x109a); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", rndNum, "' WHERE id = '", itemID, "' LIMIT 1" })); } } if (Item.Sprite == "habbowheel") { rndNum = new Random(DateTime.Now.Millisecond).Next(0, 10); this.Room.sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), "habbowheel", Convert.ToChar(9), " ", Item.wallPosition, Convert.ToChar(9), "-1" })); this.Room.sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), "habbowheel", Convert.ToChar(9), " ", Item.wallPosition, Convert.ToChar(9), rndNum }), 0x109a); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", rndNum, "' WHERE id = '", itemID, "' LIMIT 1" })); } } } return; } return; case "Dz": if (((this._hasRights && (this.Room != null)) && (this.roomUser != null)) && !this._inPublicroom) { itemID = Encoding.decodeVL64(currentPacket.Substring(2)); if (this.Room.floorItemManager.containsItem(itemID) && (this.Room.floorItemManager.getItem(itemID).Sprite == "val_randomizer")) { rndNum = new Random(DateTime.Now.Millisecond).Next(1, 5); this.Room.sendData(string.Concat(new object[] { "AX", itemID, Convert.ToChar(2), "123456789", Convert.ToChar(2) })); this.Room.sendData(string.Concat(new object[] { "AX", itemID, Convert.ToChar(2), rndNum, Convert.ToChar(2) }), 0x1388); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", rndNum, "' WHERE id = '", itemID, "' LIMIT 1" })); } } return; } return; case "AS": if (((this.Room != null) && (this.roomUser != null)) && !this._inPublicroom) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.wallItemManager.containsItem(itemID)) { using (dbClient = Eucalypt.dbManager.GetClient()) { Message = dbClient.getString("SELECT text FROM furniture_stickies WHERE id = '" + itemID + "'"); } this.sendData(string.Concat(new object[] { "@p", itemID, Convert.ToChar(9), this.Room.wallItemManager.getItem(itemID).Var, " ", Message })); } return; } return; case "AT": if (((this._hasRights && (this.Room != null)) && (this.roomUser != null)) && !this._inPublicroom) { itemID = int.Parse(currentPacket.Substring(2, currentPacket.IndexOf("/") - 2)); if (this.Room.wallItemManager.containsItem(itemID)) { Item = this.Room.wallItemManager.getItem(itemID); Sprite = Item.Sprite; switch (Sprite) { case "post.it": case "post.it.vd": { string Colour = "FFFFFF"; if (Sprite == "post.it") { Colour = currentPacket.Substring((2 + itemID.ToString().Length) + 1, 6); if ((((Colour != "FFFF33") && (Colour != "FF9CFF")) && (Colour != "9CFF9C")) && (Colour != "9CCEFF")) { return; } } Message = currentPacket.Substring((2 + itemID.ToString().Length) + 7); if (Message.Length <= 0x2ac) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("text", stringManager.filterSwearwords(Message).Replace("/r", Convert.ToChar(13).ToString())); if (Colour != Item.Var) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET var = '", Colour, "' WHERE id = '", itemID, "' LIMIT 1" })); } Item.Var = Colour; dbClient.runQuery("UPDATE furniture_stickies SET text = @text WHERE id = '" + itemID + "' LIMIT 1"); } this.Room.sendData(string.Concat(new object[] { "AU", itemID, Convert.ToChar(9), Sprite, Convert.ToChar(9), " ", Item.wallPosition, Convert.ToChar(9), Colour })); } break; } } } return; } return; case "AU": if (((this._isOwner && (this.Room != null)) && (this.roomUser != null)) && !this._inPublicroom) { itemID = int.Parse(currentPacket.Substring(2)); if (this.Room.wallItemManager.containsItem(itemID) && (stringManager.getStringPart(this.Room.wallItemManager.getItem(itemID).Sprite, 0, 7) == "post.it")) { this.Room.wallItemManager.removeItem(itemID, 0); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM furniture_stickies WHERE id = '" + itemID + "' LIMIT 1"); } } return; } return; case "Ct": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { this.sendData("EB" + soundMachineManager.getMachineSongList(this.Room.floorItemManager.soundMachineID)); } return; case "Cu": if ((this.Room != null) && (this.Room.floorItemManager.soundMachineID > 0)) { this.sendData("EC" + soundMachineManager.getMachinePlaylist(this.Room.floorItemManager.soundMachineID)); } return; case "C]": if ((this.Room != null) && (this.Room.floorItemManager.soundMachineID > 0)) { songID = Encoding.decodeVL64(currentPacket.Substring(2)); this.sendData("Dl" + soundMachineManager.getSong(songID)); } return; case "Cs": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { Amount = Encoding.decodeVL64(currentPacket.Substring(2)); if (Amount < 6) { currentPacket = currentPacket.Substring(Encoding.encodeVL64(Amount).Length + 2); using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("DELETE FROM soundmachine_playlists WHERE machineid = '" + this.Room.floorItemManager.soundMachineID + "'"); } sb = new StringBuilder(); for (i = 0; i < Amount; i++) { songID = Encoding.decodeVL64(currentPacket); sb.Append(string.Concat(new object[] { " ,('", this.Room.floorItemManager.soundMachineID, "','", songID, "','", i, "')" })); currentPacket = currentPacket.Substring(Encoding.encodeVL64(songID).Length); } if (sb.Length != 0) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("INSERT INTO soundmachine_playlists(machineid,songid,pos) VALUES " + sb.ToString().Substring(2)); } } this.Room.sendData("EC" + soundMachineManager.getMachinePlaylist(this.Room.floorItemManager.soundMachineID)); } } return; case "C~": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { songID = Encoding.decodeVL64(currentPacket.Substring(2)); result = false; using (dbClient = Eucalypt.dbManager.GetClient()) { result = dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM soundmachine_songs WHERE id = '", songID, "' AND userid = '", this.userID, "' AND machineid = '", this.Room.floorItemManager.soundMachineID, "'" })); } if ((this._Credits <= 0) || !result) { this.sendData("AD"); return; } using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT title, length FROM soundmachine_songs WHERE id = '" + songID + "'"); Status = string.Concat(new object[] { Encoding.encodeVL64(songID), this._Username, "\n", DateTime.Today.Day, "\n", DateTime.Today.Month, "\n", DateTime.Today.Year, "\n", Convert.ToString(dRow["length"]), "\n", Convert.ToString(dRow["title"]) }); dbClient.AddParamWithValue("tid", Config.Soundmachine_burnToDisk_diskTemplateID); dbClient.AddParamWithValue("ownerid", this.userID); dbClient.AddParamWithValue("var", Status); dbClient.runQuery("INSERT INTO furniture(tid,ownerid,var) VALUES (@tid,@ownerid,@var)"); dbClient.runQuery("UPDATE soundmachine_songs SET burnt = '1' WHERE id = '" + songID + "' LIMIT 1"); dbClient.runQuery("UPDATE users SET credits = credits - 1 WHERE id = '" + this.userID + "' LIMIT 1"); } this._Credits--; this.sendData("@F" + this._Credits); this.sendData("EB" + soundMachineManager.getMachineSongList(this.Room.floorItemManager.soundMachineID)); this.refreshHand("last"); } return; case "Cx": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { songID = Encoding.decodeVL64(currentPacket.Substring(2)); result = false; using (dbClient = Eucalypt.dbManager.GetClient()) { result = dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM soundmachine_songs WHERE id = '", songID, "' AND machineid = '", this.Room.floorItemManager.soundMachineID, "'" })); } if (result) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery("UPDATE soundmachine_songs SET machineid = '0' WHERE id = '" + songID + "' AND burnt = '1'"); dbClient.runQuery("DELETE FROM soundmachine_songs WHERE id = '" + songID + "' AND burnt = '0' LIMIT 1"); dbClient.runQuery(string.Concat(new object[] { "DELETE FROM soundmachine_playlists WHERE machineid = '", this.Room.floorItemManager.soundMachineID, "' AND songid = '", songID, "'" })); } this.Room.sendData("EC" + soundMachineManager.getMachinePlaylist(this.Room.floorItemManager.soundMachineID)); } } return; case "Co": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { this.songEditor = new virtualSongEditor(this.Room.floorItemManager.soundMachineID, this.userID); this.songEditor.loadSoundsets(); this.sendData("Dm" + this.songEditor.getSoundsets()); this.sendData("Dn" + soundMachineManager.getHandSoundsets(this.userID)); } return; case "C[": if ((((this.songEditor != null) && this._isOwner) && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { int soundSetID = Encoding.decodeVL64(currentPacket.Substring(2)); slotID = Encoding.decodeVL64(currentPacket.Substring(Encoding.encodeVL64(soundSetID).Length + 2)); if (((slotID > 0) && (slotID < 5)) && this.songEditor.slotFree(slotID)) { this.songEditor.addSoundset(soundSetID, slotID); this.sendData("Dn" + soundMachineManager.getHandSoundsets(this.userID)); this.sendData("Dm" + this.songEditor.getSoundsets()); } } return; case @"C\": if ((((this.songEditor != null) && this._isOwner) && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { slotID = Encoding.decodeVL64(currentPacket.Substring(2)); if (!this.songEditor.slotFree(slotID)) { this.songEditor.removeSoundset(slotID); this.sendData("Dm" + this.songEditor.getSoundsets()); this.sendData("Dn" + soundMachineManager.getHandSoundsets(this.userID)); } } return; case "Cp": if ((((this.songEditor != null) && this._isOwner) && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { nameLength = Encoding.decodeB64(currentPacket.Substring(2, 2)); Title = currentPacket.Substring(4, nameLength); Data = currentPacket.Substring(nameLength + 6); Length = soundMachineManager.calculateSongLength(Data); if (Length != -1) { using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("userid", this.userID); dbClient.AddParamWithValue("machineid", this.Room.floorItemManager.soundMachineID); dbClient.AddParamWithValue("title", stringManager.filterSwearwords(Title)); dbClient.AddParamWithValue("length", Length); dbClient.AddParamWithValue("data", Data); dbClient.runQuery("INSERT INTO soundmachine_songs (userid,machineid,title,length,data) VALUES (@userid,@machineid,@title,@length,@data)"); } this.sendData("EB" + soundMachineManager.getMachineSongList(this.Room.floorItemManager.soundMachineID)); this.sendData(string.Concat(new object[] { "EK", Encoding.encodeVL64(this.Room.floorItemManager.soundMachineID), Title, Convert.ToChar(2) })); } } return; case "Cq": if ((this._isOwner && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { songID = Encoding.decodeVL64(currentPacket.Substring(2)); this.sendData("Dl" + soundMachineManager.getSong(songID)); this.songEditor = new virtualSongEditor(this.Room.floorItemManager.soundMachineID, this.userID); this.sendData("Dm" + this.songEditor.getSoundsets()); this.sendData("Dn" + soundMachineManager.getHandSoundsets(this.userID)); } return; case "Cr": if ((((this.songEditor != null) && this._isOwner) && (this.Room != null)) && (this.Room.floorItemManager.soundMachineID > 0)) { songID = Encoding.decodeVL64(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { if (dbClient.findsResult(string.Concat(new object[] { "SELECT id FROM soundmachine_songs WHERE id = '", songID, "' AND userid = '", this.userID, "' AND machineid = '", this.Room.floorItemManager.soundMachineID, "'" }))) { idLength = Encoding.encodeVL64(songID).Length; nameLength = Encoding.decodeB64(currentPacket.Substring(idLength + 2, 2)); Title = currentPacket.Substring(idLength + 4, nameLength); Data = currentPacket.Substring((idLength + nameLength) + 6); Length = soundMachineManager.calculateSongLength(Data); if (Length != -1) { dbClient.AddParamWithValue("id", songID); dbClient.AddParamWithValue("title", stringManager.filterSwearwords(Title)); dbClient.AddParamWithValue("length", Length); dbClient.AddParamWithValue("data", Data); dbClient.runQuery("UPDATE soundmachine_songs SET title = @title,data = @data,length = @length WHERE id = @id LIMIT 1"); this.sendData("ES"); this.sendData("EB" + soundMachineManager.getMachineSongList(this.Room.floorItemManager.soundMachineID)); this.Room.sendData("EC" + soundMachineManager.getMachinePlaylist(this.Room.floorItemManager.soundMachineID)); } } } } return; case "AG": if (((this.Room != null) || (this.roomUser != null)) || (this._tradePartnerRoomUID == -1)) { if (Config.enableTrading) { int partnerUID = int.Parse(currentPacket.Substring(2)); if (this.Room.containsUser(partnerUID)) { Partner = this.Room.getUser(partnerUID); if (!Partner.statusManager.containsStatus("trd")) { this._tradePartnerRoomUID = partnerUID; this.statusManager.addStatus("trd", ""); this.roomUser.Refresh(); Partner._tradePartnerRoomUID = this.roomUser.roomUID; Partner.statusManager.addStatus("trd", ""); Partner.roomUser.Refresh(); this.refreshTradeBoxes(); Partner.refreshTradeBoxes(); } } return; } this.sendData("BK" + stringManager.getString("trading_disabled")); } return; case "AH": if ((((this.Room != null) && (this.roomUser != null)) && (this._tradePartnerRoomUID != -1)) && this.Room.containsUser(this._tradePartnerRoomUID)) { itemID = int.Parse(currentPacket.Substring(2)); using (dbClient = Eucalypt.dbManager.GetClient()) { templateID = dbClient.getInt(string.Concat(new object[] { "SELECT tid FROM furniture WHERE id = '", itemID, "' AND ownerid = '", this.userID, "' AND roomid = '0'" })); } if (templateID != 0) { this._tradeItems[this._tradeItemCount] = itemID; this._tradeItemCount++; Partner = this.Room.getUser(this._tradePartnerRoomUID); this._tradeAccept = false; Partner._tradeAccept = false; this.refreshTradeBoxes(); Partner.refreshTradeBoxes(); } } return; case "AD": if ((((this.Room != null) && (this.roomUser != null)) && (this._tradePartnerRoomUID != -1)) && this.Room.containsUser(this._tradePartnerRoomUID)) { Partner = this.Room.getUser(this._tradePartnerRoomUID); this._tradeAccept = false; Partner._tradeAccept = false; this.refreshTradeBoxes(); Partner.refreshTradeBoxes(); } return; case "AE": if ((((this.Room != null) && (this.roomUser != null)) && (this._tradePartnerRoomUID != -1)) && this.Room.containsUser(this._tradePartnerRoomUID)) { Partner = this.Room.getUser(this._tradePartnerRoomUID); this._tradeAccept = true; this.refreshTradeBoxes(); Partner.refreshTradeBoxes(); if (!Partner._tradeAccept) { return; } sb = new StringBuilder("'a'='b'"); i = 0; while (i < this._tradeItemCount) { if (this._tradeItems[i] > 0) { sb.Append(" OR id = '" + this._tradeItems[i] + "'"); } i++; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET ownerid = '", Partner.userID, "',roomid = '0' WHERE", sb.ToString() })); } sb.Remove(7, sb.Length - 7); i = 0; while (i < Partner._tradeItemCount) { if (Partner._tradeItems[i] > 0) { sb.Append(" OR id = '" + Partner._tradeItems[i] + "'"); } i++; } using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.runQuery(string.Concat(new object[] { "UPDATE furniture SET ownerid = '", this.userID, "',roomid = '0' WHERE", sb.ToString() })); } this.abortTrade(); } return; case "AF": if ((((this.Room != null) && (this.roomUser != null)) && (this._tradePartnerRoomUID != -1)) && this.Room.containsUser(this._tradePartnerRoomUID)) { this.abortTrade(); this.refreshHand("update"); } return; case "B_": if ((this.Room != null) && (this.Room.Lobby != null)) { this.sendData("Ch" + this.Room.Lobby.gameList()); } return; case "B`": if ((((this.Room != null) && (this.roomUser != null)) && (this.Room.Lobby != null)) && (this.gamePlayer == null)) { int gameID = Encoding.decodeVL64(currentPacket.Substring(2)); if (this.Room.Lobby.Games.ContainsKey(gameID)) { this.gamePlayer = new Holo.Virtual.Rooms.Games.gamePlayer(this, this.roomUser.roomUID, (Game) this.Room.Lobby.Games[gameID]); this.gamePlayer.Game.Subviewers.Add(this.gamePlayer); this.sendData("Ci" + this.gamePlayer.Game.Sub); } } return; case "Bb": if ((((this.Room != null) && (this.roomUser != null)) && (this.Room.Lobby != null)) && (this.gamePlayer == null)) { if (this._Tickets <= 1) { this.sendData("ClJ"); return; } if (!this.Room.Lobby.validGamerank(this.roomUser.gamePoints)) { this.sendData("ClK"); return; } if (!this.Room.Lobby.isBattleBall) { this.sendData(string.Concat(new object[] { "CkRAsecondsUntilRestart", Convert.ToChar(2), "HIRGIHHfieldType", Convert.ToChar(2), "HKIIIISAnumTeams", Convert.ToChar(2), "HJJIIIPAgameLengthChoice", Convert.ToChar(2), "HJIIIIKname", Convert.ToChar(2), "IJ", Convert.ToChar(2), "HsecondsUntilStart", Convert.ToChar(2), "HIRBIHH" })); return; } this.sendData("Ck" + this.Room.Lobby.getCreateGameSettings()); } return; case "Bc": if ((((this.Room != null) && (this.roomUser != null)) && (this.Room.Lobby != null)) && (this.gamePlayer == null)) { if (this._Tickets <= 1) { this.sendData("ClJ"); return; } if (!this.Room.Lobby.validGamerank(this.roomUser.gamePoints)) { this.sendData("ClK"); return; } try { int mapID = -1; int teamAmount = -1; int[] Powerups = null; Name = ""; int keyAmount = Encoding.decodeVL64(currentPacket.Substring(2)); currentPacket = currentPacket.Substring(Encoding.encodeVL64(keyAmount).Length + 2); for (i = 0; i < keyAmount; i++) { int k; int valLen; j = Encoding.decodeB64(currentPacket.Substring(0, 2)); string Key = currentPacket.Substring(2, j); if (!(currentPacket.Substring(j + 2, 1) == "H")) { goto Label_C8D3; } int Value = Encoding.decodeVL64(currentPacket.Substring(j + 3)); str69 = Key; if (str69 != null) { if (!(str69 == "fieldType")) { if (str69 == "numTeams") { goto Label_C8AA; } } else { mapID = Value; } } goto Label_C8B0; Label_C8AA: teamAmount = Value; Label_C8B0: k = Encoding.encodeVL64(Value).Length; currentPacket = currentPacket.Substring((j + k) + 3); continue; Label_C8D3: valLen = Encoding.decodeB64(currentPacket.Substring(j + 3, 2)); string Value = currentPacket.Substring(j + 5, valLen); str69 = Key; if (str69 != null) { if (!(str69 == "allowedPowerups")) { if (str69 == "name") { goto Label_C996; } } else { string[] ps = Value.Split(new char[] { ',' }); Powerups = new int[ps.Length]; for (int p = 0; p < ps.Length; p++) { int P = int.Parse(ps[p]); if (!this.Room.Lobby.allowsPowerup(P)) { return; } Powerups[p] = P; } } } goto Label_C9A1; Label_C996: Name = stringManager.filterSwearwords(Value); Label_C9A1: currentPacket = currentPacket.Substring((j + valLen) + 5); } if (((mapID != -1) && (teamAmount != -1)) && (Name != "")) { this.gamePlayer = new Holo.Virtual.Rooms.Games.gamePlayer(this, this.roomUser.roomUID, null); this.Room.Lobby.createGame(this.gamePlayer, Name, mapID, teamAmount, Powerups); } } catch { } } return; case "Be": if ((((this.Room != null) && (this.Room.Lobby != null)) && (this.gamePlayer != null)) && (this.gamePlayer.Game.State == Game.gameState.Waiting)) { if (this._Tickets <= 1) { this.sendData("ClJ"); return; } if (!this.Room.Lobby.validGamerank(this.roomUser.gamePoints)) { this.sendData("ClK"); return; } j = Encoding.decodeVL64(currentPacket.Substring(2)); int teamID = Encoding.decodeVL64(currentPacket.Substring(Encoding.encodeVL64(j).Length + 2)); if ((teamID == this.gamePlayer.teamID) || !this.gamePlayer.Game.teamHasSpace(teamID)) { this.sendData("ClH"); return; } if (this.gamePlayer.teamID == -1) { this.gamePlayer.Game.Subviewers.Remove(this.gamePlayer); } this.gamePlayer.Game.movePlayer(this.gamePlayer, this.gamePlayer.teamID, teamID); } return; case "Bg": this.leaveGame(); return; case "Bh": if ((((this.Room != null) && (this.Room.Lobby != null)) && ((this.gamePlayer != null) && (this.gamePlayer.Game != null))) && (this.gamePlayer == this.gamePlayer.Game.Owner)) { int roomUID = Encoding.decodeVL64(currentPacket.Substring(2)); for (i = 0; i < this.gamePlayer.Game.Teams.Length; i++) { foreach (Holo.Virtual.Rooms.Games.gamePlayer Member in this.gamePlayer.Game.Teams[i]) { if (Member.roomUID == roomUID) { Member.sendData("ClRA"); this.gamePlayer.Game.movePlayer(Member, i, -1); return; } } } } return; case "Bj": using (dbClient = Eucalypt.dbManager.GetClient()) { int num95 = dbClient.getInt("SELECT ACH_GamePlayed FROM users WHERE id = '" + this.userID + "'") + 1; dbClient.runQuery(string.Concat(new object[] { "UPDATE users SET ACH_GamePlayed = '", num95, "' WHERE id = '", this.userID, "' LIMIT 1" })); if ((num95 <= 0x1b7) && (num95 > 0x1d)) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed10'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed10' WHERE badgeid = 'ACH_GamePlayed9' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed10\x0002\x0002"); } } else if (num95 > 0x167) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed9'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed9' WHERE badgeid = 'ACH_GamePlayed8' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed9\x0002\x0002"); } } else if (num95 > 0x117) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed8'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed8' WHERE badgeid = 'ACH_GamePlayed7' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed8\x0002\x0002"); } } else if (num95 > 0xc7) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed7'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed7' WHERE badgeid = 'ACH_GamePlayed6' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed7\x0002\x0002"); } } else if (num95 > 0x9f) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed6'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed6' WHERE badgeid = 'ACH_GamePlayed5' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed6\x0002\x0002"); } } else if (num95 > 0x63) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed5'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed5' WHERE badgeid = 'ACH_GamePlayed4' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed5\x0002\x0002"); } } else if (num95 > 0x31) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed4'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed4' WHERE badgeid = 'ACH_GamePlayed3' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed4\x0002\x0002"); } } else if (num95 > 0x13) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed3'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed3' WHERE badgeid = 'ACH_GamePlayed2' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed3\x0002\x0002"); } } else if (num95 > 4) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed2'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_GamePlayed2' WHERE badgeid = 'ACH_GamePlayed1' AND userid = '" + this.userID + "'"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed2\x0002\x0002"); } } else if (!((num95 <= 1) || dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_GamePlayed1'"))) { dbClient.runQuery("INSERT INTO users_badges (userid, badgeid, iscurrent) VALUES ('" + this.userID + "', 'ACH_GamePlayed1', '0')"); this.refreshBadges(); this.sendData("FuQDIACH_GamePlayed1\x0002\x0002"); } } if ((((this.Room != null) && (this.Room.Lobby != null)) && (this.gamePlayer != null)) && (this.gamePlayer == this.gamePlayer.Game.Owner)) { this.gamePlayer.Game.startGame(); } return; case "Bk": if (((this.gamePlayer != null) && (this.gamePlayer.Game.State == Game.gameState.Started)) && (this.gamePlayer.teamID != -1)) { this.gamePlayer.goalX = Encoding.decodeVL64(currentPacket.Substring(3)); this.gamePlayer.goalY = Encoding.decodeVL64(currentPacket.Substring(Encoding.encodeVL64(this.gamePlayer.goalX).Length + 3)); } return; case "Bl": if (((this.gamePlayer != null) && (this.gamePlayer.Game.State == Game.gameState.Ended)) && (this.gamePlayer.teamID != -1)) { this.gamePlayer.Game.sendData("BK" + this._Username + " wants to replay!"); } return; case "EW": if (this._isOwner || this._hasRights) { roomManager.moodlight.setSettings(this._roomID, false, 0, 0, null, 0); return; } return; case "EU": if (this._isOwner || this._hasRights) { string settingData = roomManager.moodlight.getSettings(this._roomID); if (settingData != null) { this.sendData("Em" + settingData); } return; } return; case "EV": if (this._isOwner || this._hasRights) { int presetID = Encoding.decodeVL64(currentPacket.Substring(2, 1)); int bgState = Encoding.decodeVL64(currentPacket.Substring(3, 1)); string presetColour = currentPacket.Substring(6, Encoding.decodeB64(currentPacket.Substring(4, 2))); int presetDarkF = Encoding.decodeVL64(currentPacket.Substring(presetColour.Length + 6)); roomManager.moodlight.setSettings(this._roomID, true, presetID, bgState, presetColour, presetDarkF); } return; } } else { switch (currentPacket.Substring(0, 2)) { case "CD": this.pingOK = true; return; case "CN": this.sendData("DUIH"); return; case "CJ": this.sendData(string.Concat(new object[] { "DAQBHHIIKHJIPAHQAdd-MM-yyyy", Convert.ToChar(2), "SAHPBhttp://www.vista4life.com", Convert.ToChar(2), "QBH" })); return; case "_R": this.sendData(string.Concat(new object[] { "DAQBHIIIKHJIPAIQAdd-MM-yyyy", Convert.ToChar(2), "SAHPB/client", Convert.ToChar(2), "QBHIJWVVVSNKQCFUBJASMSLKUUOJCOLJQPNSBIRSVQBRXZQOTGPMNJIHLVJCRRULBLUO" })); return; case "CL": int myID; using (dbClient = Eucalypt.dbManager.GetClient()) { dbClient.AddParamWithValue("sso", currentPacket.Substring(4)); myID = dbClient.getInt("SELECT id FROM users WHERE ticket_sso = @sso"); } if (myID == 0) { this.Disconnect(); } else { string banReason = userManager.getBanReason(myID); if (banReason != "") { this.sendData("@c" + banReason); this.Disconnect(0x3e8); } else { this.userID = myID; using (dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT name,figure,sex,mission,rank,consolemission FROM users WHERE id = '" + this.userID + "'"); } this._Username = Convert.ToString(dRow[0]); this._Figure = Convert.ToString(dRow[1]); this._Sex = Convert.ToChar(dRow[2]); this._Mission = Convert.ToString(dRow[3]); this._Rank = Convert.ToByte(dRow[4]); this._consoleMission = Convert.ToString(dRow[5]); userManager.addUser(myID, this); this._isLoggedIn = true; this.sendData("Dj" + Encoding.encodeVL64(userManager.userCount) + Encoding.encodeVL64(roomManager.roomCount)); this.sendData(string.Concat(new object[] { "DAQBHIIIKHJIPAIQAdd-MM-yyyy", Convert.ToChar(2), "SAHPB/client", Convert.ToChar(2), "QBH" })); using (dbClient = Eucalypt.dbManager.GetClient()) { dCol = dbClient.getColumn("SELECT fuseright FROM users_fuserights WHERE userid = " + this.userID); } this._fuserights = new List(); foreach (DataRow dbRow in dCol.Table.Rows) { this._fuserights.Add(Convert.ToString(dbRow[0])); } this.sendData("@B" + rankManager.fuseRights(this._Rank, this.userID)); this.sendData("DbIH"); this.sendData("@C"); this.sendData("BKEleane Server Pooling Edition RC1"); if (Config.enableWelcomeMessage) { this.sendData("BK" + stringManager.getString("welcomemessage_text")); } } } return; } this.Disconnect(); } } private void refresh_cat() { catalogueManager.Init(true); } private void refresh_config() { Config.Init(true); } private void refresh_eco() { recyclerManager.Init(true); } private void refresh_filter() { stringManager.initFilter(true); } private void refresh_fuse() { rankManager.Init(true); } private void refresh_strings() { stringManager.Init("en", true); } internal void refreshAppearance(bool Reload, bool refreshSettings, bool refreshRoom) { if (Reload) { DataRow dRow; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT figure,sex,mission FROM users WHERE id = '" + this.userID + "'"); } this._Figure = Convert.ToString(dRow["figure"]); this._Sex = Convert.ToChar(dRow["sex"]); this._Mission = Convert.ToString(dRow["mission"]); } if (refreshSettings) { this.sendData(string.Concat(new object[] { "@E", this.connectionID, Convert.ToChar(2), this._Username, Convert.ToChar(2), this._Figure, Convert.ToChar(2), this._Sex, Convert.ToChar(2), this._Mission, Convert.ToChar(2), Convert.ToChar(2), "PCch=s02/53,51,44", Convert.ToChar(2), "HI" })); } if ((refreshRoom && (this.Room != null)) && (this.roomUser != null)) { this.Room.sendData(string.Concat(new object[] { "DJ", Encoding.encodeVL64(this.roomUser.roomUID), this._Figure, Convert.ToChar(2), this._Sex, Convert.ToChar(2), this._Mission, Convert.ToChar(2) })); } } internal void refreshBadges() { DataColumn col1; DataColumn col2; int i; this._Badges.Clear(); this._badgeSlotIDs.Clear(); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { col1 = dbClient.getColumn("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' ORDER BY slotid ASC"); col2 = dbClient.getColumn("SELECT slotid FROM users_badges WHERE userid = '" + this.userID + "' ORDER BY slotid ASC"); } string[] myBadges = dataHandling.dColToArray(col1); string[] myBadgeSlotIDs = dataHandling.dColToArray(col2); StringBuilder sbMessage = new StringBuilder(); sbMessage.Append(Encoding.encodeVL64(myBadges.Length)); for (i = 0; i < myBadges.Length; i++) { sbMessage.Append(myBadges[i]); sbMessage.Append(Convert.ToChar(2)); this._Badges.Add(myBadges[i]); } for (i = 0; i < myBadges.Length; i++) { if (Convert.ToInt32(myBadgeSlotIDs[i]) > 0) { sbMessage.Append(Encoding.encodeVL64(Convert.ToInt32(myBadgeSlotIDs[i]))); sbMessage.Append(myBadges[i]); sbMessage.Append(Convert.ToChar(2)); this._badgeSlotIDs.Add(Convert.ToInt32(myBadgeSlotIDs[i])); } else { this._badgeSlotIDs.Add(0); } } this.sendData("Ce" + sbMessage.ToString()); this.sendData(string.Concat(new object[] { "FtRPPAIACH_Login1", Convert.ToChar(2), "PAJACH_Login2", Convert.ToChar(2), "PAKACH_Login3", Convert.ToChar(2), "PAPAACH_Login4", Convert.ToChar(2), "PAQAACH_Login5", Convert.ToChar(2), "PBIACH_RoomEntry1", Convert.ToChar(2), "PBJACH_RoomEntry2", Convert.ToChar(2), "PBKACH_RoomEntry3", Convert.ToChar(2), "SBIACH_RegistrationDuration1", Convert.ToChar(2), "SBJACH_RegistrationDuration2", Convert.ToChar(2), "SBKACH_RegistrationDuration3", Convert.ToChar(2), "SBPAACH_RegistrationDuration4", Convert.ToChar(2), "SBQAACH_RegistrationDuration5", Convert.ToChar(2), "SBRAACH_RegistrationDuration6", Convert.ToChar(2), "SBSAACH_RegistrationDuration7", Convert.ToChar(2), "SBPBACH_RegistrationDuration8", Convert.ToChar(2), "SBQBACH_RegistrationDuration9", Convert.ToChar(2), "SBRBACH_RegistrationDuration10", Convert.ToChar(2), "PDIACH_AvatarTags1", Convert.ToChar(2), "RDIACH_RespectGiven1", Convert.ToChar(2), "KIACH_EmailVerification1", Convert.ToChar(2), "SAIACH_Student1", Convert.ToChar(2), "PCIHC1", Convert.ToChar(2), "PCJHC2", Convert.ToChar(2), "PCKHC3", Convert.ToChar(2), "PCPAHC4", Convert.ToChar(2), "PCQAHC5", Convert.ToChar(2), "QDIACH_RespectEarned1", Convert.ToChar(2), "QDJACH_RespectEarned2", Convert.ToChar(2), "QDKACH_RespectEarned3", Convert.ToChar(2), "QDPAACH_RespectEarned4", Convert.ToChar(2), "QDQAACH_RespectEarned5", Convert.ToChar(2), "QDRAACH_RespectEarned6", Convert.ToChar(2), "QDSAACH_RespectEarned7", Convert.ToChar(2), "QDPBACH_RespectEarned8", Convert.ToChar(2), "QDQBACH_RespectEarned9", Convert.ToChar(2), "QDRBACH_RespectEarned10", Convert.ToChar(2), "JIACH_Graduate1", Convert.ToChar(2), "QCIACH_MGM1", Convert.ToChar(2), "QCJACH_MGM2", Convert.ToChar(2), "QCKACH_MGM3", Convert.ToChar(2), "QCPAACH_MGM4", Convert.ToChar(2), "QCQAACH_MGM5", Convert.ToChar(2), "QCRAACH_MGM6", Convert.ToChar(2), "QCSAACH_MGM7", Convert.ToChar(2), "QCPBACH_MGM8", Convert.ToChar(2), "QCQBACH_MGM9", Convert.ToChar(2), "QCRBACH_MGM10", Convert.ToChar(2), "QBIACH_Motto1", Convert.ToChar(2), "RAIACH_AvatarLooks1", Convert.ToChar(2), "IIGLA", Convert.ToChar(2), "IJGLB", Convert.ToChar(2), "IKGLC", Convert.ToChar(2), "IPAGLD", Convert.ToChar(2), "IQAGLE", Convert.ToChar(2), "IRAGLF", Convert.ToChar(2), "ISAGLG", Convert.ToChar(2), "IPBGLH", Convert.ToChar(2), "IQBGLI", Convert.ToChar(2), "IRBGLJ", Convert.ToChar(2), "RBIACH_HappyHour1", Convert.ToChar(2), "QAIACH_GamePlayed1", Convert.ToChar(2), "QAJACH_GamePlayed2", Convert.ToChar(2), "QAKACH_GamePlayed3", Convert.ToChar(2), "QAPAACH_GamePlayed4", Convert.ToChar(2), "QAQAACH_GamePlayed5", Convert.ToChar(2) })); this.sendData("DtIH" + Convert.ToChar(1) + "FCH"); } internal void refreshClub() { DataRow dRow; int restingDays = 0; int passedMonths = 0; int restingMonths = 0; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dRow = dbClient.getRow("SELECT months_expired,months_left,date_monthstarted FROM users_club WHERE userid = '" + this.userID + "' LIMIT 1"); } if (dRow.Table.Columns.Count > 0) { passedMonths = Convert.ToInt32(dRow["months_expired"]); restingMonths = Convert.ToInt32(dRow["months_left"]) - 1; restingDays = ((int) DateTime.Parse(Convert.ToString(dRow["date_monthstarted"]), new CultureInfo("en-GB")).Subtract(DateTime.Now).TotalDays) + 0x20; this._clubMember = true; } this.sendData(string.Concat(new object[] { "@Gclub_habbo", Convert.ToChar(2), Encoding.encodeVL64(restingDays), Encoding.encodeVL64(passedMonths), Encoding.encodeVL64(restingMonths), "I" })); } internal void refreshGroupStatus() { DatabaseClient dbClient; using (dbClient = Eucalypt.dbManager.GetClient()) { this._groupID = dbClient.getInt("SELECT groupid FROM groups_memberships WHERE userid = '" + this.userID + "' AND is_current = '1'"); } if (this._groupID > 0) { using (dbClient = Eucalypt.dbManager.GetClient()) { this._groupMemberRank = dbClient.getInt(string.Concat(new object[] { "SELECT member_rank FROM groups_memberships WHERE userid = '", this.userID, "' AND groupID = '", this._groupID, "'" })); } } } internal void refreshHand(string Mode) { DataTable dTable; using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { dTable = dbClient.getTable("SELECT furniture.id,furniture.tid,furniture.var FROM users, furniture WHERE furniture.ownerid = users.id AND furniture.ownerid = '" + this.userID + "' AND furniture.roomid = '0' ORDER BY id ASC"); } StringBuilder Hand = new StringBuilder("BL"); int startID = 0; int stopID = dTable.Rows.Count; string str69 = Mode; if (str69 != null) { if (!(str69 == "next")) { if (str69 == "prev") { this._handPage--; goto Label_00D9; } if (str69 == "last") { this._handPage = (stopID - 1) / 9; goto Label_00D9; } if (str69 == "update") { goto Label_00D9; } } else { this._handPage++; goto Label_00D9; } } this._handPage = 0; Label_00D9: try { if (stopID <= 0) { goto Label_04E0; } Label_00EC: startID = this._handPage * 9; if (stopID > (startID + 9)) { stopID = startID + 9; } if ((startID > stopID) || (startID == stopID)) { this._handPage--; goto Label_00EC; } string Colour = ""; for (int f = startID; f < stopID; f++) { DataRow dRow = dTable.Rows[f]; catalogueManager.itemTemplate Template = catalogueManager.getTemplate(Convert.ToInt32(dRow["tid"])); char Recycleable = '1'; if (!Template.isRecycleable) { Recycleable = '0'; } if (Template.typeID == 0) { Colour = Template.Colour; if ((Template.Sprite == "post.it") || (Template.Sprite == "post.it.vd")) { Colour = Convert.ToString(dRow["var"]); } Hand.Append(string.Concat(new object[] { "SI", Convert.ToChar(30).ToString(), Convert.ToString(dRow["id"]), Convert.ToChar(30).ToString(), f, Convert.ToChar(30).ToString(), "I", Convert.ToChar(30).ToString(), Convert.ToString(dRow["id"]), Convert.ToChar(30).ToString(), Template.Sprite, Convert.ToChar(30).ToString(), Colour, Convert.ToChar(30).ToString(), Recycleable, "/" })); } else { Hand.Append(string.Concat(new object[] { "SI", Convert.ToChar(30).ToString(), Convert.ToString(dRow["id"]), Convert.ToChar(30).ToString(), f, Convert.ToChar(30).ToString(), "S", Convert.ToChar(30).ToString(), Convert.ToString(dRow["id"]), Convert.ToChar(30).ToString(), Template.Sprite, Convert.ToChar(30).ToString(), Template.Length, Convert.ToChar(30).ToString(), Template.Width, Convert.ToChar(30).ToString(), Convert.ToString(dRow["var"]), Convert.ToChar(30).ToString(), Template.Colour, Convert.ToChar(30).ToString(), Recycleable, Convert.ToChar(30).ToString(), Template.Sprite, Convert.ToChar(30).ToString(), "/" })); } } Label_04E0: Hand.Append("\r" + dTable.Rows.Count); this.sendData(Hand.ToString()); } catch { this.sendData("BL\r0"); } } internal void refreshTradeBoxes() { if (((this.Room != null) && this.Room.containsUser(this._tradePartnerRoomUID)) && (this.roomUser != null)) { virtualUser Partner = this.Room.getUser(this._tradePartnerRoomUID); StringBuilder tradeBoxes = new StringBuilder(string.Concat(new object[] { "Al", this._Username, Convert.ToChar(9), this._tradeAccept.ToString().ToLower(), Convert.ToChar(9) })); if (this._tradeItemCount > 0) { tradeBoxes.Append(catalogueManager.tradeItemList(this._tradeItems)); } tradeBoxes.Append(string.Concat(new object[] { Convert.ToChar(13), Partner._Username, Convert.ToChar(9), Partner._tradeAccept.ToString().ToLower(), Convert.ToChar(9) })); if (Partner._tradeItemCount > 0) { tradeBoxes.Append(catalogueManager.tradeItemList(Partner._tradeItems)); } this.sendData(tradeBoxes.ToString()); } } internal void refreshValueables(bool Credits, bool Tickets) { DatabaseClient dbClient; if (Credits) { using (dbClient = Eucalypt.dbManager.GetClient()) { this._Credits = dbClient.getInt("SELECT credits FROM users WHERE id = '" + this.userID + "' LIMIT 1"); } this.sendData("@F" + this._Credits); } if (Tickets) { using (dbClient = Eucalypt.dbManager.GetClient()) { this._Tickets = dbClient.getInt("SELECT tickets FROM users WHERE id = '" + this.userID + "' LIMIT 1"); } this.sendData("A|" + this._Tickets); } } private void roomRaiderWait() { Thread.Sleep(0x1d4c0); using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { int roomRaider = dbClient.getInt("SELECT roomvisits FROM users WHERE id = '" + this.userID + "'"); if ((roomRaider <= 30) && (roomRaider > 0x1d)) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_RoomEntry3'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_RoomEntry3' WHERE badgeid = 'ACH_RoomEntry2' AND userid = '" + this.userID + "'"); this.refreshBadges(); } } else if (roomRaider > 14) { if (!dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_RoomEntry2'")) { dbClient.runQuery("UPDATE users_badges SET badgeid = 'ACH_RoomEntry2' WHERE badgeid = 'ACH_RoomEntry1' AND userid = '" + this.userID + "'"); this.refreshBadges(); } } else if ((roomRaider > 4) && !dbClient.findsResult("SELECT badgeid FROM users_badges WHERE userid = '" + this.userID + "' AND badgeid = 'ACH_RoomEntry1'")) { dbClient.runQuery("INSERT INTO users_badges (userid, badgeid, iscurrent) VALUES ('" + this.userID + "', 'ACH_RoomEntry1', '0')"); this.refreshBadges(); } } } internal void sendData(string Data) { try { byte[] dataBytes = Encoding.Default.GetBytes(Data + Convert.ToChar(1)); this.connectionSocket.BeginSend(dataBytes, 0, dataBytes.Length, SocketFlags.None, new AsyncCallback(this.sentData), null); } catch { this.Disconnect(); } } private void sentData(IAsyncResult iAr) { try { this.connectionSocket.EndSend(iAr); } catch { this.Disconnect(); } } private void showBrb() { int iCount = 0; try { bool str69; goto Label_0084; Label_0006: this.refreshAppearance(false, false, true); this.Room.sendShout(this.roomUser, "\n\n\n I'm brb! .\n I'm already gone for: " + ((iCount / 2)).ToString() + " minutes.\n\n\n ik ben al 00 minuten weg "); iCount++; if (iCount > 30) { this.Room.sendShout(this.roomUser, "\n\n\n I'm gone for over 30 minutes now. "); Thread.CurrentThread.Abort(); this.brbLooper = null; } Thread.Sleep(0x7530); Label_0084: str69 = true; goto Label_0006; } catch { Thread.CurrentThread.Abort(); this.brbLooper = null; } } public static void Shutdown() { Out.WriteBlank(); Out.WriteLine("Holo TDbP EXTREME edition Emulator Shutdown!"); Console.ReadKey(true); Console.Beep(0x578, 0x3e8); Environment.Exit(2); } private void useTeleporter(floorItem Teleporter1, int idTeleporter2, int roomIDTeleporter2) { try { this.roomUser.walkLock = true; string Sprite = Teleporter1.Sprite; if (roomIDTeleporter2 == this._roomID) { floorItem Teleporter2 = this.Room.floorItemManager.getItem(idTeleporter2); Thread.Sleep(500); this.Room.sendData(string.Concat(new object[] { "AY", Teleporter1.ID, "/", this._Username, "/", Sprite })); this.Room.sendData(string.Concat(new object[] { @"A\", Teleporter2.ID, "/", this._Username, "/", Sprite })); this.roomUser.X = Teleporter2.X; this.roomUser.Y = Teleporter2.Y; this.roomUser.H = Teleporter2.H; this.roomUser.Z1 = Teleporter2.Z; this.roomUser.Z2 = Teleporter2.Z; this.roomUser.Refresh(); this.roomUser.walkLock = false; } else { this._teleporterID = idTeleporter2; this.sendData("@~" + Encoding.encodeVL64(idTeleporter2) + Encoding.encodeVL64(roomIDTeleporter2)); this.Room.sendData(string.Concat(new object[] { "AY", Teleporter1.ID, "/", this._Username, "/", Sprite })); } } catch { } } internal string connectionRemoteIP { get { return this.connectionSocket.RemoteEndPoint.ToString().Split(new char[] { ':' })[0]; } } private delegate void TeleporterUsageSleep(floorItem Teleporter1, int idTeleporter2, int roomIDTeleporter2); private delegate void timedDisconnector(int ms); } }