Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Text;
- using System.Collections.Generic;
- using Plus.Utilities;
- using Plus.HabboHotel.Rooms;
- using Plus.HabboHotel.GameClients;
- using Plus.HabboHotel.Rooms.Chat.Commands.User;
- using Plus.HabboHotel.Rooms.Chat.Commands.User.Fun;
- using Plus.HabboHotel.Rooms.Chat.Commands.Moderator;
- using Plus.HabboHotel.Rooms.Chat.Commands.Moderator.Fun;
- using Plus.HabboHotel.Rooms.Chat.Commands.Administrator;
- using Plus.Communication.Packets.Outgoing.Rooms.Chat;
- using Plus.Communication.Packets.Outgoing.Notifications;
- using Plus.Database.Interfaces;
- using Plus.HabboHotel.Items.Wired;
- using Plus.HabboHotel.Rooms.Chat.Commands.Events;
- namespace Plus.HabboHotel.Rooms.Chat.Commands
- {
- public class CommandManager
- {
- /// <summary>
- /// Command Prefix only applies to custom commands.
- /// </summary>
- private string _prefix = ":";
- /// <summary>
- /// Commands registered for use.
- /// </summary>
- private readonly Dictionary<string, IChatCommand> _commands;
- /// <summary>
- /// The default initializer for the CommandManager
- /// </summary>
- public CommandManager(string Prefix)
- {
- this._prefix = Prefix;
- this._commands = new Dictionary<string, IChatCommand>();
- this.RegisterVIP();
- this.RegisterUser();
- this.RegisterModerator();
- this.RegisterAdministrator();
- }
- /// <summary>
- /// Request the text to parse and check for commands that need to be executed.
- /// </summary>
- /// <param name="Session">Session calling this method.</param>
- /// <param name="Message">The message to parse.</param>
- /// <returns>True if parsed or false if not.</returns>
- public bool Parse(GameClient Session, string Message)
- {
- if (Session == null || Session.GetHabbo() == null || Session.GetHabbo().CurrentRoom == null)
- return false;
- if (!Message.StartsWith(_prefix))
- return false;
- if (Message == _prefix + "commands")
- {
- StringBuilder List = new StringBuilder();
- List.Append("These are the commands you have access to:\n");
- foreach (var CmdList in _commands.ToList())
- {
- if (!string.IsNullOrEmpty(CmdList.Value.PermissionRequired))
- {
- if (!Session.GetHabbo().GetPermissions().HasCommand(CmdList.Value.PermissionRequired))
- continue;
- }
- List.Append(":" + CmdList.Key + " " + CmdList.Value.Parameters + " - " + CmdList.Value.Description + "\n");
- }
- Session.SendMessage(new MOTDNotificationComposer(List.ToString()));
- return true;
- }
- Message = Message.Substring(1);
- string[] Split = Message.Split(' ');
- if (Split.Length == 0)
- return false;
- IChatCommand Cmd = null;
- if (_commands.TryGetValue(Split[0].ToLower(), out Cmd))
- {
- if (Session.GetHabbo().GetPermissions().HasRight("mod_tool"))
- this.LogCommand(Session.GetHabbo().Id, Message, Session.GetHabbo().MachineId);
- if (!string.IsNullOrEmpty(Cmd.PermissionRequired))
- {
- if (!Session.GetHabbo().GetPermissions().HasCommand(Cmd.PermissionRequired))
- return false;
- }
- Session.GetHabbo().IChatCommand = Cmd;
- Session.GetHabbo().CurrentRoom.GetWired().TriggerEvent(WiredBoxType.TriggerUserSaysCommand, Session.GetHabbo(), this);
- Cmd.Execute(Session, Session.GetHabbo().CurrentRoom, Split);
- return true;
- }
- return false;
- }
- /// <summary>
- /// Registers the VIP set of commands.
- /// </summary>
- private void RegisterVIP()
- {
- this.Register("spull", new SuperPullCommand());
- this.Register("follow", new FollowCommand());
- this.Register("flagme", new FlagMeCommand());
- }
- /// <summary>
- /// Registers the Events set of commands.
- /// </summary>
- /// <summary>
- /// Registers the default set of commands.
- /// </summary>
- private void RegisterUser()
- {
- this.Register("online", new OnlineCommand()); // D
- this.Register("info", new InfoCommand());
- this.Register("pickall", new PickAllCommand());
- this.Register("ejectall", new EjectAllCommand());
- this.Register("lay", new LayCommand()); // D
- this.Register("sit", new SitCommand()); // D
- this.Register("stand", new StandCommand()); // D
- this.Register("mutepets", new MutePetsCommand());
- this.Register("mutebots", new MuteBotsCommand());
- this.Register("mimic", new MimicCommand());
- this.Register("dance", new DanceCommand()); // D
- this.Register("push", new PushCommand()); // D
- this.Register("pull", new PullCommand()); // D
- this.Register("enable", new EnableCommand());
- this.Register("faceless", new FacelessCommand());
- this.Register("moonwalk", new MoonwalkCommand());
- this.Register("unload", new UnloadCommand());
- this.Register("regenmaps", new RegenMaps());
- this.Register("emptyitems", new EmptyItems());
- this.Register("setmax", new SetMaxCommand());
- this.Register("setspeed", new SetSpeedCommand());
- this.Register("disablediagonal", new DisableDiagonalCommand());
- this.Register("stats", new StatsCommand());
- this.Register("kickpets", new KickPetsCommand());
- this.Register("kickbots", new KickBotsCommand());
- this.Register("room", new RoomCommand());
- this.Register("dnd", new DNDCommand());
- this.Register("disablegifts", new DisableGiftsCommand());
- this.Register("convertcredits", new ConvertCreditsCommand());
- this.Register("disablewhispers", new DisableWhispersCommand());
- this.Register("disablemimic", new DisableMimicCommand()); ;
- this.Register("pet", new PetCommand());
- this.Register("spush", new SuperPushCommand());
- this.Register("superpush", new SuperPushCommand());
- this.Register("afk", new AfkCommand());
- this.Register("back", new BackCommand()); // D
- this.Register("bans", new BanCountCommand()); // D
- this.Register("chatalert", new ChatAlertCommand()); // D
- // Testing some commands
- this.Register("sellroom", new roomSellCommand());
- this.Register("buyroom", new roomBuyCommand());
- this.Register("declineoffer", new roomDeclineOffer());
- this.Register("acceptoffer", new roomAcceptOffer());
- this.Register("sex", new SexCommand());
- this.Register("smokeweed", new WeedCommand());
- this.Register("slapass", new SlapassCommand());
- this.Register("color", new ColorCommand());
- this.Register("hug", new HugCommand()); // D
- this.Register("kiss", new KissCommand()); // D
- this.Register("slap", new SlapCommand()); // D
- this.Register("badgewars", new badgeWarCommand()); // D
- this.Register("kickwars", new KickWarCommand()); // D
- this.Register("kp", new KickWarPlayerCommand()); // D
- this.Register("gt", new GiveTrustcommand()); // D
- this.Register("trusted", new TrustedCommand()); // D
- this.Register("21", new TwentyOneCommand()); // D
- this.Register("vakna", new WakeCommand()); // D
- this.Register("tb", new TakeBadgeCommand()); // D
- this.Register("wakeall", new WakeAllCommand()); // D
- this.Register("join", new JoinGame()); // D
- this.Register("youtube", new Youtube()); // D
- this.Register("marry", new RelationCommand());
- this.Register("rko", new RkoCommand());
- this.Register("jerkoff", new JerkOffCommand());
- this.Register("fartface", new FartFaceCommand());
- this.Register("highfive", new HighfiveCommand());
- this.Register("facepalm", new FacepalmCommand());
- this.Register("dropkick", new DropkickCommand());
- this.Register("cut", new CutCommand());
- this.Register("breakface", new BreakfaceCommand());
- // this.Register("roomsit", new RoomSitCommand());
- }
- /// <summary>
- /// Registers the moderator set of commands.
- /// </summary>
- private void RegisterModerator()
- {
- this.Register("ban", new BanCommand());
- this.Register("mip", new MIPCommand());
- this.Register("ipban", new IPBanCommand());
- this.Register("ui", new UserInfoCommand());
- this.Register("userinfo", new UserInfoCommand());
- this.Register("sa", new StaffAlertCommand());
- this.Register("unroommute", new RoomUnmuteCommand());
- this.Register("roommute", new RoomMuteCommand());
- this.Register("roombadge", new RoomBadgeCommand());
- this.Register("roomalert", new RoomAlertCommand());
- this.Register("roomkick", new RoomKickCommand());
- this.Register("mute", new MuteCommand());
- this.Register("smute", new MuteCommand());
- this.Register("unmute", new UnmuteCommand());
- this.Register("massbadge", new MassBadgeCommand());
- this.Register("massgive", new MassGiveCommand());
- this.Register("globalgive", new GlobalGiveCommand());
- this.Register("kick", new KickCommand());
- this.Register("skick", new KickCommand());
- this.Register("ha", new HotelAlertCommand());
- this.Register("hotelalert", new HotelAlertCommand());
- this.Register("hal", new HALCommand());
- this.Register("give", new GiveCommand());
- this.Register("givebadge", new GiveBadgeCommand());
- this.Register("dc", new DisconnectCommand());
- this.Register("kill", new DisconnectCommand());
- this.Register("disconnect", new DisconnectCommand());
- this.Register("alert", new AlertCommand());
- this.Register("tradeban", new TradeBanCommand());
- this.Register("teleport", new TeleportCommand());
- this.Register("summon", new SummonCommand());
- this.Register("override", new OverrideCommand());
- this.Register("massenable", new MassEnableCommand());
- this.Register("massdance", new MassDanceCommand());
- this.Register("freeze", new FreezeCommand());
- this.Register("unfreeze", new UnFreezeCommand());
- this.Register("fastwalk", new FastwalkCommand());
- this.Register("superfastwalk", new SuperFastwalkCommand());
- this.Register("coords", new CoordsCommand());
- this.Register("alleyesonme", new AllEyesOnMeCommand());
- this.Register("allaroundme", new AllAroundMeCommand());
- this.Register("forcesit", new ForceSitCommand());
- this.Register("ignorewhispers", new IgnoreWhispersCommand());
- this.Register("forced_effects", new DisableForcedFXCommand());
- this.Register("makesay", new MakeSayCommand());
- this.Register("flaguser", new FlagUserCommand());
- this.Register("eventha", new EventAlerCommand()); // D
- this.Register("dicealert", new DiceAlertCommand());
- this.Register("takebadgestaff", new TakeBadgeStaffCommand()); // D
- this.Register("logmein", new LogMeInCommand()); // D
- this.Register("sethomeroom", new HomeroomCommand()); // D
- this.Register("ss", new StaffSayCommand()); // D
- this.Register("cmdlog", new CommandLogCommand()); // D
- }
- /// <summary>
- /// Registers the administrator set of commands.
- /// </summary>
- private void RegisterAdministrator()
- {
- this.Register("bubble", new BubbleCommand());
- this.Register("update", new UpdateCommand());
- this.Register("deletegroup", new DeleteGroupCommand());
- this.Register("carry", new CarryCommand());
- this.Register("goto", new GOTOCommand());
- this.Register("shutdown", new ShutdownCommand());
- this.Register("restart", new RestartCommand());
- this.Register("prison", new PrisonCommand());
- this.Register("unprison", new UnPrisonCommand());
- this.Register("officer", new OfficerCommand());
- this.Register("makeofficer", new MakeOfficerCommand());
- }
- /// <summary>
- /// Registers a Chat Command.
- /// </summary>
- /// <param name="CommandText">Text to type for this command.</param>
- /// <param name="Command">The command to execute.</param>
- public void Register(string CommandText, IChatCommand Command)
- {
- this._commands.Add(CommandText, Command);
- }
- public static string MergeParams(string[] Params, int Start)
- {
- var Merged = new StringBuilder();
- for (int i = Start; i < Params.Length; i++)
- {
- if (i > Start)
- Merged.Append(" ");
- Merged.Append(Params[i]);
- }
- return Merged.ToString();
- }
- public void LogCommand(int UserId, string Data, string MachineId)
- {
- using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
- {
- dbClient.SetQuery("INSERT INTO `logs_client_staff` (`user_id`,`data_string`,`machine_id`, `timestamp`) VALUES (@UserId,@Data,@MachineId,@Timestamp)");
- dbClient.AddParameter("UserId", UserId);
- dbClient.AddParameter("Data", Data);
- dbClient.AddParameter("MachineId", MachineId);
- dbClient.AddParameter("Timestamp", PlusEnvironment.GetUnixTimestamp());
- dbClient.RunQuery();
- }
- }
- public bool TryGetCommand(string Command, out IChatCommand IChatCommand)
- {
- return this._commands.TryGetValue(Command, out IChatCommand);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement