Пример #1
0
        static void DoRank(ModAction e)
        {
            Player who     = PlayerInfo.FindExact(e.Target);
            Group  newRank = (Group)e.Metadata;
            string action  = newRank.Permission >= e.TargetGroup.Permission ? "promoted to " : "demoted to ";

            LogAction(e, who, action + newRank.ColoredName);

            if (who != null && e.Announce)
            {
                who.Message("You are now ranked " + newRank.ColoredName + "&S, type /Help for your new set of commands.");
            }
            if (Server.tempRanks.Remove(e.Target))
            {
                ModerationTasks.TemprankCalcNextRun();
                Server.tempRanks.Save();
            }

            WriteRankInfo(e, newRank);
            if (e.Duration != TimeSpan.Zero)
            {
                AddTempRank(e, newRank);
            }
            ModActionCmd.ChangeRank(e.Target, e.TargetGroup, newRank, who);
        }
Пример #2
0
        static void DoUnban(ModAction e)
        {
            Player who = PlayerInfo.FindExact(e.Target);

            LogAction(e, who, "&8unbanned");

            if (Server.tempBans.Remove(e.Target))
            {
                Server.tempBans.Save();
            }
            if (!Group.BannedRank.Players.Contains(e.Target))
            {
                return;
            }

            Ban.DeleteUnban(e.Target);
            Ban.UnbanPlayer(e.Actor, e.Target, e.Reason);
            ModActionCmd.ChangeRank(e.Target, Group.BannedRank, Group.DefaultRank, who, false);

            string ip = PlayerDB.FindIP(e.Target);

            if (ip != null && Server.bannedIP.Contains(ip))
            {
                e.Actor.Message("NOTE: Their IP is still banned.");
            }
        }
Пример #3
0
        static void DoBan(ModAction e)
        {
            Player who = PlayerInfo.FindExact(e.Target);

            LogAction(e, who, "&8banned");

            if (e.Duration.Ticks != 0)
            {
                string   banner = e.Actor.truename;
                DateTime end    = DateTime.UtcNow.Add(e.Duration);
                Server.tempBans.Update(e.Target, Ban.PackTempBanData(e.Reason, banner, end));
                Server.tempBans.Save();

                if (who != null)
                {
                    who.Kick("Banned for " + e.Duration.Shorten(true) + "." + e.ReasonSuffixed);
                }
            }
            else
            {
                Ban.DeleteBan(e.Target);
                Ban.BanPlayer(e.Actor, e.Target, e.Reason, !e.Announce, e.TargetGroup.Name);
                ModActionCmd.ChangeRank(e.Target, e.targetGroup, Group.BannedRank, who);

                if (who != null)
                {
                    string msg = e.Reason.Length == 0 ? Server.Config.DefaultBanMessage : e.Reason;
                    who.Kick("Banned by " + e.Actor.ColoredName + ": &S" + msg,
                             "Banned by " + e.Actor.ColoredName + ": &f" + msg);
                }
            }
        }
Пример #4
0
        public override void Use(Player p, string message, CommandData data)
        {
            string name;

            if (message.Length == 0)
            {
                if (p.IsSuper)
                {
                    SuperRequiresArgs(p, "IP address"); return;
                }
                message = p.ip;
            }
            else
            {
                message = ModActionCmd.FindIP(p, message, "Clones", out name);
                if (message == null)
                {
                    return;
                }
            }

            List <string> accounts = PlayerInfo.FindAccounts(message);

            if (accounts.Count == 0)
            {
                p.Message("No players last played with the given IP.");
            }
            else
            {
                p.Message("These players have the same IP:");
                p.Message(accounts.Join(alt => p.FormatNick(alt)));
            }
        }
Пример #5
0
        public override void Use(Player p, string message)
        {
            if (message.Length == 0 && p != null)
            {
                message = p.ip;
            }
            else
            {
                message = ModActionCmd.FindIP(p, message, "find alts of", "clones");
                if (message == null)
                {
                    return;
                }
            }

            List <string> accounts = PlayerInfo.FindAccounts(message);

            if (accounts.Count == 0)
            {
                Player.Message(p, "No players last played with the given IP.");
            }
            else
            {
                Player.Message(p, "These players have the same IP:");
                Player.Message(p, accounts.Join(alt => PlayerInfo.GetColoredName(p, alt)));
            }
        }
Пример #6
0
        static void AddBuildPlayer(Player p, string rawArgs)
        {
            string[] args   = rawArgs.SplitSpaces();
            string   reason = args.Length > 1 ? args[1] : "";
            string   name   = ModActionCmd.FindName(p, "zone", "os zone add", "", args[0], ref reason);

            if (name == null)
            {
                return;
            }

            Player.Message(p, "Added zone for &b" + name);
            LevelAccessController access = p.level.BuildAccess;

            if (access.Blacklisted.CaselessRemove(name))
            {
                access.OnListChanged(p, name, true, true);
            }
            if (!access.Whitelisted.CaselessContains(name))
            {
                access.Whitelisted.Add(name);
                access.OnListChanged(p, name, true, false);
            }
        }