Exemplo n.º 1
0
        void HandleCheck(Player p, string[] args, CommandData data)
        {
            if (args.Length != 2)
            {
                p.Message("You need to provide a player's name."); return;
            }
            if (!CheckExtraPerm(p, data, 1))
            {
                return;
            }
            string target = PlayerDB.MatchNames(p, args[1]);

            if (target == null)
            {
                return;
            }

            if (!File.Exists("extra/reported/" + target + ".txt"))
            {
                p.Message("The player you specified has not been reported."); return;
            }

            string[] reports = File.ReadAllLines("extra/reported/" + target + ".txt");
            p.MessageLines(reports);
        }
Exemplo n.º 2
0
        void HandleDelete(Player p, string[] args, CommandData data)
        {
            if (args.Length != 2)
            {
                p.Message("You need to provide a player's name."); return;
            }
            if (!CheckExtraPerm(p, data, 1))
            {
                return;
            }
            string target = PlayerDB.MatchNames(p, args[1]);

            if (target == null)
            {
                return;
            }

            if (!File.Exists("extra/reported/" + target + ".txt"))
            {
                p.Message("The player you specified has not been reported."); return;
            }
            if (!Directory.Exists("extra/reportedbackups"))
            {
                Directory.CreateDirectory("extra/reportedbackups");
            }

            DeleteReport(target);
            string nick = p.FormatNick(target);

            p.Message("Reports on {0} %Swere deleted.", nick);
            Chat.MessageFromOps(p, "λNICK %Sdeleted reports on " + nick);
            Logger.Log(LogType.UserActivity, "Reports on {1} were deleted by {0}", p.name, target);
        }
Exemplo n.º 3
0
        public override void Use(Player p, string message, CommandData data)
        {
            TimeSpan delta = TimeSpan.Zero;
            bool area = message.CaselessStarts("area ");
            if (area) message = message.Substring("area ".Length);

            if (message.Length == 0) message = p.name;
            string[] parts = message.SplitSpaces();

            if (parts.Length >= 2) {
                if (!CommandParser.GetTimespan(p, parts[1], ref delta, "highlight the past", "s")) return;
            } else {
                delta = TimeSpan.FromMinutes(30);
            }

            parts[0] = PlayerDB.MatchNames(p, parts[0]);
            if (parts[0] == null) return;
            int[] ids = NameConverter.FindIds(parts[0]);

            if (!area) {
                Vec3S32[] marks = new Vec3S32[] { Vec3U16.MinVal, Vec3U16.MaxVal };
                HighlightPlayer(p, delta, parts[0], ids, marks);
            } else {
                p.Message("Place or break two blocks to determine the edges.");
                HighlightAreaArgs args = new HighlightAreaArgs();
                args.ids = ids; args.who = parts[0]; args.delta = delta;
                p.MakeSelection(2,  "Selecting region for %SHighlight", args, DoHighlightArea);
            }
        }
Exemplo n.º 4
0
        void HandleCheck(Player p, string[] args, CommandData data)
        {
            if (args.Length != 2)
            {
                p.Message("You need to provide a player's name."); return;
            }
            if (!CheckExtraPerm(p, data, 1))
            {
                return;
            }

            string target = PlayerDB.MatchNames(p, args[1]);

            if (target == null)
            {
                return;
            }
            string nick = p.FormatNick(target);

            if (!HasReports(target))
            {
                p.Message("{0} &Shas not been reported.", nick); return;
            }

            string[] reports = File.ReadAllLines("extra/reported/" + target + ".txt");
            p.MessageLines(reports);
        }
Exemplo n.º 5
0
        void HandleAdd(Player p, string[] args)
        {
            if (args.Length != 2)
            {
                p.Message("You need to provide a reason for the report."); return;
            }

            string target = PlayerDB.MatchNames(p, args[0]);

            if (target == null)
            {
                return;
            }
            string nick = p.FormatNick(target);

            List <string> reports = new List <string>();

            if (HasReports(target))
            {
                reports = Utils.ReadAllLinesList(ReportPath(target));
            }
            ItemPerms checkPerms = CommandExtraPerms.Find(name, 1);

            if (reports.Count >= 5)
            {
                p.Message("{0} &Walready has 5 reports! Please wait until an {1} &Whas reviewed these reports first!",
                          nick, CommandExtraPerms.Find(name, 1).Describe());
                return;
            }

            string reason = ModActionCmd.ExpandReason(p, args[1]);

            if (reason == null)
            {
                return;
            }

            reports.Add(reason + " - Reported by " + p.name + " at " + DateTime.Now);
            File.WriteAllLines(ReportPath(target), reports.ToArray());
            p.Message("&aReport sent! It should be viewed when a {0} &ais online",
                      checkPerms.Describe());

            string opsMsg = "λNICK &Sreported " + nick + "&S. Reason: " + reason;

            Chat.MessageFrom(ChatScope.Perms, p, opsMsg, checkPerms, null, true);
            string allMsg = "Use &T/Report check " + target + " &Sto see all of their reports";

            Chat.MessageFrom(ChatScope.Perms, p, allMsg, checkPerms, null, true);
        }
