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/VIP Commands case "moonwalk": { if (Session.GetHabbo().Rank > 1) { 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.MoonWalk) { TargetRoomUser.MoonWalk = false; Session.SendNotif("Your moonwalk has been disabled."); return true; } else { TargetRoomUser.MoonWalk = true; Session.SendNotif("Your moonwalk has been enabled."); return true; } } else { Session.SendNotif("You are not a VIP member. Only VIP members have access to this feature."); } return false; } case "push": { if (Session.GetHabbo().Rank > 1) { RoomUser TargetRoomUser1; TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); if (TargetRoom == null) { return false; } if (Params[1] == null) { Session.SendNotif("Type a user in."); return false; } TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Params[1]); if (TargetRoomUser == null) { Session.SendNotif("User: " + Params[1] + " is not in the room."); return false; } TargetRoomUser1 = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser1 == null) { return false; } if ((TargetRoomUser.X == TargetRoomUser1.X - 1) || (TargetRoomUser.X == TargetRoomUser1.X + 1) || (TargetRoomUser.Y == TargetRoomUser1.Y - 1) || (TargetRoomUser.Y == TargetRoomUser1.Y + 1)) { if (TargetRoomUser1.RotBody == 4) { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1); } if (TargetRoomUser1.RotBody == 0) { TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1); } if (TargetRoomUser1.RotBody == 6) { TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y); } if (TargetRoomUser1.RotBody == 2) { TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y); } if (TargetRoomUser1.RotBody == 3) { TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y); TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1); } if (TargetRoomUser1.RotBody == 1) { TargetRoomUser.MoveTo(TargetRoomUser.X + 1, TargetRoomUser.Y); TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1); } if (TargetRoomUser1.RotBody == 7) { TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y); TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y - 1); } if (TargetRoomUser1.RotBody == 5) { TargetRoomUser.MoveTo(TargetRoomUser.X - 1, TargetRoomUser.Y); TargetRoomUser.MoveTo(TargetRoomUser.X, TargetRoomUser.Y + 1); } //TargetRoomUser.UpdateNeeded = true; TargetRoomUser1.Chat(Session, "*" + Session.GetHabbo().Username + " pushes " + Params[1] + "*", false); } else { Session.SendNotif(Params[1] + " is not in your area."); } return true; } else { Session.SendNotif("You are not a VIP member. Only VIP members have access to this feature."); } return false; } case "hit": case "punch": { if (Session.GetHabbo().Rank > 1) { RoomUser TargetRoomUser1; TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { if (TargetRoom == null) { return false; } if (Params[1] == null) { Session.SendNotif("Type in a user to perform this action"); return false; } TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Params[1]); if (TargetRoomUser == null) { Session.SendNotif("User : " + Params[1] + " is not in the room!"); return false; } TargetRoomUser1 = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser1 == null) { return false; } TargetRoomUser1.Chat(Session, "*" + Session.GetHabbo().Username + " swings at " + Params[1] + " causing 20 damage*", false); } if (Params[1] == null) { Session.SendNotif(Params[1] + " Is not in your area "); } return true; } } return false; case "smoke": case "weed": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); TargetRoomUser.Chat(Session, "*Smokes some weed*", false); return true; } } } return false; case "drunk": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); TargetRoomUser.Chat(Session, "*Starts to drink & get drunk*", false); return true; } } } return false; case "rape": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } if (TargetRoom == null) { return false; } if (Params[1] == null) { Session.SendNotif("Please type in a user to perform this command/action"); } TargetRoomUser.Chat(Session, "*" + Session.GetHabbo().Username + " rapes " + Params[1] + "*", false); return true; } } } return false; case "911": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } if (TargetRoom == null) { return false; } else { string cfhMessage = Input.Substring(3); TargetRoomUser.Chat(Session, "*Calls 911 for help!*", false); } return true; } } } return false; case "kiss": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId); { TargetRoomUser = TargetRoom.GetRoomUserByHabbo(Session.GetHabbo().Id); if (TargetRoomUser == null) { return false; } if (Params[1] == null) { return false; } if (TargetRoom == null) { return false; } TargetRoomUser.Chat(Session, "*Kisses " + Params[1] + "*", false); return true; } } } return false; case "taxi": { if (Session.GetHabbo().Rank > 1) { TargetRoom = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(Params[1]).GetHabbo().CurrentRoom; if (TargetRoom == null) { return false; } TargetUser = Params[1]; TargetClient = UberEnvironment.GetGame().GetClientManager().GetClientByHabbo(TargetUser); if (Session.GetHabbo().CurrentRoomId != TargetClient.GetHabbo().CurrentRoomId) { Session.SendNotif("You have taxied to " + Params[1] + ""); } TargetClient.SendNotif(Session.GetHabbo().Username + "Taxied to you"); Session.GetMessageHandler().PrepareRoomForUser(TargetClient.GetHabbo().CurrentRoomId, ""); } else { Session.SendNotif("This user is in the same room as you"); } return true; } case "coords": 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; 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