public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits) { if (!splits[0].Equals("/jailtime")) { return(false); } if (!JailManager.IsPlayerJailed(causedBy)) { Chat.Send(causedBy, "You are not jailed - free to move!"); return(true); } long remainTime = JailManager.getRemainingTime(causedBy); if (remainTime > 60) { Chat.Send(causedBy, String.Format("Remaining Jail Time: {0}:{1:D2} Minutes", remainTime / 60, remainTime % 60)); } else { Chat.Send(causedBy, $"Remaining Jail Time: {remainTime} Seconds"); } return(true); }
public static void AfterWorldLoad() { Load(); JailManager.Load(); WaypointManager.Load(); // StatisticManager.Load(); // StatisticManager.TrackItems(); }
public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits) { if (!splits[0].Equals("/jail")) { return(false); } if (!PermissionsManager.CheckAndWarnPermission(causedBy, AntiGrief.MOD_PREFIX + "jail")) { return(true); } var m = Regex.Match(chattext, @"/jail (?<player>['].+[']|[^ ]+) (?<jailtime>[0-9]+)? ?(?<reason>.+)$"); if (!m.Success) { Chat.Send(causedBy, "Syntax error, use /jail <player> [time] <reason>"); return(true); } Players.Player target; string targetName = m.Groups["player"].Value; string error; if (!PlayerHelper.TryGetPlayer(targetName, out target, out error, true)) { Chat.Send(causedBy, $"Could not find player {targetName}: {error}"); return(true); } uint jailtime = 0; var timeval = m.Groups["jailtime"].Value; if (timeval.Equals("")) { jailtime = JailManager.DEFAULT_JAIL_TIME; } else { if (!uint.TryParse(timeval, out jailtime)) { Chat.Send(causedBy, $"Could not identify time value {timeval}"); } } string reason = m.Groups["reason"].Value; if (JailManager.IsPlayerJailed(target)) { Chat.Send(causedBy, $"{target.Name} is already in jail."); return(true); } JailManager.jailPlayer(target, causedBy, reason, jailtime); Chat.Send(causedBy, $"Threw {target.Name} into the jail for {jailtime} minutes"); return(true); }
public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits) { if (!splits[0].Equals("/jailvisit")) { return(false); } if (!JailManager.validVisitorPos) { Chat.Send(causedBy, "Found no valid jail visitor position"); return(true); } JailManager.VisitJail(causedBy); return(true); }
public static void OnNPCHit(NPC.NPCBase npc, ModLoader.OnHitData data) { if (!IsKilled(npc, data) || !IsHitByPlayer(data.HitSourceType) || !(data.HitSourceObject is Players.Player)) { return; } Players.Player killer = (Players.Player)data.HitSourceObject; foreach (Players.Player owner in npc.Colony.Owners) { if (owner == killer) { return; } } int kills; if (!KillCounter.TryGetValue(killer, out kills)) { kills = 0; } KillCounter[killer] = ++kills; if (NpcKillsBanThreshold > 0 && kills >= NpcKillsBanThreshold) { Chat.SendToConnected($"{killer.Name} banned for killing too many colonists"); BlackAndWhitelisting.AddBlackList(killer.ID.steamID.m_SteamID); Players.Disconnect(killer); } else if (NpcKillsKickThreshold > 0 && kills >= NpcKillsKickThreshold) { Chat.SendToConnected($"{killer.Name} kicked for killing too many colonists"); Players.Disconnect(killer); } else if (NpcKillsJailThreshold > 0 && kills >= NpcKillsJailThreshold) { Chat.SendToConnected($"{killer.Name} put in Jail for killing too many colonists"); JailManager.jailPlayer(killer, null, "Killing Colonists", JailManager.DEFAULT_JAIL_TIME); } Log.Write($"{killer.Name} killed a colonist of {npc.Colony.ColonyID} at {npc.Position}"); int remainingJail = NpcKillsJailThreshold - kills; int remainingKick = NpcKillsKickThreshold - kills; Chat.Send(killer, $"You killed a colonist, remaining until jail: {remainingJail}, remaining until kick: {remainingKick}"); }
public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits) { if (!splits[0].Equals("/jailrelease")) { return(false); } if (!PermissionsManager.CheckAndWarnPermission(causedBy, AntiGrief.MOD_PREFIX + "jail")) { return(true); } var m = Regex.Match(chattext, @"/jailrelease (?<player>.+)"); if (!m.Success) { Chat.Send(causedBy, "Syntax error, use /jailrelease <player>"); return(true); } Players.Player target; string targetName = m.Groups["player"].Value; string error; if (!PlayerHelper.TryGetPlayer(targetName, out target, out error, true)) { Chat.Send(causedBy, $"Could not find player {targetName}: {error}"); return(true); } if (!JailManager.IsPlayerJailed(target)) { Chat.Send(causedBy, $"{target.Name} is currently not in jail"); return(true); } JailManager.releasePlayer(target, causedBy); Chat.Send(causedBy, $"Released {target.Name} from jail"); Chat.Send(target, $"<color=yellow>{causedBy.Name} released you from jail</color>"); return(true); }
public bool TryDoCommand(Players.Player causedBy, string chattext, List <string> splits) { if (!splits[0].Equals("/setjail")) { return(false); } if (!PermissionsManager.CheckAndWarnPermission(causedBy, AntiGrief.MOD_PREFIX + "setjailposition")) { return(true); } if (chattext.Equals("/setjail visitor")) { JailManager.setJailVisitorPosition(causedBy.Position); Chat.Send(causedBy, "Jail visiting position set"); return(true); } var m = Regex.Match(chattext, @"/setjail (?<range>[0-9]+)"); if (m.Success) { uint range = 0; if (!uint.TryParse(m.Groups["range"].Value, out range)) { Chat.Send(causedBy, "Could not parse range value"); } JailManager.setJailPosition(causedBy, range); Chat.Send(causedBy, $"Jail set to your current position with range {range}"); } else { JailManager.setJailPosition(causedBy); Chat.Send(causedBy, $"Jail set to your current position and default range {JailManager.DEFAULT_RANGE}"); } return(true); }