Exemplo n.º 6
0
        void HandleAdd(Player p, string[] args)
        {
            if (args.Length != 2)
            {
                p.Message("You need to provide a reason for the report."); return;
            }
            string target = PlayerDB.MatchNames(p, args[0]);

            if (target == null)
            {
                return;
            }

            List <string> reports = new List <string>();

            if (File.Exists("extra/reported/" + target + ".txt"))
            {
                reports = Utils.ReadAllLinesList("extra/reported/" + target + ".txt");
            }

            ItemPerms checkPerms = CommandExtraPerms.Find(name, 1);

            if (reports.Count >= 5)
            {
                p.Message("{0} %Walready has 5 reports! Please wait until an {1} %Whas reviewed these reports first!",
                          p.FormatNick(target), checkPerms.Describe());
                return;
            }

            string reason = args[1];

            reason = ModActionCmd.ExpandReason(p, reason);
            if (reason == null)
            {
                return;
            }

            reports.Add(reason + " - Reported by " + p.name + " at " + DateTime.Now);
            File.WriteAllLines("extra/reported/" + target + ".txt", reports.ToArray());
            p.Message("&aReport sent! It should be viewed when a {0} &ais online",
                      checkPerms.Describe());

            string opsMsg = "λNICK %Smade a report, view it with %T/Report check " + target;

            Chat.MessageFrom(ChatScope.Perms, p, opsMsg, checkPerms, null, true);
        }
Exemplo n.º 7
0
        static string MatchName(Player p, ref string name)
        {
            int    matches;
            Player target = PlayerInfo.FindMatches(p, name, out matches);

            if (matches > 1)
            {
                return(null);
            }
            if (matches == 1)
            {
                name = target.name; return(name);
            }

            p.Message("Searching PlayerDB...");
            return(PlayerDB.MatchNames(p, name));
        }
Exemplo n.º 8
0
        public override void Use(Player p, string message, CommandData data)
        {
            string[] parts = message.SplitSpaces(2);
            if (parts.Length <= 1)
            {
                Help(p); return;
            }
            if (!MessageCmd.CanSpeak(p, "Send"))
            {
                return;
            }

            string name = PlayerDB.MatchNames(p, parts[0]);

            if (name == null)
            {
                return;
            }
            message = parts[1];

            if (message.Length >= 256 && Database.Backend.EnforcesTextLength)
            {
                message = message.Substring(0, 255);
                p.Message("%WMessage was too long. It has been trimmed to:");
                p.Message(message);
            }

            Database.CreateTable("Inbox" + name, createInbox);
            Database.AddRow("Inbox" + name, "PlayerFrom, TimeSent, Contents",
                            p.name, DateTime.Now.ToString(Database.DateFormat), message);
            p.CheckForMessageSpam();

            Player target = PlayerInfo.FindExact(name);

            p.Message("Message sent to {0}%S.", p.FormatNick(name));
            if (target == null)
            {
                return;
            }

            if (!Chat.Ignoring(target, p))
            {
                target.Message("Message received from {0}%S. Check %T/Inbox", target.FormatNick(p));
            }
        }
Exemplo n.º 9
0
        int[] GetIds(Player p, string[] parts, CommandData data, out string[] names)
        {
            int        count = Math.Max(1, parts.Length - 1);
            List <int> ids   = new List <int>();

            names = new string[count];

            for (int i = 0; i < names.Length; i++)
            {
                names[i] = PlayerDB.MatchNames(p, parts[i]);
                if (names[i] == null)
                {
                    return(null);
                }

                Group grp = PlayerInfo.GetGroup(names[i]);
                if (!CheckRank(p, data, names[i], grp.Permission, "undo", false))
                {
                    return(null);
                }
                ids.AddRange(NameConverter.FindIds(names[i]));
            }
            return(ids.ToArray());
        }