Exemple #1
0
        public void OnRemoteAdminCommand(ref RACommandEvent ev)
        {
            string[] query = ev.Command.Split(' ');
            switch (query[0].ToLower())
            {
            case "addspeaker":
                bool contains = false;
                foreach (var speak in speakers)
                {
                    if (speak.id == int.Parse(query[1]))
                    {
                        contains  = true;
                        speak.x   = float.Parse(query[2]);
                        speak.y   = float.Parse(query[3]);
                        speak.z   = float.Parse(query[4]);
                        speak.url = query[5];
                        break;
                    }
                }
                if (!contains)
                {
                    speakers.Add(new Speaker()
                    {
                        id  = int.Parse(query[1]),
                        x   = float.Parse(query[2]),
                        y   = float.Parse(query[3]),
                        z   = float.Parse(query[4]),
                        url = query[5]
                    });
                }
                foreach (var speak in speakers)
                {
                    NetDataWriter writer = new NetDataWriter();
                    writer.Put(1);
                    writer.Put(speak.id);
                    writer.Put(speak.x);
                    writer.Put(speak.y);
                    writer.Put(speak.z);
                    writer.Put(speak.url);
                    server.SendToAll(writer, DeliveryMethod.ReliableOrdered);
                }
                break;

            case "removespeaker":
                foreach (var speak in speakers)
                {
                    if (speak.id == int.Parse(query[1]))
                    {
                        NetDataWriter writer = new NetDataWriter();
                        writer.Put(2);
                        writer.Put(speak.id);
                        server.SendToAll(writer, DeliveryMethod.ReliableOrdered);
                        break;
                    }
                }
                break;
            }
        }
Exemple #2
0
 public bool checkPermission(RACommandEvent ev, ReferenceHub sender, string perm)
 {
     if (!sender.CheckPermission("lights.*") || !sender.CheckPermission("lights."))
     {
         ev.Sender.RAMessage(plugin.AccessDenied);
         return(false);
     }
     return(true);
 }
Exemple #3
0
 public void OnRACommand(ref RACommandEvent ev)
 {
     if(ev.Command.ToUpper() == "RECONNECTRS")
     {
         ev.Allow = false;
         PlayerManager.localPlayer.GetComponent<PlayerStats>()?.Roundrestart();
         Timing.RunCoroutine(this._Quit(), Segment.Update);
         ev.Sender.RaReply("Exiled2Multiadmin#RECONNECTRS...", true,true,string.Empty);
     }
 }
 public void OnRACommand(ref RACommandEvent ev)
 {
     if (!ev.Command.Split(' ')[0].Equals("VS_RELOAD", StringComparison.InvariantCultureIgnoreCase))
     {
         return;
     }
     ev.Allow = false;
     Setup.ReloadConfig();
     Setup.LoadData();
     ev.Sender.RAMessage("Reloaded VPNShield.");
     Log.Info("Reloaded VPNShield.");
 }
 internal void RACmd(ref RACommandEvent ev)
 {
     string[] args = ev.Command.Split(' ');
     if (args[0].ToLower().StartsWith("mute"))
     {
         foreach (string str in args[1].Split('.'))
         {
             ReferenceHub hub = Player.GetPlayer(int.Parse(str));
             notActualMutedPlayers.Remove(hub.GetUserId());
         }
     }
 }
Exemple #6
0
 public void CommandHandler(ref RACommandEvent ev)
 {
     if (ev.Command.ToUpper().StartsWith("B914"))
     {
         var args = ev.Command.Split(new char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
         args = args.Select(arg => arg.ToUpper()).ToArray();
         if (args[0] == "B914_DUMPRECIPES" || (args.Length == 2 && args[1] == "DUMPRECIPES"))
         {
             ev.Allow = false;
             File.WriteAllBytes(Path.Combine(PluginManager.ExiledDirectory, "Better914Recipes-default.json"), Utf8Json.JsonSerializer.Serialize(Plugin.CreateDefaultList()));
             ev.Sender.RaReply("Default recipes file dumpedsuccessfully.", true, false, "");
         }
     }
 }
Exemple #7
0
 public void OnCommand(ref RACommandEvent ev)
 {
     try {
         if (ev.Command.Contains("REQUEST_DATA PLAYER_LIST SILENT"))
         {
             return;
         }
         string[]     args   = ev.Command.ToLower().Split(' ');
         ReferenceHub sender = ev.Sender.SenderId == "SERVER CONSOLE" || ev.Sender.SenderId == "GAME CONSOLE" ? Player.GetPlayer(PlayerManager.localPlayer) : Player.GetPlayer(ev.Sender.SenderId);
         if (args[0] == "zdb")
         {
             ev.Allow = false;
             if (!sender.CheckPermission("command"))
             {
                 ev.Sender.RAMessage("<color=red>Access denied.</color>");
                 return;
             }
             if (args.Length > 1)
             {
                 if (args[1] == "toggle")
                 {
                     plugin.IsEnabled = !plugin.IsEnabled;
                     if (plugin.IsEnabled)
                     {
                         plugin.Register();
                     }
                     else
                     {
                         plugin.Unregister();
                     }
                     Plugin.Config.SetString("zdb_toggle", plugin.IsEnabled.ToString());
                     plugin.ReloadConfig();
                     ev.Sender.RAMessage("zdb_toggle has now been set to: " + plugin.IsEnabled.ToString());
                     return;
                 }
                 else if (args[1] == "reload")
                 {
                     plugin.ReloadConfig();
                     ev.Sender.RAMessage("<color=green>Configuration values have been reloaded.</color>");
                     return;
                 }
             }
             ev.Sender.RAMessage("Try using \"zdb <toggle/reload>\"");
             return;
         }
         return;
     } catch (Exception e) {
         Log.Error("Command error: " + e.StackTrace);
     }
 }
Exemple #8
0
        public void Events_RemoteAdminCommandEvent(ref RACommandEvent ev)
        {
            if (ev.Command.StartsWith("NineThreeNineInfection"))
            {
                string[] args = ev.Command.Split(' ');

                if (args.Length <= 1)
                {
                    ev.Allow = false;
                    ev.Sender.RAMessage($"Gamemode is : {(_main.IsEnabled ? "<color=green>enabled</color>" : "<color=red>disabled</color>")}");
                    ev.Sender.RAMessage("NineThreeNineInfection <on | enable | off | disable>.");
                    return;
                }

                switch (args[1].ToLower())
                {
                case "enable":
                    ev.Allow        = false;
                    _main.IsEnabled = true;
                    ev.Sender.RAMessage("The gamemode has been <color=green>enabled</color>.");
                    break;

                case "on":
                    ev.Allow        = false;
                    _main.IsEnabled = true;
                    ev.Sender.RAMessage("The gamemode has been <color=green>enabled</color>.");
                    break;

                case "disable":
                    ev.Allow        = false;
                    _main.IsEnabled = false;
                    ev.Sender.RAMessage("The gamemode has been <color=red>disabled</color>.");
                    break;

                case "off":
                    ev.Allow        = false;
                    _main.IsEnabled = false;
                    ev.Sender.RAMessage("The gamemode has been <color=red>disabled</color>.");
                    break;
                }
            }
        }
Exemple #9
0
        void OnRACommand(ref RACommandEvent ev)
        {
            string[] args = ev.Command.ToUpper().Split(' ');

            if (args[0] != null)
            {
                switch (args[0])
                {
                case "LIGHTOFF":
                    if (args[1] != null)
                    {
                        float time = float.Parse(args[1]);

                        for (int i = 0; i < Rooms.Count; i++)
                        {
                            Rooms[i].EnableFlickering(time);
                        }
                    }
                    break;
                }
            }
        }
Exemple #10
0
        internal void RACommand(ref RACommandEvent ev)
        {
            // safety first
            if (string.IsNullOrWhiteSpace(ev.Command))
            {
                return;
            }

            string upperedCommand = ev.Command.ToUpperInvariant();

            if (!upperedCommand.StartsWith("STALK"))
            {
                return;
            }

            switch (upperedCommand)
            {
            case "STALK DISABLE":
                ev.Sender.RaReply($"Stalky106#Stalk {(StalkyCreatePortalPatch.ForceDisable ? "was already" : string.Empty)} disabled.",
                                  !StalkyCreatePortalPatch.ForceDisable, false, string.Empty);

                StalkyCreatePortalPatch.ForceDisable = true;
                break;

            case "STALK ENABLE":
                ev.Sender.RaReply($"Stalky106#Stalk {(!StalkyCreatePortalPatch.ForceDisable ? "was already" : string.Empty)} enabled.",
                                  StalkyCreatePortalPatch.ForceDisable, false, string.Empty);

                StalkyCreatePortalPatch.ForceDisable = false;
                break;

            default:
                ev.Sender.RaReply("Stalky106#Command unrecognized.", false, false, string.Empty);
                return;
            }
        }
Exemple #11
0
        public void OnRaCommand(ref RACommandEvent ev)
        {
            string[] args = ev.Command.Split(' ');

            switch (args[0].ToLower())
            {
            case "scputils_help":
            {
                ev.Allow = false;

                ev.Sender.RAMessage($"SCPUtils info:\n" +
                                    $"Avaible commands: scputils_help, scputils_player_info, scputils_player_list, scputils_player_reset_preferences, scputils_player_reset, scputils_set_color, scputils_set_name,  scputils_set_badge,  scputils_revoke_badge", true);
                break;
            }

            case "scputils_player_info":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 2)
                {
                    ev.Sender.RAMessage("Usage: scputils_player_info <player name/id>", false);
                    break;
                }

                if (IsAllowed(ev.Sender, "scputils.playerinfo"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    ev.Sender.RAMessage($"\n[{databasePlayer.Name} ({databasePlayer.Id}@{databasePlayer.Authentication})]\n\n" +
                                        $"Total SCP Suicides/Quits: [ {databasePlayer.ScpSuicideCount} ]\n" +
                                        $"Total SCP Suicides/Quits Kicks: [ {databasePlayer.TotalScpSuicideKicks} ]\n" +
                                        $"Total SCP Suicides/Quits Bans: [ {databasePlayer.TotalScpSuicideBans} ]\n" +
                                        $"Total Games played as SCP: [ {databasePlayer.TotalScpGamesPlayed} ]\n" +
                                        $"Total Suicides/Quits Percentage: [ {Math.Round(databasePlayer.SuicidePercentage, 2)}% ]\n" +
                                        $"First Join: [ {databasePlayer.FirstJoin} ]\n" +
                                        $"Last Seen: [ {databasePlayer.LastSeen} ]\n" +
                                        $"Custom Color: [ {databasePlayer.ColorPreference} ]\n" +
                                        $"Custom Name: [ {databasePlayer.CustomNickName} ]\n" +
                                        $"Temporarily Badge: [ {databasePlayer.BadgeName} ]\n" +
                                        $"Badge Expire: [ {databasePlayer.BadgeExpire} ]\n" +
                                        $"Hide Badge: [ {databasePlayer.HideBadge} ]");
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_player_list":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 2)
                {
                    ev.Sender.RAMessage("Usage: scputils_player_list <minimum quit percentage>", false);
                    break;
                }


                if (IsAllowed(ev.Sender, "scputils.playerlist"))
                {
                    var playerListString = "[Quits/Suicides Percentage]\n";

                    if (int.TryParse(args[1], out int minpercentage))
                    {
                        foreach (var databasePlayer in Database.LiteDatabase.GetCollection <Player>().Find(x => x.SuicidePercentage >= minpercentage))
                        {
                            playerListString += $"\n{databasePlayer.Name} ({databasePlayer.Id}@{databasePlayer.Authentication}) -[ {Math.Round(databasePlayer.SuicidePercentage, 2)}% ]";
                        }
                        if (playerListString == "[Quits/Suicides as SCP]\n")
                        {
                            ev.Sender.RAMessage("No results found!", false);
                        }
                        else
                        {
                            ev.Sender.RAMessage($"{playerListString}");
                        }
                    }
                    else
                    {
                        ev.Sender.RAMessage("Arg1 is not an integer, Comand usage example: scputils_player_list 50", false);
                        break;
                    }
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_player_reset":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 2)
                {
                    ev.Sender.RAMessage("Usage: scputils_player_reset <player name/id>", false);
                    break;
                }

                if (commandSender.CheckPermission("scputils.playerreset"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    databasePlayer.Reset();
                    Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                    ev.Sender.RAMessage("Success!", false);
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_player_reset_preferences":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 2)
                {
                    ev.Sender.RAMessage("Usage: scputils_player_reset_preferences <player name/id>", false);
                    break;
                }

                if (IsAllowed(ev.Sender, "scputils.playerresetpreferences"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    databasePlayer.ResetPreferences();
                    Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                    ev.Sender.RAMessage("Success!", false);
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_set_color":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 3)
                {
                    ev.Sender.RAMessage("Usage: scputils_set_color <player name/id> <color>", false);
                    break;
                }
                args[2] = args[2].ToLower().ToString();

                if (IsAllowed(ev.Sender, "scputils.playersetcolor"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    var target         = EXILED.Extensions.Player.GetPlayer(args[1]);
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    if (args[2] == "none")
                    {
                        databasePlayer.ColorPreference = "";
                        Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                        ev.Sender.RAMessage("Success, effects will take effect next round!", false);
                        break;
                    }
                    if (validColors.Contains(args[2]))
                    {
                        if (target != null)
                        {
                            target.serverRoles.SetColor(args[2]);
                        }
                        string color = args[2];
                        databasePlayer.ColorPreference = color;
                        Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                        ev.Sender.RAMessage("Success!", false);
                    }
                    else
                    {
                        ev.Sender.RAMessage("Invalid color!", false);
                    }
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_set_name":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 3)
                {
                    ev.Sender.RAMessage("Usage: scputils_set_name <player name/id> <nick>", false);
                    break;
                }


                if (IsAllowed(ev.Sender, "scputils.playersetname"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    var target         = EXILED.Extensions.Player.GetPlayer(args[1]);
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    if (args[2] == "none")
                    {
                        databasePlayer.CustomNickName = "";
                        Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                        ev.Sender.RAMessage("Success, changes will take effect next round!", false);
                        break;
                    }
                    string name = args[2];
                    databasePlayer.CustomNickName = name;
                    Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                    ev.Sender.RAMessage("Success, changes will take effect next round!", false);
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }



            case "scputils_set_badge":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 4)
                {
                    ev.Sender.RAMessage("Usage: scputils_set_badge <player name/id> <Badge Name> <Minutes>", false);
                    break;
                }

                if (IsAllowed(ev.Sender, "scputils.handlebadges"))
                {
                    var databasePlayer = args[1].GetDatabasePlayer();
                    var player         = EXILED.Extensions.Player.GetPlayer(args[1]);
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }
                    if (!ServerStatic.GetPermissionsHandler().GetAllGroups().ContainsKey(args[2]))
                    {
                        ev.Sender.RAMessage("Invalid role name!", false);
                        break;
                    }

                    else if (int.TryParse(args[3], out int duration))
                    {
                        string badgeName = args[2].ToString();
                        databasePlayer.BadgeName   = badgeName;
                        databasePlayer.BadgeExpire = DateTime.Now.AddMinutes(duration);
                        Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                        if (player)
                        {
                            EXILED.Extensions.Player.SetRank(player, ServerStatic.GetPermissionsHandler()._groups[args[2]]);
                        }
                        ev.Sender.RAMessage("Badge set!", false);
                    }
                    else
                    {
                        ev.Sender.RAMessage("Arg3 must be integer!", false);
                    }
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }

            case "scputils_revoke_badge":
            {
                ev.Allow = false;

                var commandSender = EXILED.Extensions.Player.GetPlayer(ev.Sender.Nickname);

                if (args.Length < 2)
                {
                    ev.Sender.RAMessage("Usage: scputils_revoke_badge <player name/id>", false);
                    break;
                }

                if (IsAllowed(ev.Sender, "scputils.handlebadges"))
                {
                    var player         = EXILED.Extensions.Player.GetPlayer(args[1]);
                    var databasePlayer = args[1].GetDatabasePlayer();
                    if (databasePlayer == null)
                    {
                        ev.Sender.RAMessage("Player not found on Database or Player is loading data!", false);
                        break;
                    }

                    databasePlayer.BadgeName   = "";
                    databasePlayer.BadgeExpire = DateTime.MinValue;
                    Database.LiteDatabase.GetCollection <Player>().Update(databasePlayer);
                    if (player)
                    {
                        EXILED.Extensions.Player.SetRank(player, null);
                    }
                    ev.Sender.RAMessage("Badge revoked!", false);
                }
                else
                {
                    ev.Sender.RAMessage("You need a higher administration level to use this command!", false);
                }
                break;
            }
            }
        }
Exemple #12
0
        public void OnCommand(ref RACommandEvent ev)
        {
            try {
                if (ev.Command.Contains("REQUEST_DATA PLAYER_LIST SILENT"))
                {
                    return;
                }
                string []    args   = ev.Command.Split(' ');
                ReferenceHub sender = ev.Sender.SenderId == "SERVER CONSOLE" || ev.Sender.SenderId == "GAME CONSOLE" ? Player.GetPlayer(PlayerManager.localPlayer) : Player.GetPlayer(ev.Sender.SenderId);
                if (args [0].ToLower() == "lights_reload")
                {
                    ev.Allow = false;
                    if (!checkPermission(ev, sender, "reload"))
                    {
                        ev.Sender.RAMessage(plugin.AccessDenied);
                        return;
                    }
                    plugin.reloadConfig();
                    ev.Sender.RAMessage("<color=red>Configuration variables reloaded.</color>");
                    return;
                }

                #region Command: Lights
                if (args [0].ToLower() == plugin.CmdName || args [0].ToLower() == plugin.CmdAlias)
                {
                    ev.Allow = false;
                    if (!checkPermission(ev, sender, "light"))
                    {
                        ev.Sender.RAMessage(plugin.AccessDenied);
                        return;
                    }
                    if (args.Length < 2)
                    {
                        ev.Sender.RAMessage(plugin.HelpOne.Replace("%cmd", args [0]));
                        ev.Sender.RAMessage(plugin.HelpTwo);
                        return;
                    }
                    else if (args.Length >= 2)
                    {
                        if (!args [1].All(char.IsDigit))
                        {
                            ev.Sender.RAMessage(plugin.HelpOne.Replace("%cmd", args [0]));
                            ev.Sender.RAMessage(plugin.HelpTwo);
                            return;
                        }
                        bool OnlyHCZ = false;
                        if (args.Length >= 3)
                        {
                            string [] _t = plugin.TrueArguments.Split(',');
                            if (_t.Contains(args[2].ToLower()))
                            {
                                OnlyHCZ = true;
                            }
                            else
                            {
                                ev.Sender.RAMessage(plugin.NotRecognized.Replace("%arg", args [2]));
                            }
                        }
                        ev.Sender.RAMessage(plugin.Success.Replace("%s", args [1]).Replace("%value", OnlyHCZ + ""));
                        if (plugin.DoAnnouncement)
                        {
                            foreach (ReferenceHub h in Player.GetHubs())
                            {
                                h.Broadcast(plugin.AnnounceDuration, plugin.Announcement.Replace("%player", ev.Sender.Nickname).Replace("%s", args[1]));
                            }
                        }

                        if (OnlyHCZ && plugin.CassieAnnounceHCZ)
                        {
                            plugin.cassieMessage(plugin.CassieAnnouncement);
                        }
                        else if (!OnlyHCZ && plugin.CassieAnnounceBoth)
                        {
                            plugin.cassieMessage(plugin.CassieAnnouncementBoth);
                        }
                        lightsOff(float.Parse(args [1]), OnlyHCZ);
                        return;
                    }
                    return;
                }
                #endregion
                return;
            } catch (Exception e) {
                Log.Error("Command error: " + e.StackTrace);
            }
        }
Exemple #13
0
        public void CommandHandler(ref RACommandEvent ev)
        {
            if (ev.Command.StartsWith("b914") || ev.Command.StartsWith("hurt"))
            {
                var args = ev.Command.Split(new char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
                args = args.Select(arg => arg.ToUpper()).ToArray();
                int index = 0;
                ev.Allow = false;
                if (args[index] == "B914_")
                {
                    args[index] = args[index].Substring(5);
                }
                if (args[index] == "B914" && args.Length > index)
                {
                    index++;
                }

                if (args[index] == "CHANGE")
                {
                    if (args.Length != index + 2)
                    {
                        ev.Sender.RaReply("#Too many arguments! (expected " + (index + 2) + ")", false, true, "");
                        return;
                    }
                    if (!PluginConfig.TryChangeVariable(args[index + 1], args[index + 2], out string reason))
                    {
                        ev.Sender.RaReply(reason, false, true, "");
                        return;
                    }
                    SaveConfig();
                    ev.Sender.RaReply("Variable set successfully", true, true, "");
                    ev.Allow = false;
                    return;
                }
                if (args[index] == "GET")
                {
                    if (args.Length != index + 1)
                    {
                        ev.Sender.RaReply("#Too many arguments! (expected " + (index + 1) + ")", false, true, "");
                        return;
                    }
                    string value;
                    if (!PluginConfig.TryGetVariable(args[index + 1], out value, out string reason))
                    {
                        ev.Sender.RaReply(reason, false, true, "");
                        return;
                    }
                    ev.Sender.RaReply("Config value: " + value, true, true, "");
                    return;
                }
                if (args[0] == "HURT")
                {
                    if (args.Length > 1 && args.Length < 4)
                    {
                        int   id;
                        float value;
                        if (args.Length == 2)
                        {
                            id = int.Parse(ev.Sender.SenderId);
                            if (!float.TryParse(args[1], out value))
                            {
                                ev.Sender.RaReply("#Cannot parse " + value + " as float number", false, true, "");
                                return;
                            }
                        }
                        else
                        {
                            if (!int.TryParse(args[1], out id))
                            {
                                ev.Sender.RaReply("#Cannot parse " + id + " as integer number", false, true, "");
                                return;
                            }
                            if (!float.TryParse(args[2], out value))
                            {
                                ev.Sender.RaReply("#Cannot parse " + value + " as float number", false, true, "");
                                return;
                            }
                        }
                        var player = PlayerManager.players.FirstOrDefault(p => p.GetComponent <QueryProcessor>().PlayerId == id)?.GetComponent <CharacterClassManager>();
                        if (player == null)
                        {
                            ev.Sender.RaReply("#Cannot fint user with id " + id, false, true, "");
                            return;
                        }
                        player.GetComponent <PlayerStats>().HurtPlayer(new PlayerStats.HitInfo(value, "WORLD", Plugin.Scp914DamageType, player.GetComponent <QueryProcessor>().PlayerId), player.gameObject);
                        return;
                    }
                    else
                    {
                        ev.Sender.RaReply("#Too many arguments! (expected 1 or 2)", false, true, "");
                        return;
                    }
                }
                ev.Allow = false;
            }
        }
Exemple #14
0
        public void OnCommand(ref RACommandEvent ev)
        {
            try {
                if (ev.Command.Contains("REQUEST_DATA PLAYER_LIST SILENT"))
                {
                    return;
                }
                string []    args   = ev.Command.Split(' ');
                ReferenceHub sender = ev.Sender.SenderId == "SERVER CONSOLE" || ev.Sender.SenderId == "GAME CONSOLE" ? Player.GetPlayer(PlayerManager.localPlayer) : Player.GetPlayer(ev.Sender.SenderId);
                if (args [0].ToLower() == "lightsconfig")
                {
                    ev.Allow = false;
                    if (!checkPermission(ev, sender, "config"))
                    {
                        ev.Sender.RAMessage(plugin.AccessDenied);
                        return;
                    }
                    if (args.Length >= 2)
                    {
                        if (args[1].ToLower() == "set")
                        {
                            if (!checkPermission(ev, sender, "set"))
                            {
                                return;
                            }
                            if (args.Length >= 4)
                            {
                                if (args[2].ToLower().StartsWith("lights_"))
                                {
                                    Plugin.Config.SetString(args[2].ToLower(), ev.Command.Substring(ev.Command.LastIndexOf(args[3])));
                                    ev.Sender.RAMessage($"<color=yellow>{args[2].ToLower()}</color> <color=green>has been set to:</color> <color=yellow>{args[3]}</color><color=green>.</color>");
                                    return;
                                }
                            }
                        }
                        else if (args[1].ToLower() == "reload")
                        {
                            if (!checkPermission(ev, sender, "reload"))
                            {
                                return;
                            }
                            plugin.reloadConfig();
                            ev.Sender.RAMessage("<color=green>Configuration variables reloaded.</color>");
                            return;
                        }
                        else if (args[1].ToLower() == "variables")
                        {
                            ev.Sender.RAMessage(
                                "<color=red>Each color shows the type of each variable.</color>\n" +
                                "<color=yellow>String</color> - <color=green>Integer</color> - <color=red>Float</color> - <color=#ff00ffff>Boolean</color>\n" +
                                "<color=yellow>lights_command -</color>" +
                                "<color=yellow>lights_alias -</color>" +
                                "<color=yellow>lights_true_arguments -</color>" +
                                "<color=#ff00ffff>lights_announce -</color>" +
                                "<color=green>lights_announce_duration -</color>" +
                                "<color=yellow>lights_announce_text -</color>" +
                                "<color=yellow>lights_message_access_denied -</color>" +
                                "<color=yellow>lights_message_help -</color>" +
                                "<color=yellow>lights_message_not_recognized -</color>" +
                                "<color=yellow>lights_message_success -</color>" +
                                "<color=yellow>lights_cassie_announcement_hcz -</color>" +
                                "<color=yellow>lights_cassie_announcement_both -</color>" +
                                "<color=#ff00ffff>lights_cassie_announceforhcz -</color>" +
                                "<color=#ff00ffff>lights_cassie_announceforboth -</color>" +
                                "<color=#ff00ffff>lights_cassie_makenoise -</color>" +
                                "<color=#ff00ffff>lights_startblackout_toggle -</color>" +
                                "<color=red>lights_startblackout_delay_max -</color>" +
                                "<color=red>lights_startblackout_delay_min -</color>" +
                                "<color=#ff00ffff>lights_multipleblackout_toggle -</color>" +
                                "<color=red>lights_multipleblackout_duration_max -</color>" +
                                "<color=red>lights_multipleblackout_duration_min -</color>" +
                                "<color=red>lights_multipleblackout_timebetween_max -</color>" +
                                "<color=red>lights_multipleblackout_timebetween_min -</color>" +
                                "<color=green>lights_multipleblackout_maxamount -</color>" +
                                "<color=yellow>lights_cassie_announcement_auto -</color>" +
                                "<color=#ff00ffff>lights_cassie_announceauto</color>");
                            return;
                        }
                    }
                    ev.Sender.RAMessage("<color=red>Please try one of the following:</color> " +
                                        "\n<color=#f29f05>\"lightsconfig set <config_variable> <value>\" -> Change the value of a config variable of the plugin.</color>" +
                                        "\n<color=#f29f05>\"lightsconfig variables\" -> Gives you a list of all variables available.</color>" +
                                        "\n<color=#f29f05>\"lightsconfig reload\" -> Reloads config variables.</color>");
                    return;
                }

                #region Command: Lights
                if (args [0].ToLower() == plugin.CmdName || args [0].ToLower() == plugin.CmdAlias)
                {
                    ev.Allow = false;
                    if (!checkPermission(ev, sender, "light"))
                    {
                        ev.Sender.RAMessage(plugin.AccessDenied);
                        return;
                    }
                    if (args.Length < 2)
                    {
                        ev.Sender.RAMessage(plugin.HelpMessage.Replace("%cmd", args [0]));
                        return;
                    }
                    else if (args.Length >= 2)
                    {
                        if (!args [1].All(char.IsDigit))
                        {
                            ev.Sender.RAMessage(plugin.HelpMessage.Replace("%cmd", args [0]));
                            return;
                        }
                        bool OnlyHCZ = false;
                        if (args.Length >= 3)
                        {
                            string [] _t = plugin.TrueArguments.Split(',');
                            if (_t.Contains(args[2].ToLower()))
                            {
                                OnlyHCZ = true;
                            }
                            else
                            {
                                ev.Sender.RAMessage(plugin.NotRecognized.Replace("%arg", args [2]));
                            }
                        }
                        ev.Sender.RAMessage(plugin.Success.Replace("%s", args [1]).Replace("%value", OnlyHCZ + ""));
                        if (plugin.DoAnnouncement)
                        {
                            foreach (ReferenceHub h in Player.GetHubs())
                            {
                                h.Broadcast(plugin.AnnounceDuration, plugin.Announcement.Replace("%player", ev.Sender.Nickname).Replace("%s", args[1]));
                            }
                        }

                        if (OnlyHCZ && plugin.CassieAnnounceHCZ)
                        {
                            plugin.cassieMessage(plugin.CassieAnnouncement);
                        }
                        else if (!OnlyHCZ && plugin.CassieAnnounceBoth)
                        {
                            plugin.cassieMessage(plugin.CassieAnnouncementBoth);
                        }
                        lightsOff(float.Parse(args [1]), OnlyHCZ);
                        return;
                    }
                    return;
                }
                #endregion
                return;
            } catch (Exception e) {
                Log.Error("Command error: " + e.StackTrace);
            }
        }
Exemple #15
0
        public void OnRACommand(ref RACommandEvent ev)
        {
            string cmd = ev.Command.ToLower();

            if (cmd.StartsWith("measure"))
            {
                ev.Allow = false;

                ReferenceHub player = Player.GetPlayer(ev.Sender.SenderId);

                string[] args = cmd.Replace("measure", "").Trim().Split(' ');

                if (args.Length > 0)
                {
                    if (args[0] == "dist")
                    {
                        if (args.Length > 1)
                        {
                            if (args[1] == "start")
                            {
                                distStart = player.transform.position;
                                ev.Sender.RAMessage($"Start position saved at ({distStart.x}, {distStart.y}, {distStart.z}).");
                                return;
                            }
                            else if (args[1] == "end")
                            {
                                distEnd = player.transform.position;
                                ev.Sender.RAMessage($"End position saved at ({distEnd.x}, {distEnd.y}, {distEnd.z}).");
                                ev.Sender.RAMessage($"Distance: {Vector3.Distance(distStart, distEnd)}.");
                                return;
                            }
                        }
                        ev.Sender.RAMessage($"USAGE: MEASURE DIST (START / END)", false);
                    }
                    else if (args[0] == "timer")
                    {
                        if (args.Length > 1)
                        {
                            if (args[1] == "start")
                            {
                                if (!stopWatch.IsRunning)
                                {
                                    Timing.RunCoroutine(Stopwatch(ev.Sender));
                                    return;
                                }
                                else
                                {
                                    ev.Sender.RAMessage("Stopwatch is already running.", false);
                                    return;
                                }
                            }
                            else if (args[1] == "end")
                            {
                                stopWatch.Stop();
                                ev.Sender.RAMessage("Stopwatch stopped!");
                                TimeSpan ts = stopWatch.Elapsed;
                                ev.Sender.RAMessage($"Elapsed time: {String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10)}.");
                                stopWatch.Reset();
                                return;
                            }
                        }
                        ev.Sender.RAMessage($"USAGE: MEASURE TIMER (START / END)", false);
                    }
                    else
                    {
                        ev.Sender.RAMessage($"USAGE: MEASURE (DIST / TIMER)", false);
                    }
                }
            }
        }
Exemple #16
0
        internal void OnRACommand(ref RACommandEvent ev)
        {
            // big brain time
            int i;

            for (i = 0; i < ev.Command.Length && ev.Command[i] != ' '; i++)
            {
                ;
            }

            if (!plugin.Configs.aliases.Contains(ev.Command.Substring(0, i).ToUpperInvariant()))
            {
                return;
            }

            ev.Allow = false;
            string[] args = ev.Command.Split(' ');
            if (args.Length < 2)
            {
                ev.Sender.RAMessage(GetUsage(), false);
                return;
            }
            else
            {
                switch (args[1].ToUpperInvariant())
                {
                case "RELOAD":
                    ev.Sender.RAMessage($"Reloaded {Methods.LoadClasses()} classes.", true);
                    return;

                case "LIST":
                    if (args.Length == 2)
                    {
                        ev.Sender.RAMessage("List of names:\n" + string.Join(", ", from subclass in MTFplus.disctinctSubclasses
                                                                             select subclass.name));
                    }
                    else
                    {
                        Timing.RunCoroutine(Methods.FetchList(ev.Sender));
                    }
                    return;

                case "DISPLAY":
                    if (args.Length < 3)
                    {
                        ev.Sender.RAMessage("Please, introduce a name as your second argument.", false);
                        return;
                    }
                    Subclass theOneAndOnly = MTFplus.subclasses.Get(args[2]);

                    if (theOneAndOnly.Equals(Subclass.Empty))
                    {
                        ev.Sender.RAMessage("Subclass not found.", false);
                        return;
                    }
                    ev.Sender.RAMessage(theOneAndOnly.ToString());
                    return;

                case "SPAWN":
                    var player = Plugin.GetPlayer(ev.Sender.SenderId);
                    if (plugin.Configs.ranks.Count > 0 && player != null && player.serverRoles.Permissions != ServerStatic.PermissionsHandler.FullPerm && !plugin.Configs.ranks.Contains(player.serverRoles.GlobalBadge))
                    {
                        ev.Sender.RAMessage($"You aren't allowed to run this command (role {player.serverRoles.GlobalBadge ?? "(null)"} is not allowed to run this command).", false);
                        return;
                    }
                    if (args.Length < 4)
                    {
                        ev.Sender.RAMessage($"Usage: {string.Join("/", args[0])} SPAWN <player name/player id> <class name>", false);
                        return;
                    }
                    ReferenceHub target = Plugin.GetPlayer(args[2]);
                    if (target == null)
                    {
                        ev.Sender.RAMessage("Player not found.", false);
                        return;
                    }
                    Subclass pickedClass = MTFplus.subclasses.Get(args[3]);
                    if (pickedClass.Equals(Subclass.Empty))
                    {
                        ev.Sender.RAMessage("Subclass not found.", false);
                        return;
                    }
                    target.characterClassManager.SetPlayersClass(pickedClass.role, target.gameObject, false, false);
                    player.SetClass(pickedClass);

                    if (player != null)
                    {
                        Plugin.Info($"Player {target.nicknameSync.MyNick} spawned as subclass {pickedClass.name} by admin {player.nicknameSync.MyNick}" +
                                    $" with ID: ({player.characterClassManager.UserId})");
                    }
                    ev.Sender.RAMessage("Set player " + target.nicknameSync.MyNick + " as " + pickedClass.name);
                    return;
                }
            }
            ev.Sender.RAMessage(GetUsage(), false);
        }
        public void RemoteAdminCommandEvent(ref RACommandEvent ev)
        {
            string[]     args   = ev.Command.Split(' ');
            ReferenceHub sender = ev.Sender.SenderId == "SERVER CONSOLE" || ev.Sender.SenderId == "GAME CONSOLE" ? Player.GetPlayer(PlayerManager.localPlayer) : Player.GetPlayer(ev.Sender.SenderId);

            switch (args[0].ToLower())
            {
            case "oban":
                ev.Allow = false;
                if (!sender.CheckPermission("oban.use"))
                {
                    ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                    return;
                }
                if (args.Length == 1)
                {
                    ev.Sender.RaReply("OBAN#Commandes:", true, true, string.Empty);
                    ev.Sender.RaReply("#- OBAN - Afficher la liste des commandes.", true, true, string.Empty);
                    ev.Sender.RaReply("#- OBAN STEAMID [SteamID@steam] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                    ev.Sender.RaReply("#- OBAN IP [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                    ev.Sender.RaReply("#- OBAN USER [SteamID@steam] [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                    return;
                }
                else if (args.Length > 1)
                {
                    switch (args[1].ToLower())
                    {
                    case "steamid":
                        if (args.Length > 3)
                        {
                            string Steamid64 = args[2];
                            long   BannedAt  = TimeBehaviour.CurrentTimestamp();
                            double Expire    = (double.TryParse(args[3], out double x)) ? x : -1;
                            string By        = sender.characterClassManager.UserId;
                            string Reason    = (args.Length > 3) ? string.Join(" ", args.Skip(4)) : string.Empty;

                            Ban BanJSON = new Ban();
                            BanJSON.Steamid64   = Steamid64;
                            BanJSON.BannedAt    = BannedAt;
                            BanJSON.BannedUntil = DateTime.UtcNow.AddMinutes((double)Expire).Ticks;
                            BanJSON.By          = By;
                            if (!String.IsNullOrEmpty(Reason))
                            {
                                BanJSON.Reason = Reason;
                            }

                            String JSON         = Serialize.ToJson(BanJSON);
                            String JsonResponse = Methods.Post(Plugin.BanURL, JSON);
                            try
                            {
                                JSON.Success.SuccessResponseJSON json = SanctionSystem.JSON.Success.SuccessResponseJSON.FromJson(JsonResponse);

                                string response = "\n" +
                                                  "SteamID: " + Steamid64 + "\n" +
                                                  "Est banni pour : " + Expire + " minutes \n" +
                                                  "Par: " + By + " / " + sender.nicknameSync.MyNick;
                                ev.Sender.RaReply(args[0].ToUpper() + "#" + response, true, true, "");
                            }
                            catch (Exception e)
                            {
                                JSON.Error.ErrorResponseJSON json = SanctionSystem.JSON.Error.ErrorResponseJSON.FromJson(JsonResponse);

                                if (!String.IsNullOrEmpty(json.Code))
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur répondu par l'API: " + json.Code, true, true, string.Empty);
                                }
                                else
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur plugin: " + e, true, true, string.Empty);
                                }
                            }
                        }
                        else
                        {
                            ev.Sender.RaReply("#- OBAN STEAMID [SteamID@steam] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        }
                        break;

                    case "ip":
                        if (args.Length > 3)
                        {
                            string IP       = args[2];
                            long   BannedAt = TimeBehaviour.CurrentTimestamp();
                            double Expire   = (double.TryParse(args[3], out double x)) ? x : -1;
                            string By       = sender.characterClassManager.UserId;
                            string Reason   = (args.Length > 3) ? string.Join(" ", args.Skip(4)) : string.Empty;

                            Ban BanJSON = new Ban();
                            BanJSON.Ip          = IP;
                            BanJSON.BannedAt    = BannedAt;
                            BanJSON.BannedUntil = DateTime.UtcNow.AddMinutes((double)Expire).Ticks;
                            BanJSON.By          = By;
                            if (!String.IsNullOrEmpty(Reason))
                            {
                                BanJSON.Reason = Reason;
                            }

                            String JSON         = Serialize.ToJson(BanJSON);
                            String JsonResponse = Methods.Post(Plugin.BanURL, JSON);
                            try
                            {
                                JSON.Success.SuccessResponseJSON json = SanctionSystem.JSON.Success.SuccessResponseJSON.FromJson(JsonResponse);

                                string response = "\n" +
                                                  "IP: " + IP + "\n" +
                                                  "Est banni pour : " + Expire + " minutes \n" +
                                                  "Par: " + By + " / " + sender.nicknameSync.MyNick;
                                ev.Sender.RaReply(args[0].ToUpper() + "#" + response, true, true, "");
                            }
                            catch (Exception e)
                            {
                                JSON.Error.ErrorResponseJSON json = SanctionSystem.JSON.Error.ErrorResponseJSON.FromJson(JsonResponse);

                                if (!String.IsNullOrEmpty(json.Code))
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur répondu par l'API: " + json.Code, true, true, string.Empty);
                                }
                                else
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur plugin: " + e, true, true, string.Empty);
                                }
                            }
                        }
                        else
                        {
                            ev.Sender.RaReply("#- OBAN IP [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        }
                        break;

                    case "user":
                        if (args.Length > 4)
                        {
                            string Steamid64 = args[2];
                            string IP        = args[3];
                            long   BannedAt  = TimeBehaviour.CurrentTimestamp();
                            double Expire    = (double.TryParse(args[4], out double x)) ? x : -1;
                            string By        = sender.characterClassManager.UserId;
                            string Reason    = (args.Length > 4) ? string.Join(" ", args.Skip(5)) : string.Empty;

                            Ban BanJSON = new Ban();
                            BanJSON.Steamid64   = Steamid64;
                            BanJSON.Ip          = IP;
                            BanJSON.BannedAt    = BannedAt;
                            BanJSON.BannedUntil = DateTime.UtcNow.AddMinutes((double)Expire).Ticks;
                            BanJSON.By          = By;
                            if (!String.IsNullOrEmpty(Reason))
                            {
                                BanJSON.Reason = Reason;
                            }

                            String JSON         = Serialize.ToJson(BanJSON);
                            String JsonResponse = Methods.Post(Plugin.BanURL, JSON);
                            try
                            {
                                JSON.Success.SuccessResponseJSON json = SanctionSystem.JSON.Success.SuccessResponseJSON.FromJson(JsonResponse);

                                string response = "\n" +
                                                  "SteamID: " + Steamid64 + "\n" +
                                                  "IP: " + IP + "\n" +
                                                  "Est banni pour : " + Expire + " minutes \n" +
                                                  "Par: " + By + " / " + sender.nicknameSync.MyNick;
                                ev.Sender.RaReply(args[0].ToUpper() + "#" + response, true, true, "");
                            }
                            catch (Exception e)
                            {
                                JSON.Error.ErrorResponseJSON json = SanctionSystem.JSON.Error.ErrorResponseJSON.FromJson(JsonResponse);

                                if (!String.IsNullOrEmpty(json.Code))
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur répondu par l'API: " + json.Code, true, true, string.Empty);
                                }
                                else
                                {
                                    ev.Sender.RaReply("Erreur durant le processus d'API (Code d'erreur plugin: " + e, true, true, string.Empty);
                                }
                            }
                        }
                        else
                        {
                            ev.Sender.RaReply("#- OBAN USER [SteamID@steam] [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        }
                        break;

                    default:
                        ev.Sender.RaReply("OBAN#Commandes:", true, true, string.Empty);
                        ev.Sender.RaReply("#- OBAN - Afficher la liste des commandes.", true, true, string.Empty);
                        ev.Sender.RaReply("#- OBAN STEAMID [SteamID@steam] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        ev.Sender.RaReply("#- OBAN IP [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        ev.Sender.RaReply("#- OBAN USER [SteamID@steam] [IP] [MINUTES] (RAISON OPTIONNELLE)", true, true, string.Empty);
                        return;
                    }
                }
                break;
            }
        }
Exemple #18
0
        internal void RACmd(ref RACommandEvent ev)
        {
            string[] args = ev.Command.Split(' ');
            //Player.StrHubs[ev.Sender.SenderId].CheckPermission("roundmod.setmod");
            ReferenceHub player = ev.Sender.SenderId == "SERVER CONSOLE" || ev.Sender.SenderId == "GAME CONSOLE" ? PlayerManager.localPlayer.GetPlayer() : Player.GetPlayer(ev.Sender.SenderId);

            if (player.CheckPermission("roundmod.reload"))
            {
                if (args[0].ToUpper().Equals("RM_RELOAD"))
                {
                    plugin.ConfigLoad();
                    ev.Sender.RAMessage("RoundMod config reloaded!", pluginName: plugin.getName);
                }
            }
            if (player.CheckPermission("roundmod.setmod"))
            {
                /*if (args[0].ToUpper().Equals("RM_SET_BOSS"))
                 * {
                 *  if (args.Length > 1)
                 *  {
                 *      List<string> vs = new List<string>(args);
                 *      vs.RemoveAt(0);
                 *      string arg = vs.Join(null, " ");
                 *      plugin.curMod = (ModType)Enum.Parse(typeof(ModType), arg);
                 *      ev.Sender.RAMessage("Set Active Mods to: " + plugin.curMod.ToString(), pluginName: plugin.getName);
                 *  }
                 *  else
                 *  {
                 *      ev.Sender.RAMessage("Active Mods: " + plugin.curMod.ToString(), pluginName: plugin.getName);
                 *
                 *  }
                 * }*/
                if (args[0].ToUpper().Equals("RM_SET_MOD"))
                {
                    if (args.Length > 1)
                    {
                        List <string> vs = new List <string>(args);
                        vs.RemoveAt(0);
                        string arg = vs.Join(null, " ");
                        plugin.curMod = (ModType)Enum.Parse(typeof(ModType), arg);
                        ev.Sender.RAMessage("Set Active Mods to: " + plugin.curMod.ToString(), pluginName: plugin.getName);
                    }
                    else
                    {
                        ev.Sender.RAMessage("Active Mods: " + plugin.curMod.ToString(), pluginName: plugin.getName);
                    }
                }
                if (args[0].ToUpper().StartsWith("RM_MOD"))
                {
                    bool found = false;
                    foreach (ModType item in Enum.GetValues(typeof(ModType)))
                    {
                        if (args[0].ToUpper().Equals(("RM_MOD_" + item.ToString()).ToUpper()))
                        {
                            found = true;
                            if (args.Length != 2)
                            {
                                if (plugin.curMod.HasFlag(item))
                                {
                                    plugin.curMod &= ~item;
                                }
                                else
                                {
                                    plugin.curMod |= item;
                                }
                            }
                            else
                            {
                                bool res;
                                if (bool.TryParse(args[1], out res))
                                {
                                    if (res)
                                    {
                                        plugin.curMod |= item;
                                    }
                                    else
                                    {
                                        plugin.curMod &= ~item;
                                    }
                                }
                            }
                            break;
                        }
                    }
                    if (!found)
                    {
                        //Enum.GetValues(typeof(ModType)).ToArray<ModType>().ToList().FindAll((sel) => plugin.allowedTypes.Contains(sel));
                        ev.Sender.RAMessage("RoundMod by VirtualBrightPlayz/Brian Zulch\nUsable ModTypes:\n" + plugin.enabledTypes.Join((t) => t.ToString(), "\n") + "\nCommands: RM_MOD\nRM_MOD_<MODTYPE> [true|false]\nRM_SET_MOD <MODTYPEFLAGS>", pluginName: plugin.getName);
                    }
                }
            }
        }
        public void RunOnRACommandSent(ref RACommandEvent RAComEv)
        {
            string[]     Arguments = RAComEv.Command.Split(' ');
            ReferenceHub Sender    = RAComEv.Sender.SenderId == "SERVER CONSOLE" || RAComEv.Sender.SenderId == "GAME CONSOLE" ? PlayerManager.localPlayer.GetPlayer() : Player.GetPlayer(RAComEv.Sender.SenderId);

            switch (Arguments[0].ToLower())
            {
            case "ri":
            case "removeinv":
            case "strip":
                RAComEv.Allow = false;
                if (!Sender.CheckPermission("ri.allow"))
                {
                    RAComEv.Sender.RAMessage("You are not authorized to use this command!");
                    return;
                }

                try
                {
                    if (!CheckIfIdIsValid(Int32.Parse(Arguments[1])))
                    {
                        RAComEv.Sender.RAMessage("Please enter in an ID from a player that exists in the game!");
                        return;
                    }

                    ReferenceHub ChosenPlayer = Player.GetPlayer(int.Parse(Arguments[1]));
                    ChosenPlayer.inventory.ServerDropAll();
                    RAComEv.Sender.RAMessage("All items in player \"" + ChosenPlayer.GetNickname() + "\"'s inventory has been removed!");
                }
                catch (Exception)
                {
                    RAComEv.Sender.RAMessage("Please enter a valid ID!");
                    return;
                }
                break;

            case "clear":
                RAComEv.Allow = false;
                if (!Sender.CheckPermission("ri.clear.allow"))
                {
                    RAComEv.Sender.RAMessage("You are not authorized to use this command!");
                    return;
                }

                try
                {
                    if (!CheckIfIdIsValid(Int32.Parse(Arguments[1])))
                    {
                        RAComEv.Sender.RAMessage("Please enter in an ID from a player that exists in the game!");
                        return;
                    }

                    ReferenceHub ChosenPlayer = Player.GetPlayer(int.Parse(Arguments[1]));
                    ChosenPlayer.ClearInventory();
                    RAComEv.Sender.RAMessage("All items in player \"" + ChosenPlayer.GetNickname() + "\"'s inventory has been cleared!");
                }
                catch (Exception)
                {
                    RAComEv.Sender.RAMessage("Please enter a valid ID!");
                    return;
                }
                break;
            }
        }