Exemplo n.º 1
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);
 }
Exemplo n.º 2
0
        public (string response, string color) OnCall(ReferenceHub sender, string[] args)
        {
            if (!sender.CheckPermission("tc.unmute"))
            {
                return(Language.CommandNotEnoughPermissionsError, "red");
            }

            if (args.Length != 1)
            {
                return(string.Format(Language.CommandNotEnoughParametersError, 1, Usage), "red");
            }

            Collections.Chat.Player chatPlayer = args[0].GetChatPlayer();

            if (chatPlayer == null)
            {
                return(string.Format(Language.PlayerNotFoundError, args[0]), "red");
            }

            var mute = LiteDatabase.GetCollection <Collections.Chat.Mute>().FindOne(queryMute => queryMute.Target.Id == chatPlayer.Id && queryMute.Expire > DateTime.Now);

            if (mute == null)
            {
                return(string.Format(Language.PlayerIsNotMutedError, chatPlayer.Name), "red");
            }

            mute.Expire = DateTime.Now;

            LiteDatabase.GetCollection <Collections.Chat.Mute>().Update(mute);

            Player.GetPlayer(args[0])?.SendConsoleMessage(Language.UnmuteCommandSuccessPlayer, "green");

            return(string.Format(Language.UnmuteCommandSuccessModerator, chatPlayer.Name), "green");
        }
Exemplo n.º 3
0
        public (string response, string color) OnCall(ReferenceHub sender, string[] args)
        {
            if (!sender.CheckPermission("tc.showmutes"))
            {
                return(Language.CommandNotEnoughPermissionsError, "red");
            }

            if (args.Length == 0)
            {
                return(GetPlayerMutes(LiteDatabase.GetCollection <Collections.Chat.Mute>().FindAll().ToList()).ToString(), "white");
            }
            else if (args.Length == 1)
            {
                Collections.Chat.Player chatPlayer = args[0].GetChatPlayer();

                if (chatPlayer == null)
                {
                    return(string.Format(Language.PlayerNotFoundError, args[0]), "red");
                }

                return(GetPlayerMutes(LiteDatabase.GetCollection <Collections.Chat.Mute>().Find(mute => mute.Target.Id == chatPlayer.Id).ToList()).ToString(), "white");
            }

            return(Language.CommandTooManyArgumentsError, "red");
        }
Exemplo n.º 4
0
        public (string response, string color) OnCall(ReferenceHub sender, string[] args)
        {
            if (!sender.CheckPermission("tc.deletemutes"))
            {
                return(Language.CommandNotEnoughPermissionsError, "red");
            }

            if (args.Length == 0)
            {
                return(string.Format(Language.DeleteAllMutesSuccess, LiteDatabase.GetCollection <Collections.Chat.Mute>().DeleteAll()), "green");
            }
            else if (args.Length == 1)
            {
                Collections.Chat.Player chatPlayer = args[0].GetChatPlayer();

                if (chatPlayer == null)
                {
                    return(string.Format(Language.PlayerNotFoundError, args[0]), "red");
                }

                return(string.Format(Language.DeleteMutesSuccess, LiteDatabase.GetCollection <Collections.Chat.Mute>().DeleteMany(mute => mute.Target.Id == chatPlayer.Id), chatPlayer.Name), "green");
            }

            return(Language.CommandTooManyArgumentsError, "red");
        }
Exemplo n.º 5
0
 public string VoteHandler(ReferenceHub player, int option)
 {
     if (CurrentVote != null)
     {
         if (!player.CheckPermission("playervote.vote"))
         {
             return("You don't have the required permission to vote.");
         }
         if (!CurrentVote.Votes.Contains(player.characterClassManager.UserId))
         {
             if (CurrentVote.Options.ContainsKey(option))
             {
                 CurrentVote.Counter[option]++;
                 CurrentVote.Votes.Add(player.characterClassManager.UserId);
                 Log.Info("Player " + player.nicknameSync.MyNick + " voted " + CurrentVote.Options[option] + " bringing the counter to " + CurrentVote.Counter[option]);
                 return("Vote accepted!");
             }
             else
             {
                 return("Vote does not have an option " + option + ".");
             }
         }
         else
         {
             return("You've already voted.");
         }
     }
     else
     {
         return("There is no vote in progress.");
     }
 }
Exemplo n.º 6
0
        public (string response, string color) OnCall(ReferenceHub sender, string[] args)
        {
            if (!sender.CheckPermission("tc.mute"))
            {
                return(Language.CommandNotEnoughPermissionsError, "red");
            }

            if (args.Length < 2)
            {
                return(string.Format(Language.CommandNotEnoughParametersError, 2, Usage), "red");
            }

            ReferenceHub target = Player.GetPlayer(args[0]);

            Collections.Chat.Player chatPlayer = args[0].GetChatPlayer();

            if (chatPlayer == null)
            {
                return(string.Format(Language.PlayerNotFoundError, args[0]), "red");
            }

            if (!double.TryParse(args[1], out double duration) || duration < 1)
            {
                return(string.Format(Language.InvalidDurationError, args[1]), "red");
            }

            string reason = string.Join(" ", args.Skip(2).Take(args.Length - 2));

            if (string.IsNullOrEmpty(reason))
            {
                return(Language.ReasonCannotBeEmptyError, "red");
            }

            if (chatPlayer.IsChatMuted())
            {
                return(string.Format(Language.PlayerIsAlreadyMutedError, chatPlayer.Name), "red");
            }

            LiteDatabase.GetCollection <Collections.Chat.Mute>().Insert(new Collections.Chat.Mute()
            {
                Target    = chatPlayer,
                Issuer    = sender.GetChatPlayer(),
                Reason    = reason,
                Duration  = duration,
                Timestamp = DateTime.Now,
                Expire    = DateTime.Now.AddMinutes(duration)
            });

            if (Configs.showChatMutedBroadcast)
            {
                target?.ClearBroadcasts();
                target?.Broadcast(Configs.chatMutedBroadcastDuration, string.Format(Configs.chatMutedBroadcast, duration, reason), false);
            }

            target?.SendConsoleMessage(string.Format(Language.MuteCommandSuccessPlayer, duration, reason), "red");

            return(string.Format(Language.MuteCommandSuccessModerator, chatPlayer.Name, duration, reason), "green");
        }
Exemplo n.º 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);
     }
 }
Exemplo n.º 8
0
        public string StopvoteHandler(ReferenceHub player)
        {
            if (!player.CheckPermission("playervote.stopvote"))
            {
                return("You don't have the required permission to stop votes.");
            }

            if (this.StopVote())
            {
                return("Vote stopped.");
            }
            else
            {
                return("There is not a vote in progress.");
            }
        }
Exemplo n.º 9
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);
                    }
                }
            }
        }
Exemplo n.º 10
0
        public static void RemoteAdminCommandEvent(ref RACommandEvent ev)
        {
            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);

            switch (args[0].ToLower())
            {
            case "ep":
                ev.Allow = false;
                if (!sender.CheckPermission("ep.use"))
                {
                    ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                    return;
                }
                if (args.Length == 1)
                {
                    ev.Sender.RaReply("ExiledPermissions#Commands:", true, true, string.Empty);
                    ev.Sender.RaReply("ExiledPermissions# - EP RELOAD - Reload permissions.", true, true, string.Empty);
                    ev.Sender.RaReply("ExiledPermissions# - EP ADDGROUP <NAME> - Add group.", true, true, string.Empty);
                    ev.Sender.RaReply("ExiledPermissions# - EP REMOVEGROUP <NAME> - Remove group.", true, true, string.Empty);
                    ev.Sender.RaReply("ExiledPermissions# - EP GROUP <NAME> ADD/REMOVE <PERMISSION> - Add/remove permission from group.", true, true, string.Empty);
                    return;
                }
                else if (args.Length > 1)
                {
                    switch (args[1].ToLower())
                    {
                    case "reload":
                        if (!sender.CheckPermission("ep.reload"))
                        {
                            ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                            return;
                        }
                        PermissionPlugin.ReloadPermissions();
                        ev.Sender.RaReply("ExiledPermissions#Plugin reloaded.", true, true, string.Empty);
                        return;

                    case "addgroup":
                        if (!sender.CheckPermission("ep.addgroup"))
                        {
                            ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                            return;
                        }
                        if (args.Length > 2)
                        {
                            PermissionPlugin.ReloadPermissions();
                            if (PermissionPlugin.permissionsconfig.groups.ContainsKey(args[2]))
                            {
                                ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " already exists.", true, true, string.Empty);
                                return;
                            }
                            PermissionPlugin.permissionsconfig.groups.Add(args[2], new PermissionPlugin.Group());
                            PermissionPlugin.SavePermissions();
                            ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " has been added.", true, true, string.Empty);
                        }
                        else
                        {
                            ev.Sender.RaReply("ExiledPermissions#EP ADDGROUP <NAME>", true, true, string.Empty);
                        }
                        return;

                    case "removegroup":
                        if (!sender.CheckPermission("ep.removegroup"))
                        {
                            ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                            return;
                        }
                        if (args.Length > 2)
                        {
                            PermissionPlugin.ReloadPermissions();
                            if (!PermissionPlugin.permissionsconfig.groups.ContainsKey(args[2]))
                            {
                                ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " does not exist.", true, true, string.Empty);
                                return;
                            }
                            PermissionPlugin.permissionsconfig.groups.Remove(args[2]);
                            PermissionPlugin.SavePermissions();
                            ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " removed.", true, true, string.Empty);
                        }
                        else
                        {
                            ev.Sender.RaReply("ExiledPermissions#EP REMOVEGROUP <NAME>", true, true, string.Empty);
                        }
                        return;

                    case "group":
                        if (!sender.CheckPermission("ep.group"))
                        {
                            ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                            return;
                        }
                        if (args.Length > 3)
                        {
                            switch (args[3].ToLower())
                            {
                            case "add":
                                if (!sender.CheckPermission("ep.addpermission"))
                                {
                                    ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                                    return;
                                }
                                if (args.Length == 4)
                                {
                                    ev.Sender.RaReply("ExiledPermissions#EP GROUP <NAME> ADD <PERMISSION>", true, true, string.Empty);
                                    return;
                                }
                                PermissionPlugin.ReloadPermissions();
                                if (!PermissionPlugin.permissionsconfig.groups.ContainsKey(args[2]))
                                {
                                    ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " does not exist.", true, true, string.Empty);
                                    return;
                                }
                                PermissionPlugin.permissionsconfig.groups.TryGetValue(args[2], out PermissionPlugin.Group val);
                                if (!val.permissions.Contains(args[4]))
                                {
                                    val.permissions.Add(args[4]);
                                }
                                PermissionPlugin.SavePermissions();
                                ev.Sender.RaReply("ExiledPermissions#Permission " + args[4] + " for group " + args[2] + " added.", true, true, string.Empty);
                                return;

                            case "remove":
                                if (!sender.CheckPermission("ep.removepermission"))
                                {
                                    ev.Sender.RaReply("ExiledPermissions#No permission.", true, true, string.Empty);
                                    return;
                                }
                                if (args.Length == 4)
                                {
                                    ev.Sender.RaReply("ExiledPermissions#EP GROUP <NAME> REMOVE <PERMISSION>", true, true, string.Empty);
                                    return;
                                }
                                PermissionPlugin.ReloadPermissions();
                                if (!PermissionPlugin.permissionsconfig.groups.ContainsKey(args[2]))
                                {
                                    ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " does not exist.", true, true, string.Empty);
                                    return;
                                }
                                PermissionPlugin.permissionsconfig.groups.TryGetValue(args[2], out PermissionPlugin.Group val2);
                                if (val2.permissions.Contains(args[4]))
                                {
                                    val2.permissions.Remove(args[4]);
                                }
                                PermissionPlugin.SavePermissions();
                                ev.Sender.RaReply("ExiledPermissions#Permission " + args[4] + " for group " + args[2] + " removed.", true, true, string.Empty);
                                return;
                            }
                        }
                        else if (args.Length > 2)
                        {
                            if (!PermissionPlugin.permissionsconfig.groups.ContainsKey(args[2]))
                            {
                                ev.Sender.RaReply("ExiledPermissions#Group " + args[2] + " does not exist.", true, true, string.Empty);
                                return;
                            }
                            PermissionPlugin.permissionsconfig.groups.TryGetValue(args[2], out PermissionPlugin.Group val2);
                            ev.Sender.RaReply("ExiledPermissions#Group: " + args[2], true, true, string.Empty);
                            ev.Sender.RaReply("ExiledPermissions# Default: " + val2.Default, true, true, string.Empty);
                            if (val2.inheritance.Count != 0)
                            {
                                ev.Sender.RaReply("ExiledPermissions# Inheritance: ", true, true, string.Empty);
                                foreach (string per in val2.inheritance)
                                {
                                    ev.Sender.RaReply("ExiledPermissions# - " + per, true, true, string.Empty);
                                }
                            }
                            if (val2.permissions.Count != 0)
                            {
                                ev.Sender.RaReply("ExiledPermissions# Permissions: ", true, true, string.Empty);
                                foreach (string per in val2.permissions)
                                {
                                    ev.Sender.RaReply("ExiledPermissions# - " + per, true, true, string.Empty);
                                }
                            }
                        }
                        else
                        {
                            ev.Sender.RaReply("ExiledPermissions#EP GROUP <NAME>", true, true, string.Empty);
                            ev.Sender.RaReply("ExiledPermissions#EP GROUP <NAME> ADD/REMOVE <PERMISSION>", true, true, string.Empty);
                        }
                        return;

                    default:
                        ev.Sender.RaReply("ExiledPermissions#Commands:", true, true, string.Empty);
                        ev.Sender.RaReply("ExiledPermissions# - EP RELOAD - Reload permissions.", true, true, string.Empty);
                        ev.Sender.RaReply("ExiledPermissions# - EP ADDGROUP <NAME> - Add group.", true, true, string.Empty);
                        ev.Sender.RaReply("ExiledPermissions# - EP REMOVEGROUP <NAME> - Remove group.", true, true, string.Empty);
                        ev.Sender.RaReply("ExiledPermissions# - EP GROUP <NAME> - Info about group.", true, true, string.Empty);
                        ev.Sender.RaReply("ExiledPermissions# - EP GROUP <NAME> ADD/REMOVE <PERMISSION> - Add/remove permission from group.", true, true, string.Empty);
                        return;
                    }
                }
                break;
            }
        }
