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); }
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."); } }
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); } } }
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))); } }
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))); } }
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); } }