using System; using System.Collections.Generic; using System.Text; using Uber.HabboHotel.Items; using Uber.HabboHotel.GameClients; using Uber.Messages; using Uber.HabboHotel.Rooms; namespace Uber.HabboHotel.Misc { class ChatCommandHandler { public static Boolean Parse(GameClient Session, string Input) { string[] Params = Input.Split(' '); string TargetUser = null; GameClient TargetClient = null; Room TargetRoom = null; RoomUser TargetRoomUser = null; try { switch (Params[0].ToLower()) { #region Debugging/Development case "update_inventory": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { Session.GetHabbo().GetInventoryComponent().UpdateItems(true); return true; } return false; case "update_bots": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { UberEnvironment.GetGame().GetBotManager().LoadBots(); return true; } return false; case "update_catalog": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { UberEnvironment.GetGame().GetCatalog().Initialize(); UberEnvironment.GetGame().GetClientManager().BroadcastMessage(new ServerMessage(441)); return true; } return false; case "idletime": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); TargetRoomUser.IdleTime = 600; return true; } return false; case "t": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (TargetRoom == null) { return false; } TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } Session.SendNotif("X: " + TargetRoomUser.X + " - Y: " + TargetRoomUser.Y + " - Z: " + TargetRoomUser.Z + " - Rot: " + TargetRoomUser.RotBody); return true; } return false; case "override": if (Session.GetHabbo().HasFuse("fuse_admin")) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (TargetRoom == null) { return false; } TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } if (TargetRoomUser.AllowOverride) { TargetRoomUser.AllowOverride = false; Session.SendNotif("Walking override disabled."); } else { TargetRoomUser.AllowOverride = true; Session.SendNotif("Walking override enabled."); } return true; } return false; case "refresh_publics": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { UberEnvironment.GetGame().GetNavigator().Initialize(); UberEnvironment.GetGame().GetRoomManager().LoadModels(); return true; } return false; case "unload": { if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { uint RoomId; if (uint.TryParse(Params[1], out RoomId)) { UberEnvironment.GetGame().GetRoomManager().RequestRoomUnload(RoomId); return true; } return false; } return false; } #endregion #region Staff Commands case "coins": case "credits": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { TargetClient = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Params[1]); if (TargetClient != null) { int creditsToAdd; if (int.TryParse(Params[2], out creditsToAdd)) { TargetClient.GetHabbo().Credits = TargetClient.GetHabbo().Credits + creditsToAdd; TargetClient.GetHabbo().UpdateCreditsBalance(true); TargetClient.SendNotif(Session.GetHabbo().Username + " has awarded you " + creditsToAdd.ToString() + " credits!"); Session.SendNotif("Credit balance updated successfully."); return true; } else { Session.SendNotif("Please send a valid amount of credits."); return false; } } else { Session.SendNotif("User could not be found."); return false; } } return false; case "pixels": if (Session.GetHabbo().Rank >= 4) { TargetClient = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Params[1]); if (TargetClient != null) { int creditsToAdd; if (int.TryParse(Params[2], out creditsToAdd)) { TargetClient.GetHabbo().ActivityPoints = TargetClient.GetHabbo().ActivityPoints + creditsToAdd; TargetClient.GetHabbo().UpdateActivityPointsBalance(true); TargetClient.SendNotif(Session.GetHabbo().Username + " has awarded you " + creditsToAdd.ToString() + " Pixels!"); Session.SendNotif("Pixels balance updated successfully."); return true; } else { Session.SendNotif("Please send a valid amount of pixels."); return false; } } else { Session.SendNotif("User could not be found."); return false; } } return false; case "whoson": case "whosonline": case "online": System.Data.DataTable onlineData = new System.Data.DataTable("online"); String message = "Users online:\r"; using (Uber.Storage.DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { onlineData = dbClient.ReadDataTable("SELECT username FROM users WHERE online = '1';"); } foreach (System.Data.DataRow user in onlineData.Rows) { message += user["username"] + "\r"; } Session.SendNotif(message); return true; case "handitem": case "food": case "eat": case "drink": if (Session.GetHabbo().HasFuse("fuse_admin")) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (TargetRoom == null) { return false; } TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } try { TargetRoomUser.CarryItem(int.Parse(Params[1])); } catch (Exception) { } return true; } return false; case "update_defs": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { UberEnvironment.GetGame().GetItemManager().LoadItems(); Session.SendNotif("Item defenitions reloaded successfully."); return true; } return false; case "ha": // Hotel Alert :ha if (Session.GetHabbo().HasFuse("fuse_admin")) { string Notice = Input.Substring(3); ServerMessage HotelAlert = new ServerMessage(139); HotelAlert.AppendStringWithBreak("Notice from Hotel Management:\r\n" + Notice + "\r\n-" + Session.GetHabbo().Username); UberEnvironment.GetGame().GetClientManager().BroadcastMessage(HotelAlert); return true; } return false; case "givebadge": if (Session.GetHabbo().HasFuse("fuse_sysadmin")) { //.GetBadgeComponent().GiveBadge("HC1", true); TargetClient = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Params[1]); if (TargetClient != null) { TargetClient.GetHabbo().GetBadgeComponent().GiveBadge(UberEnvironment.FilterInjectionChars(Params[2]), true); return true; } else { Session.SendNotif("User: " + Params[1] + " could not be found in the database.\rPlease try your request again."); return false; } } return false; #endregion #region General Commands case "pickall": TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (TargetRoom != null && TargetRoom.CheckRights(Session, true)) { List ToRemove = new List(); lock (TargetRoom.Items) { ToRemove.AddRange(TargetRoom.Items); } foreach (RoomItem Item in ToRemove) { TargetRoom.RemoveFurniture(Session, Item.Id); Session.GetHabbo().GetInventoryComponent().AddItem(Item.Id, Item.BaseItem, Item.ExtraData); } Session.GetHabbo().GetInventoryComponent().UpdateItems(true); return true; } return false; case "commands": String allowedCommands = "Your Commands:\r"; if (Session.GetHabbo().Rank >= 7) { allowedCommands += ":update_inventory\r" + ":update_bots\r" + ":update_catalog\r" + ":idletime - Lag?\r" + ":t - Debugging\r" + ":refresh_publics\r" + ":unload \r" + ":coins/:credits \r" + ":update_defs\r" + ":givebadge \r" + ":bustest - For teh lulz\r"; } if (Session.GetHabbo().Rank >= 6) { allowedCommands += ":override - Walking Override\r" + ":handitem/:food/:eat/:drink \r"+ ":ha \r"+ ":superban \r"+ ":roomkick \r"; } if (Session.GetHabbo().Rank >= 5) { allowedCommands += ":ban