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);
        }
Exemplo n.º 2
0
 public static void AfterWorldLoad()
 {
     Load();
     JailManager.Load();
     WaypointManager.Load();
     // StatisticManager.Load();
     // StatisticManager.TrackItems();
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
        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);
        }