public WebSocketServerManager(string SocketURL) { FleckLog.Level = LogLevel.Error; allSockets = new List <IWebSocketConnection>(); socketbyName = new Dictionary <string, IWebSocketConnection>(); namebySocket = new Dictionary <IWebSocketConnection, string>(); server = new WebSocketServer(SocketURL); server.Start(socket => { socket.OnOpen = () => { if (allSockets.Contains(socket)) { allSockets.Remove(socket); } allSockets.Add(socket); }; socket.OnClose = () => { string name = ""; if (namebySocket.ContainsKey(socket)) { name = namebySocket[socket].ToString(); namebySocket.Remove(socket); } if (socketbyName.ContainsKey(name) && name != "") { socketbyName.Remove(name); } if (allSockets.Contains(socket)) { allSockets.Remove(socket); } if (name != "") { using (DatabaseClient dbClient = HabboIM.GetDatabase().GetClient()) { dbClient.AddParamWithValue("name", name); dbClient.ExecuteQuery("UPDATE users SET websocket='0' WHERE username=@name"); } } }; socket.OnMessage = message => { var msg = message; int pId = 0; if (!int.TryParse(msg.Split('|')[0], out pId)) { return; } if (msg.Length > 1024) { return; } if (msg.StartsWith("1|")) { using (DatabaseClient dbClient = HabboIM.GetDatabase().GetClient()) { dbClient.AddParamWithValue("auth", msg.Substring(2)); DataRow drow = null; drow = dbClient.ReadDataRow("SELECT username FROM users WHERE auth_ticket= @auth LIMIT 1"); if (drow == null) { socket.Close(); } else { if (socketbyName.ContainsKey((string)drow["username"])) {/* socketbyName[(string)drow["username"]].Close();*/ socketbyName.Remove((string)drow["username"]); } socketbyName.Add(drow["username"].ToString(), socket); if (namebySocket.ContainsKey(socket)) { namebySocket.Remove(socket); } namebySocket.Add(socket, drow["username"].ToString()); dbClient.AddParamWithValue("name", drow["username"].ToString()); } } } else { GameClient Session = HabboIM.GetGame().GetClientManager().GetClientByHabbo(GetNameByWebSocket(socket)); Room room = Session.GetHabbo().CurrentRoom; string[] args = msg.Split('|'); switch (int.Parse(args[0])) { case 88: { GameClient class4 = HabboIM.GetGame().GetClientManager().method_2(Convert.ToUInt32(args[1])); if (class4 == null) { Session.GetHabbo().Whisper("Diese Person ist bereits offline. Du kannst die Anfrage deshalb nicht mehr annehmen."); break; } if (class4.GetHabbo().sexanfrage != Session.GetHabbo().Id) { Session.GetHabbo().Whisper("Ooops, da lief wohl etwas schief."); break; } if (class4.GetHabbo().boyfriend != 0 || Session.GetHabbo().boyfriend != 0) { Session.GetHabbo().Whisper("Du bist noch mit wem zusammen."); break; } if (args[2] == "1") { class4.GetHabbo().lovepoints = 0; class4.GetHabbo().kissed = 0; class4.GetHabbo().lovedate = 0; class4.GetHabbo().hugged = 0; class4.GetHabbo().hugtime = 0; class4.GetHabbo().kisstime = 0; class4.GetHabbo().boyfriend = 0; Session.GetHabbo().lovepoints = 0; Session.GetHabbo().kissed = 0; Session.GetHabbo().lovedate = 0; Session.GetHabbo().hugged = 0; Session.GetHabbo().hugtime = 0; Session.GetHabbo().kisstime = 0; Session.GetHabbo().lovedate = HabboIM.GetUnixTimestamp(); class4.GetHabbo().lovedate = HabboIM.GetUnixTimestamp(); class4.GetHabbo().boyfriend = Convert.ToInt32(Session.GetHabbo().Id); Session.GetHabbo().boyfriend = Convert.ToInt32(class4.GetHabbo().Id); try { using (DatabaseClient dbClient = HabboIM.GetDatabase().GetClient()) { dbClient.ExecuteQuery(string.Concat(new object[] { "UPDATE users SET boyfriend = '", Session.GetHabbo().Id, "', love_date = '", class4.GetHabbo().lovedate, "' WHERE Id = '", class4.GetHabbo().Id, "' LIMIT 1;" })); dbClient.ExecuteQuery(string.Concat(new object[] { "UPDATE users SET boyfriend = '", class4.GetHabbo().Id, "', love_date = '", Session.GetHabbo().lovedate, "' WHERE Id = '", Session.GetHabbo().Id, "' LIMIT 1;" })); } HabboIM.GetWebSocketManager().getWebSocketByName(Session.GetHabbo().Username).Send("textosteron|Beziehung|Du bist jetzt in einer Beziehung mit " + class4.GetHabbo().Username + "."); HabboIM.GetWebSocketManager().getWebSocketByName(class4.GetHabbo().Username).Send("textosteron|Beziehung|Du bist jetzt in einer Beziehung mit " + Session.GetHabbo().Username + "."); } catch { } } if (args[2] == "2") { HabboIM.GetWebSocketManager().getWebSocketByName(Session.GetHabbo().Username).Send("textosteron|Beziehungsanfrage|Die Beziehungsanfrage wurde abgelehnt."); HabboIM.GetWebSocketManager().getWebSocketByName(class4.GetHabbo().Username).Send("textosteron|Beziehungsanfrage|Die Beziehungsanfrage wurde abgelehnt."); } class4.GetHabbo().sexanfrage = 0; Session.GetHabbo().sexanfrage = 0; break; } case 74: { try { using (DatabaseClient dbClient = HabboIM.GetDatabase().GetClient()) { dbClient.ExecuteQuery(string.Concat(new object[] { "UPDATE users SET lastkiss_time = '0', lasthug_time = '0', lovepoints = '0', kisses_bf = '0', hugs_bf = '0', boyfriend = '0' WHERE Id = '", Session.GetHabbo().Id, "' OR Id = '", Session.GetHabbo().boyfriend, "' LIMIT 2;" })); } Session.GetHabbo().lovepoints = 0; Session.GetHabbo().kissed = 0; Session.GetHabbo().lovedate = 0; Session.GetHabbo().hugged = 0; Session.GetHabbo().hugtime = 0; Session.GetHabbo().kisstime = 0; GameClient class4 = HabboIM.GetGame().GetClientManager().method_2(Convert.ToUInt32(Session.GetHabbo().boyfriend)); if (class4 != null) { class4.GetHabbo().lovepoints = 0; class4.GetHabbo().kissed = 0; class4.GetHabbo().lovedate = 0; class4.GetHabbo().hugged = 0; class4.GetHabbo().hugtime = 0; class4.GetHabbo().kisstime = 0; class4.GetHabbo().boyfriend = 0; HabboIM.GetWebSocketManager().getWebSocketByName(Session.GetHabbo().Username).Send("textosteron|Trennung|Du hast mit " + class4.GetHabbo().Username + " Schluss gemacht."); HabboIM.GetWebSocketManager().getWebSocketByName(class4.GetHabbo().Username).Send("textosteron|Trennung|" + Session.GetHabbo().Username + " hat mit dir Schluss gemacht."); } Session.GetHabbo().boyfriend = 0; if (class4 == null) { HabboIM.GetWebSocketManager().getWebSocketByName(Session.GetHabbo().Username).Send("textosteron|Trennung|Du hast Schluss gemacht."); } } catch (Exception x) { } break; } case 6: { try { room = HabboIM.GetGame().GetRoomManager().GetRoom(uint.Parse(args[1])); if (Session != null && room != null) { ServerMessage Message = new ServerMessage(286u); Message.AppendBoolean(room.IsPublic); Message.AppendUInt(room.Id); Session.SendMessage(Message); } } catch { } break; } case 9: { try { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, false)) { int ItemId = int.Parse(args[1]); double newZ = double.Parse(args[2]); RoomItem ri = Session.GetHabbo().CurrentRoom.method_28((uint)ItemId); if (ri != null && ri.GetBaseItem().InteractionType == "stackfield") { ri.setHeight(newZ); ri.method_8().method_80(ri); ServerMessage Message = new ServerMessage(94u); Message.AppendRawUInt(ri.uint_0); Message.AppendStringWithBreak(""); Message.AppendBoolean(false); Session.GetHabbo().CurrentRoom.SendMessage(Message, null); ServerMessage Message5_ = new ServerMessage(95u); ri.SerializeStackField(Message5_); Session.GetHabbo().CurrentRoom.SendMessage(Message5_, null); ServerMessage Message1_ = new ServerMessage(93u); ri.SerializeStackField(Message1_); Session.GetHabbo().CurrentRoom.SendMessage(Message1_, null); } } } catch { } break; } case 10: { try { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, false)) { uint itemid = uint.Parse(args[1]); int handitemId = int.Parse(args[2]); RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(itemid); if (ri != null && ri.GetBaseItem().InteractionType == "wf_cnd_has_handitem") { ri.string_2 = handitemId.ToString(); ri.UpdateState(true, false); } } } catch { } break; } case 12: { try { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, false)) { uint itemid = uint.Parse(args[1]); string team = args[2]; RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(itemid); if (ri != null && (ri.GetBaseItem().InteractionType == "wf_cnd_actor_in_team" || ri.GetBaseItem().InteractionType == "wf_cnd_not_in_team") && Session.GetHabbo().CurrentRoom.IsValidTeam(team)) { ri.string_2 = team; ri.UpdateState(true, false); } } } catch { } break; } case 14: { try { Session.GetHabbo().CurrentRoom.method_56(Session.GetHabbo().Username).CarryItem(int.Parse(args[1])); } catch { } break; } case 32: { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true)) { try { RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(uint.Parse(args[1])); if (ri != null && ri.GetBaseItem().InteractionType == "wf_act_yt") { string ytlink = args[2].Split('=')[1]; ri.string_2 = ytlink; ri.UpdateState(true, false); } } catch { } } break; } case 35: { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true)) { try { RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(uint.Parse(args[1])); if (ri != null && (ri.GetBaseItem().InteractionType == "wf_cnd_has_purse" || ri.GetBaseItem().InteractionType == "wf_cnd_hasnot_purse")) { string currency = Session.GetHabbo().CurrentRoom.IsValidCurrency(args[2]) ? args[2] : "credits"; int number = 1337; int.TryParse(args[3], out number); ri.string_2 = currency + ";" + number; ri.UpdateState(true, false); } } catch { } } break; } case 36: { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true)) { try { RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(uint.Parse(args[1])); if (ri != null && ri.GetBaseItem().InteractionType == "wf_act_img" && IsValidFile(args[2])) { ri.string_2 = args[2]; ri.UpdateState(true, false); } } catch { } } break; } case 93076201: { if (HabboIM.zufallsrare == false) { HabboIM.zufallsrare = true; uint item = uint.Parse(args[1]); uint user = uint.Parse(args[2]); uint id = uint.Parse(args[3]); uint geschenk = 169; var geschenkmsg = "!HabboIM Zufallsrare - Was hier wohl drin sein mag?"; uint amount = 1; using (DatabaseClient dbclient = HabboIM.GetDatabase().GetClient()) { dbclient.AddParamWithValue("spieler", uint.Parse(args[2])); dbclient.AddParamWithValue("raum", '0'); dbclient.AddParamWithValue("moebel", uint.Parse(args[1])); dbclient.AddParamWithValue("geschenk", geschenk); dbclient.AddParamWithValue("geschenkmsg", geschenkmsg); dbclient.AddParamWithValue("amount", amount); StringBuilder StringGetiditem = new StringBuilder(); DataTable Getiditem = dbclient.ReadDataTable("SELECT * FROM items ORDER BY RAND() LIMIT 1"); foreach (DataRow StaffRow in Getiditem.Rows) { uint num5 = HabboIM.GetGame().GetCatalog().method_14(); dbclient.AddParamWithValue("id", num5); Console.WriteLine(StaffRow["id"]); dbclient.ExecuteQuery(string.Concat(new object[] { "INSERT INTO items (Id,user_id,base_item,wall_pos) VALUES ('", (object)num5, "','", uint.Parse(args[2]), "','169','')" })); dbclient.ExecuteQuery(string.Concat(new object[] { "INSERT INTO items_extra_data (item_id,extra_data) VALUES ('", (object)num5, "','", "!HabboIM Zufallsrare - Was hier wohl drin sein mag?", "')" })); dbclient.ExecuteQuery(string.Concat(new object[] { "INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES ('", (object)num5, "','", uint.Parse(args[1]), "','1','')" })); /* * dbclient.ExecuteQuery("INSERT INTO items (id, user_id, room_id, base_item) VALUES ('" + (object)num5 + "', @spieler, @raum, @geschenk)"); * dbclient.ExecuteQuery("INSERT INTO items_extra_data (item_id, extra_data) VALUES ('" + (object)num5 + "', @geschenkmsg)"); * dbclient.ExecuteQuery("INSERT INTO user_presents (item_id, base_id, amount) VALUES ('" + (object)num5 + "', @moebel, @amount)");*/ } } //Staffchat Ausgabe ServerMessage Logging = new ServerMessage(134u); Logging.AppendUInt(0u); Logging.AppendString("INFO: Der Spieler " + args[4] + " hat eine Zufallsrarität erhalten!"); HabboIM.GetGame().GetClientManager().method_16(Logging, Logging); if (int.Parse(HabboIM.GetConfig().data["habboim.customdesign"]) == 1) { string rmessage = "rndrmsg"; HabboIM.GetWebSocketManager().SendMessageToEveryConnection(rmessage); HabboIM.GetGame().GetClientManager().method_WHISPER("Nächste Zufallsrare wird in " + HabboIM.nxt_rr + " Minuten verteilt!"); } else { HabboIM.GetGame().GetClientManager().method_WHISPER("Die Zufallsrare wurde soeben verteilt!"); HabboIM.GetGame().GetClientManager().method_WHISPER("Nächste Zufallsrare wird in " + HabboIM.nxt_rr + " Minuten verteilt!"); } GameClient gameClient = HabboIM.GetGame().GetClientManager().method_2(uint.Parse(args[2])); if (gameClient != null) { gameClient.SendNotification("Überprüfe dein Inventar, denn du hast eine Zufallsrarität erhalten!"); gameClient.GetHabbo().GetInventoryComponent().method_9(true); ++gameClient.GetHabbo().RandomRares; gameClient.GetHabbo().CheckRandomRares(); } return; } break; } case 51: { if (Session.GetHabbo().CurrentRoom.CheckRights(Session, true)) { try { RoomItem ri = Session.GetHabbo().CurrentRoom.method_28(uint.Parse(args[1])); if (ri != null && (ri.GetBaseItem().InteractionType == "wf_cnd_user_count_in" || ri.GetBaseItem().InteractionType == "wfc_cnd_not_user_count") && IsValidFile(args[2])) { int min = 1; int max = 50; int.TryParse(args[2], out min); int.TryParse(args[3], out max); ri.string_3 = min + ";" + max; ri.UpdateState(true, false); } } catch { } } break; } default: break; } } }; }); }