public static string Append(Player p, string ai, string cmd, string[] args) { using (StreamWriter w = new StreamWriter("bots/" + ai, true)) { if (cmd.Length == 0) { cmd = "walk"; } if (cmd.CaselessEq("tp")) { cmd = "teleport"; } BotInstruction ins = BotInstruction.Find(cmd); if (ins == null) { p.Message("Could not find instruction \"" + cmd + "\""); return(null); } CommandExtraPerms killPerms = CommandExtraPerms.Find("BotSet", 1); if (ins.Name.CaselessEq("kill") && !killPerms.UsableBy(p.Rank)) { killPerms.MessageCannotUse(p); return(null); } try { ins.Output(p, args, w); } catch { p.Message("Invalid arguments given for instruction " + ins.Name); return(null); } return(ins.Name); } }
void UpdateExtraPerms(LevelPermission perm, int num) { CommandExtraPerms.Load(); CommandExtraPerms.Set("lavasurvival", perm, "temp desc", num); CommandExtraPerms.Save(); needsSaveSettings = true; }
public static void Register(Command cmd) { allCmds.Add(cmd); CommandPerms perms = CommandPerms.GetOrAdd(cmd.name, cmd.defaultRank); foreach (Group grp in Group.GroupList) { if (perms.UsableBy(grp.Permission)) { grp.Commands.Add(cmd); } } CommandPerm[] extra = cmd.ExtraPerms; if (extra != null) { for (int i = 0; i < extra.Length; i++) { CommandExtraPerms exPerms = CommandExtraPerms.GetOrAdd(cmd.name, i + 1, extra[i].Perm); exPerms.Desc = extra[i].Description; } } Alias.RegisterDefaults(cmd); }
public static void PrintCommandInfo(Player p, Command cmd) { ItemPerms perms = CommandPerms.Find(cmd.name); if (perms == null) { perms = new ItemPerms(cmd.defaultRank, null, null); } p.Message("Usable by: " + perms.Describe()); PrintAliases(p, cmd); List <CommandExtraPerms> extraPerms = CommandExtraPerms.FindAll(cmd.name); if (cmd.ExtraPerms == null) { extraPerms.Clear(); } if (extraPerms.Count == 0) { return; } p.Message("%TExtra permissions:"); foreach (CommandExtraPerms extra in extraPerms) { p.Message("{0}) {1} {2}", extra.Num, extra.Describe(), extra.Desc); } }
public static void Append(Player p, string ai, string action, string[] args) { using (StreamWriter w = new StreamWriter("bots/" + ai, true)) { if (action.Length == 0) { action = "walk"; } if (action.CaselessEq("tp")) { action = "teleport"; } BotInstruction ins = BotInstruction.Find(action); if (ins == null) { Player.Message(p, "Could not find instruction \"" + action + "\""); return; } LevelPermission killPerm = CommandExtraPerms.MinPerm("botset"); if (ins.Name.CaselessEq("kill") && p.Rank < killPerm) { Formatter.MessageNeedMinPerm(p, "+ can toggle a bot's killer instinct.", killPerm); return; } ins.Output(p, args, w); } }
static void ShowAltsTask(SchedulerTask task) { string name = (string)task.State; Player p = PlayerInfo.FindExact(name); if (p == null || p.ip == "127.0.0.1" || p.disconnected) { return; } List <string> alts = PlayerInfo.FindAccounts(p.ip); // in older versions it was possible for your name to appear multiple times in DB while (alts.CaselessRemove(p.name)) { } if (alts.Count == 0) { return; } LevelPermission adminChatRank = CommandExtraPerms.MinPerm("adminchat", LevelPermission.Admin); string altsMsg = p.ColoredName + " %Sis lately known as: " + alts.Join(); if (p.group.Permission < adminChatRank || !ServerConfig.AdminsJoinSilently) { Chat.MessageOps(altsMsg); //IRCBot.Say(temp, true); //Tells people in op channel on IRC } Logger.Log(LogType.UserActivity, altsMsg); }
public static void Register(Command cmd) { allCmds.Add(cmd); CommandPerms perms = CommandPerms.Find(cmd.name); if (perms == null) { perms = new CommandPerms(cmd.name, cmd.defaultRank, null, null); CommandPerms.List.Add(perms); } foreach (Group grp in Group.GroupList) { if (perms.UsableBy(grp.Permission)) { grp.Commands.Add(cmd); } } CommandPerm[] extra = cmd.ExtraPerms; if (extra != null) { for (int i = 0; i < extra.Length; i++) { CommandExtraPerms.Set(cmd.name, i + 1, extra[i].Description, extra[i].Perm, null, null); } } Alias.RegisterDefaults(cmd); }
void cmd_cmbExtra_SelectedIndexChanged(object sender, EventArgs e) { ComboBox box = (ComboBox)sender; if (commandItems.SupressEvents) { return; } int idx = box.SelectedIndex; if (idx == -1) { return; } int boxIdx = Array.IndexOf <ComboBox>(commandExtraBoxes, box); CommandExtraPerms orig = extraPermsList[boxIdx]; CommandExtraPerms copy = LookupExtraPerms(orig.CmdName, orig.Num); if (copy == null) { copy = orig.Copy(); commandExtraPermsChanged.Add(copy); } copy.MinRank = GuiPerms.RankPerms[idx]; }
void CommandInitExtraPerms() { extraPermsList = CommandExtraPerms.FindAll(cmd.name); for (int i = 0; i < commandExtraBoxes.Length; i++) { commandExtraBoxes[i].Visible = false; commandExtraLabels[i].Visible = false; } if (cmd.ExtraPerms == null) { extraPermsList.Clear(); } int height = 12; for (int i = 0; i < extraPermsList.Count; i++) { CommandExtraPerms perms = LookupExtraPerms(extraPermsList[i].CmdName, extraPermsList[i].Num); if (perms == null) { perms = extraPermsList[i]; } GuiPerms.SetDefaultIndex(commandExtraBoxes[i], perms.MinRank); commandExtraBoxes[i].Visible = true; commandExtraLabels[i].Text = "+ " + perms.Desc; commandExtraLabels[i].Visible = true; height = commandExtraBoxes[i].Bottom + 12; } cmd_grpExtra.Visible = extraPermsList.Count > 0; cmd_grpExtra.Height = height; }
static void SetOldReview() { if (old.clearPerm == -1 && old.nextPerm == -1 && old.viewPerm == -1 && old.opchatPerm == -1 && old.adminchatPerm == -1) { return; } // Apply backwards compatibility if (old.viewPerm != -1) { CommandExtraPerms.Find("Review", 1).MinRank = (LevelPermission)old.viewPerm; } if (old.nextPerm != -1) { CommandExtraPerms.Find("Review", 2).MinRank = (LevelPermission)old.nextPerm; } if (old.clearPerm != -1) { CommandExtraPerms.Find("Review", 3).MinRank = (LevelPermission)old.clearPerm; } if (old.opchatPerm != -1) { Chat.OpchatPerms.MinRank = (LevelPermission)old.opchatPerm; } if (old.adminchatPerm != -1) { Chat.AdminchatPerms.MinRank = (LevelPermission)old.adminchatPerm; } CommandExtraPerms.Save(); }
public static void PrintCommandInfo(Player p, Command cmd) { CommandPerms perms = CommandPerms.Find(cmd.name); StringBuilder builder = new StringBuilder(); builder.Append("Usable by: "); if (perms == null) { builder.Append(Group.GetColoredName(cmd.defaultRank) + "%S+"); } else { PrintRanks(perms.MinRank, perms.Allowed, perms.Disallowed, builder); } Player.Message(p, builder.ToString()); PrintAliases(p, cmd); List <CommandExtraPerms> extraPerms = CommandExtraPerms.FindAll(cmd.name); if (extraPerms.Count == 0) { return; } Player.Message(p, "%TExtra permissions:"); foreach (CommandExtraPerms extra in extraPerms) { Player.Message(p, "{0}) {1}%S{2}", extra.Number, Group.GetColoredName(extra.MinRank), extra.Description); } }
// this doesn't check access for player vs model, // only checks if they can edit a certain field on this model public bool CanEdit(Player p, string modelName = null) { if (this.extra) { // you can edit these if you're op, if (CommandExtraPerms.Find("CustomModel", 1).UsableBy(p.Rank)) { return(true); } else { // or if it's not a primary personal model if (modelName != null && new StoredCustomModel(modelName, true).IsPersonalPrimary()) { // is a primary personal model return(false); } else { return(true); } } } else { return(true); } }
public override void Help(Player p) { p.Message("%T/Patrol"); ItemPerms except = CommandExtraPerms.Find(name, 1); p.Message("%HTeleports you to a random player. {0} %Hare not patrolled", except.Describe()); p.Message("%HPlayers patrolled within the last 15 seconds are ignored"); }
public override void Help(Player p) { Player.Message(p, "%T/Patrol"); LevelPermission perm = CommandExtraPerms.MinPerm(name); Player.Message(p, "%HTeleports you to a random {0} %Hor lower", Group.GetColoredName(perm)); Player.Message(p, "%HPlayers patrolled within the last 15 seconds are ignored"); }
static void LogIPAction(ModAction e, string type) { ItemPerms perms = CommandExtraPerms.Find("WhoIs", 1); Chat.Message(ChatScope.Global, e.FormatMessage("An IP", type), perms, FilterNotItemPerms, true); Chat.Message(ChatScope.Global, e.FormatMessage(e.Target, type), perms, Chat.FilterPerms, true); }
public static void MessageOps(Player p, string message) { LevelPermission rank = CommandExtraPerms.MinPerm("OpChat", LevelPermission.Operator); if (!MessageCmd.CanSpeak(p, "OpChat")) { return; } MessageStaff(p, message, rank, "Ops"); }
public static void MessageAdmins(Player p, string message) { LevelPermission rank = CommandExtraPerms.MinPerm("AdminChat", LevelPermission.Admin); if (!MessageCmd.CanSpeak(p, "AdminChat")) { return; } MessageStaff(p, message, rank, "Admins"); }
public static void LoadAllSettings() { // Unload custom plugins List <Plugin> plugins = new List <Plugin>(Plugin.all); foreach (Plugin p in plugins) { if (Plugin.core.Contains(p)) { continue; } Plugin.Unload(p, false); } ZSGame.Instance.infectMessages = ZSConfig.LoadInfectMessages(); Colors.Load(); Alias.Load(); BlockDefinition.LoadGlobal(); ImagePalette.Load(); SrvProperties.Load(); AuthService.ReloadDefault(); Group.LoadAll(); CommandPerms.Load(); Command.InitAll(); Block.SetBlocks(); AwardsList.Load(); PlayerAwards.Load(); Economy.Load(); WarpList.Global.Filename = "extra/warps.save"; WarpList.Global.Load(); CommandExtraPerms.Load(); ProfanityFilter.Init(); Team.LoadList(); ChatTokens.LoadCustom(); SrvProperties.FixupOldPerms(); CpeExtension.LoadDisabledList(); TextFile announcementsFile = TextFile.Files["Announcements"]; announcementsFile.EnsureExists(); announcements = announcementsFile.GetText(); // Reload custom plugins foreach (Plugin p in plugins) { if (Plugin.core.Contains(p)) { continue; } Plugin.Load(p, false); } OnConfigUpdatedEvent.Call(); }
static void DoUnbanIP(ModAction e) { LevelPermission perm = CommandExtraPerms.MinPerm("whois"); Chat.MessageWhere(e.FormatMessage("An IP", "&8IP unbanned"), pl => pl.Rank < perm); Chat.MessageWhere(e.FormatMessage(e.TargetName, "&8IP unbanned"), pl => pl.Rank >= perm); Logger.Log(LogType.UserActivity, "IP-UNBANNED: {0} by {1}.", e.Target, e.ActorName); Server.bannedIP.Remove(e.Target); Server.bannedIP.Save(); }
protected bool CheckExtraPerm(Player p, int num) { if (HasExtraPerm(p, num)) { return(true); } CommandExtraPerms perms = CommandExtraPerms.Find(name, num); Formatter.MessageNeedMinPerm(p, perms.Description, perms.MinRank); return(false); }
protected bool CheckExtraPerm(Player p, CommandData data, int num) { if (HasExtraPerm(p, data.Rank, num)) { return(true); } CommandExtraPerms perms = CommandExtraPerms.Find(name, num); perms.MessageCannotUse(p); return(false); }
public void Add(Command cmd) { commands.Add(cmd); CommandPerm[] perms = cmd.ExtraPerms; if (!AddOtherPerms || perms == null) { return; } for (int i = 0; i < perms.Length; i++) { CommandExtraPerms.Set(cmd.name, perms[i].Perm, perms[i].Description, i + 1); } }
public static bool CanEditAny(Player p) { if (LevelInfo.IsRealmOwner(p.level, p.name)) { return(true); } ItemPerms perms = CommandExtraPerms.Find("Bot", 1) ?? new ItemPerms(LevelPermission.Operator); if (perms.UsableBy(p.Rank)) { return(true); } return(false); }
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); }
void HandleEnter(Player p, CommandData data) { if (p.IsSuper) { p.Message("{0} cannot enter the review queue.", p.SuperName); return; } TimeSpan delta = p.NextReviewTime - DateTime.UtcNow; if (delta.TotalSeconds >= 0) { p.Message("You must wait {0} before you can request another review", delta.Shorten(true, true)); return; } if (Server.reviewlist.CaselessContains(p.name)) { p.Message("You are already in the review queue!"); return; } bool opsOn = false; Player[] players = PlayerInfo.Online.Items; ItemPerms nextPerms = CommandExtraPerms.Find("Review", 2); foreach (Player pl in players) { if (nextPerms.UsableBy(pl.Rank) && Entities.CanSee(data, p, pl)) { opsOn = true; break; } } Server.reviewlist.Add(p.name); int pos = Server.reviewlist.IndexOf(p.name) + 1; p.Message("You entered the &creview %Squeue at &aposition #" + pos); string msg = opsOn ? "The online staff have been notified. Someone should be with you shortly." : "There are currently no staff online. Staff will be notified when they join the server."; p.Message(msg); Chat.MessageFrom(ChatScope.Perms, p, "λNICK %Srequested a review! &c(Total " + pos + " waiting)", nextPerms, null, true); p.NextReviewTime = DateTime.UtcNow.Add(ServerConfig.ReviewCooldown); }
public static bool CanEditAny(Player p) { if (LevelInfo.IsRealmOwner(p.name, p.level.name)) { return(true); } ItemPerms perms = CommandExtraPerms.Find("EffectSpawner", 1); perms = perms == null ? new ItemPerms(LevelPermission.Operator, null, null) : perms; if (perms.UsableBy(p.Rank)) { return(true); } return(false); }
protected override void UpdatePerms(ItemPerms perms, Player p, string msg) { if (perms is CommandPerms) { CommandPerms.Save(); CommandPerms.ApplyChanges(); Announce(p, perms.ItemName + msg); } else { CommandExtraPerms.Save(); CommandExtraPerms ex = (CommandExtraPerms)perms; //Announce(p, cmd.name + "&S's extra permission " + idx + " was set to " + grp.ColoredName); Announce(p, ex.CmdName + " extra permission #" + ex.Num + msg); } }
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); }
public static void LoadAllSettings() { // Unload custom plugins List <Plugin> plugins = Plugin.all; foreach (Plugin plugin in plugins) { if (Plugin.core.Contains(plugin)) { continue; } plugin.Unload(false); } zombie.LoadInfectMessages(); Colors.LoadList(); Alias.Load(); BlockDefinition.LoadGlobal(); ImagePalette.Load(); SrvProperties.Load(); Group.InitAll(); Command.InitAll(); CommandPerms.Load(); Block.SetBlocks(); BlockDefinition.UpdateGlobalBlockProps(); Awards.Load(); Economy.Load(); WarpList.Global.Filename = "extra/warps.save"; WarpList.Global.Load(); CommandExtraPerms.Load(); ProfanityFilter.Init(); Team.LoadList(); ChatTokens.LoadCustom(); SrvProperties.FixupOldPerms(); // Reload custom plugins foreach (Plugin plugin in plugins) { if (Plugin.core.Contains(plugin)) { continue; } plugin.Load(false); } }
public override void Use(Player p, string message, CommandData data) { string[] args = message.SplitSpaces(3); if (args.Length < 2) { Help(p); return; } string cmdName = args[0], cmdArgs = ""; Command.Search(ref cmdName, ref cmdArgs); Command cmd = Command.Find(cmdName); if (cmd == null) { p.Message("Could not find command entered"); return; } if (!p.CanUse(cmd)) { p.Message("Your rank cannot use this command."); return; } if (args.Length == 2) { CommandPerms perms = CommandPerms.Find(cmd.name); SetPerms(p, args, data, perms, "command"); } else { int num = 0; if (!CommandParser.GetInt(p, args[2], "Extra permission number", ref num)) { return; } CommandExtraPerms perms = CommandExtraPerms.Find(cmd.name, num); if (perms == null) { p.Message("This command has no extra permission by that number."); return; } SetPerms(p, args, data, perms, "extra permission"); } }