Exemplo n.º 11
0
        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;
            }
        }
        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;
            }
        }
Exemplo n.º 13
0
        public string CallvoteHandler(ReferenceHub player, string[] args)         // lowercase to match command
        {
            Log.Info(player.nicknameSync.MyNick + " called vote with arguments: ");
            for (int i = 0; i < args.Length; i++)
            {
                Log.Info("\t" + i + ": " + args[i]);
            }
            if (args.Length == 0)
            {
                //return new string[] { "callvote RestartRound", "callvote Kick <player>", "callvote <custom> [options]" };
                return("callvote Kick/Kill/<custom> <player>/[options]");
            }
            else
            {
                if (CurrentVote != null)
                {
                    //return new string[] { "A vote is currently in progress." };
                    return("A vote is currently in progress.");
                }
                else
                {
                    Dictionary <int, string> options = new Dictionary <int, string>();
                    switch (args[0].ToLower())
                    {
                    case "kick":
                        if (this.EnableKick)
                        {
                            if (!player.CheckPermission("playervote.kick"))
                            {
                                return("You don't have the required permission to call kick votes.");
                            }

                            if (args.Length == 1)
                            {
                                return("callvote Kick <player>");
                            }
                            else
                            {
                                Log.Info("Vote called by " + player.nicknameSync.MyNick + " to " + args[0] + " player " + args[1]);

                                ReferenceHub locatedPlayer = Player.GetPlayer(args[1]);
                                if (locatedPlayer != null)
                                {
                                    options[1] = "Yes";
                                    options[2] = "No";

                                    StartVote(new Vote(player.nicknameSync.MyNick + " asks: Kick " + locatedPlayer.nicknameSync.MyNick + "?", options), delegate(Vote vote)
                                    {
                                        int votePercent = (int)((float)vote.Counter[1] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                        if (votePercent >= this.ThresholdKick)
                                        {
                                            Extensions.BC(5, votePercent + "% voted yes. Kicking player " + locatedPlayer.nicknameSync.MyNick + ".");
                                            GameCore.Console.singleton.TypeCommand($"/ban " + locatedPlayer.queryProcessor.PlayerId + " 0", new PVoteSender());
                                        }
                                        else
                                        {
                                            Extensions.BC(5, "Only " + votePercent + "% voted yes. " + this.ThresholdKick + "% was required to kick " + locatedPlayer.nicknameSync.MyNick + ".");
                                        }
                                    });

                                    break;
                                }
                                else
                                {
                                    return("Did not find any players with the name or partial name of " + args[1]);
                                }
                            }
                        }
                        else
                        {
                            return("callvote Kick is not enabled.");
                        }

                    case "kill":
                        if (this.EnableKill)
                        {
                            if (!player.CheckPermission("playervote.kill"))
                            {
                                return("You don't have the required permission to call kill votes.");
                            }

                            if (args.Length == 1)
                            {
                                return("callvote Kill <player>");
                            }
                            else
                            {
                                Log.Info("Vote called by " + player.nicknameSync.MyNick + " to " + args[0] + " player " + args[1]);

                                ReferenceHub locatedPlayer = Player.GetPlayer(args[1]);
                                if (locatedPlayer != null)
                                {
                                    options[1] = "Yes";
                                    options[2] = "No";

                                    StartVote(new Vote(player.nicknameSync.MyNick + " asks: Kill " + locatedPlayer.nicknameSync.MyNick + "?", options), delegate(Vote vote)
                                    {
                                        int votePercent = (int)((float)vote.Counter[1] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                        if (votePercent >= this.ThresholdKill)
                                        {
                                            Extensions.BC(5, votePercent + "% voted yes. Killing player " + locatedPlayer.nicknameSync.MyNick + ".");
                                            locatedPlayer.playerStats.SetHPAmount(0);
                                            locatedPlayer.playerStats._hpDirty = true;
                                        }
                                        else
                                        {
                                            Extensions.BC(5, "Only " + votePercent + "% voted yes. " + this.ThresholdKill + "% was required to kill " + locatedPlayer.nicknameSync.MyNick + ".");
                                        }
                                    });

                                    break;
                                }
                                else
                                {
                                    return("Did not find any players with the name or partial name of " + args[1]);
                                }
                            }
                        }
                        else
                        {
                            return("callvote Kill is not enabled.");
                        }


                    case "nuke":
                        if (EnableNuke)
                        {
                            if (!player.CheckPermission("playervote.nuke"))
                            {
                                return("You don't have the required permission to call nuke votes.");
                            }

                            Log.Info("Vote called by " + player.nicknameSync.MyNick + " to " + args[0]);
                            //return new string[] { "To be implemented." };

                            options[1] = "Yes";
                            options[2] = "No";

                            StartVote(new Vote(player.nicknameSync.MyNick + " asks: NUKE THE FACILITY?!?", options), delegate(Vote vote)
                            {
                                int votePercent = (int)((float)vote.Counter[1] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                if (votePercent >= this.ThresholdNuke)
                                {
                                    Extensions.BC(5, votePercent + "% voted yes. Nuking the facility...");
                                    EnableNuke = true;
                                }
                                else
                                {
                                    Extensions.BC(5, "Only " + votePercent + "% voted yes. " + this.ThresholdNuke + "% was required to nuke the facility.");
                                }
                            });
                            break;
                        }
                        else
                        {
                            return("callvote Nuke is not enabled.");
                        }

                    case "respawnwave":
                        if (EnableRespawnWave)
                        {
                            if (!player.CheckPermission("playervote.respawnwave"))
                            {
                                return("You don't have the required permission to call respawnwave votes.");
                            }

                            Log.Info("Vote called by " + player.nicknameSync.MyNick + " to " + args[0]);
                            //return new string[] { "To be implemented." };

                            options[1] = "No";
                            options[2] = "MTF";
                            options[3] = "CI";

                            StartVote(new Vote(player.nicknameSync.MyNick + " asks: Respawn the next wave?", options), delegate(Vote vote)
                            {
                                int votePercent    = (int)((float)vote.Counter[1] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                int mtfVotePercent = (int)((float)vote.Counter[2] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                int ciVotePercent  = (int)((float)vote.Counter[3] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                if (mtfVotePercent >= this.ThresholdRespawnWave)
                                {
                                    Extensions.BC(5, mtfVotePercent + "% voted yes. Respawning a wave of Nine-Tailed Fox...");

                                    MTFRespawn _MTFRespawn = PlayerManager.localPlayer.GetComponent <MTFRespawn>();

                                    bool oldNextRespawn      = _MTFRespawn.nextWaveIsCI;
                                    _MTFRespawn.nextWaveIsCI = false;
                                    _MTFRespawn.RespawnDeadPlayers();
                                    _MTFRespawn.nextWaveIsCI = oldNextRespawn;
                                }
                                else if (ciVotePercent >= this.ThresholdRespawnWave)
                                {
                                    Extensions.BC(5, ciVotePercent + "% voted yes. Respawning a wave of Chaos Insurgency...");

                                    MTFRespawn _MTFRespawn = PlayerManager.localPlayer.GetComponent <MTFRespawn>();

                                    bool oldNextRespawn      = _MTFRespawn.nextWaveIsCI;
                                    _MTFRespawn.nextWaveIsCI = true;
                                    _MTFRespawn.RespawnDeadPlayers();
                                    _MTFRespawn.nextWaveIsCI = oldNextRespawn;
                                }
                                else
                                {
                                    Extensions.BC(5, votePercent + "% voted no. " + this.ThresholdRespawnWave + "% was required to respawn the next wave.");
                                }
                            });
                            break;
                        }
                        else
                        {
                            return("callvote RespawnWave is not enabled.");
                        }

                    case "restartround":
                        if (EnableRestartRound)
                        {
                            if (!player.CheckPermission("playervote.restartround"))
                            {
                                return("You don't have the required permission to call restartround votes.");
                            }

                            Log.Info("Vote called by " + player.nicknameSync.MyNick + " to " + args[0]);
                            //return new string[] { "To be implemented." };

                            options[1] = "Yes";
                            options[2] = "No";

                            StartVote(new Vote(player.nicknameSync.MyNick + " asks: Restart the round?", options), delegate(Vote vote)
                            {
                                int votePercent = (int)((float)vote.Counter[1] / (float)(ServerConsole.PlayersAmount - 1) * 100f);
                                if (votePercent >= this.ThresholdRestartRound)
                                {
                                    Extensions.BC(5, votePercent + "% voted yes. Restarting the round...");
                                    PlayerManager.localPlayer.GetComponent <PlayerStats>().Roundrestart();
                                }
                                else
                                {
                                    Extensions.BC(5, "Only " + votePercent + "% voted yes. " + this.ThresholdRestartRound + "% was required to restart the round.");
                                }
                            });
                            break;
                        }
                        else
                        {
                            return("callvote RestartRound is not enabled.");
                        }

                    default:
                        if (!player.CheckPermission("playervote.custom"))
                        {
                            return("You don't have the required permission to call custom votes.");
                        }

                        if (args.Length == 1)
                        {
                            Log.Info("Binary vote called by " + player.nicknameSync.MyNick + ": " + string.Join(" ", args));
                            options[1] = "Yes";
                            options[2] = "No";
                        }
                        else
                        {
                            Log.Info("Multiple-choice vote called by " + player.nicknameSync.MyNick + ": " + string.Join(" ", args));
                            for (int i = 1; i < args.Length; i++)
                            {
                                options[i] = args[i];
                            }
                        }
                        StartVote(new Vote(player.nicknameSync.MyNick + " asks: " + args[0], options), null);
                        break;
                    }
                    return("Vote has been started!");
                }
            }
        }