public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer unturnedPlayer = (UnturnedPlayer)caller; var jailedPlayer = UnturnedPlayer.FromName(command[0]); if (command.Length < 1) { ChatManager.serverSendMessage($"Incorrect usage of command.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailedPlayer == null) { ChatManager.serverSendMessage($"Player does not exist.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } JailTime jailedTime = new JailTime(); if (!PSRMPoliceUtilities.Instance.JailTimeService.IsPlayerJailed(jailedPlayer.CSteamID.ToString(), out jailedTime)) { return; } if (jailedTime == null) { ChatManager.serverSendMessage($"{jailedPlayer} is not in jail.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } ChatManager.serverSendMessage($"{unturnedPlayer.CharacterName} freed {jailedPlayer.CharacterName} from {jailedTime.JailName}", Color.blue, null, null, EChatMode.GLOBAL, null, true); jailedPlayer.Teleport(new Vector3(PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.x, PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.x, PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.z), 0); PSRMPoliceUtilities.Instance.JailTimeService.RemoveJailedUser(jailedPlayer.CSteamID.ToString()); }
public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer unturnedPlayer = (UnturnedPlayer)caller; var jailedPlayer = UnturnedPlayer.FromName(command[0]); if (command.Length < 1) { ChatManager.serverSendMessage($"Incorrect usage of command.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailedPlayer == null) { ChatManager.serverSendMessage($"Player does not exist.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } JailTime jailedTime = new JailTime(); if (PSRMPoliceUtilities.Instance.JailTimeService.IsPlayerJailed(jailedPlayer.CSteamID.ToString(), out jailedTime)) { if (jailedTime == null) { return; } var jail = PSRMPoliceUtilities.Instance.Configuration.Instance.Jails.FirstOrDefault(x => x.Name == jailedTime.JailName); ChatManager.serverSendMessage($"{jailedPlayer.CharacterName} is in jail for {jailedTime.Reason} at {jail.Name} for {jailedTime.ExpireDate - DateTime.UtcNow}", Color.green, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); } }
public bool IsPlayerJailed(string playerId, out JailTime jail) { if (Database.Data.Exists(x => x.PlayerId == playerId)) { jail = Database.Data.FirstOrDefault(x => x.PlayerId == playerId); return(true); } jail = null; return(false); }
private void OnPlayerDeath(UnturnedPlayer player, EDeathCause cause, ELimb limb, CSteamID murderer) { JailTime jailTime = new JailTime(); if (Instance.JailTimeService.IsPlayerJailed(player.CSteamID.ToString(), out jailTime)) { var jail = Instance.Configuration.Instance.Jails.FirstOrDefault(x => x.Name == jailTime.JailName); Logger.LogWarning($"{player.CharacterName} died while jailed so they were teleported back to their jail"); player.Teleport(new Vector3(jail.X, jail.Y, jail.Z), 0f); } }
public void RegisterJailedUser(string playerId, Jail jail, double time, string reason) { var jailTime = new JailTime() { PlayerId = playerId, JailName = jail.Name, ExpireDate = DateTime.Now.AddSeconds(time), Reason = reason }; Database.AddJailTime(jailTime); JailTimes[playerId] = DateTime.Now.AddSeconds(time); }
public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer unturnedPlayer = (UnturnedPlayer)caller; var jailedPlayer = UnturnedPlayer.FromName(command[0]); if (command[0].Length < 1) { jailedPlayer = unturnedPlayer; } if (jailedPlayer == null) { ChatManager.serverSendMessage($"Player does not exist.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } JailTime jailedTime = new JailTime(); if (!PSRMPoliceUtilities.Instance.JailTimeService.IsPlayerJailed(jailedPlayer.CSteamID.ToString(), out jailedTime)) { return; } if (jailedTime == null) { ChatManager.serverSendMessage($"{jailedPlayer} is not in jail.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } var currentCredits = Uconomy.Instance.Database.GetBalance(jailedPlayer.CSteamID.ToString()); var requiredCredits = PSRMPoliceUtilities.Instance.Configuration.Instance.CreditsPerMinute * (jailedTime.ExpireDate - DateTime.UtcNow).Minutes; if (currentCredits < requiredCredits) { ChatManager.serverSendMessage($"You need {requiredCredits} {Uconomy.Instance.Configuration.Instance.MoneyName}, but you only have {currentCredits} {Uconomy.Instance.Configuration.Instance.MoneyName}!", Color.red, null, null, EChatMode.GLOBAL, null, true); return; } Uconomy.Instance.Database.IncreaseBalance(unturnedPlayer.CSteamID.ToString(), -requiredCredits); ChatManager.serverSendMessage($"You bailed {jailedPlayer.CharacterName} for {requiredCredits} {Uconomy.Instance.Configuration.Instance.DatabaseName}.", Color.red, null, null, EChatMode.GLOBAL, null, true); ChatManager.serverSendMessage($"{unturnedPlayer.CharacterName} bailed {jailedPlayer.CharacterName} from {jailedTime.JailName}", Color.blue, null, null, EChatMode.GLOBAL, null, true); jailedPlayer.Teleport(new Vector3(PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.x, PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.x, PSRMPoliceUtilities.Instance.Configuration.Instance.RelaseLocation.z), 0); PSRMPoliceUtilities.Instance.JailTimesDatabase.Data.Remove(jailedTime); }
private void OnPlayerUpdatePosition(UnturnedPlayer player, Vector3 position) { JailTime jailTime = new JailTime(); if (!Instance.JailTimeService.IsPlayerJailed(player.CSteamID.ToString(), out jailTime)) { return; } var jail = Instance.Configuration.Instance.Jails.FirstOrDefault(x => x.Name == jailTime.JailName); float radius = Vector3.Distance(new Vector3(jail.X, jail.Y, jail.Z), position); if (!(radius > Instance.Configuration.Instance.JailRadius)) { return; } Logger.LogWarning($"{player.CharacterName} tried to get of their jail so they were teleported back."); player.Teleport(new Vector3(jail.X, jail.Y, jail.Z), 0f); }
public void Execute(IRocketPlayer caller, string[] command) { UnturnedPlayer unturnedPlayer = (UnturnedPlayer)caller; var jailedPlayer = UnturnedPlayer.FromName(command[0]); var jailName = PSRMPoliceUtilities.Instance.Configuration.Instance.Jails.FirstOrDefault(x => x.Name.ToLower() == command[1].ToLower()); var jailTime = Convert.ToDouble(command[2]); var jailReason = string.Join(" ", command[3]); if (command.Length <= 1) { ChatManager.serverSendMessage($"Incorrect usage of command.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailedPlayer == null) { ChatManager.serverSendMessage($"Player does not exist.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailedPlayer.IsAdmin || jailedPlayer.HasPermission("ps.policeutilities.jailimmune")) { ChatManager.serverSendMessage($"You cannot jail that player!", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailName == null) { ChatManager.serverSendMessage($"Jail does not exist.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailTime <= 1) { ChatManager.serverSendMessage($"Invalid time in seconds.", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } if (jailReason.Length < 1) { jailReason = "N/A"; } JailTime jailedTime = new JailTime(); if (PSRMPoliceUtilities.Instance.JailTimeService.IsPlayerJailed(jailedPlayer.CSteamID.ToString(), out jailedTime)) { if (jailedTime == null) { return; } var jail = PSRMPoliceUtilities.Instance.Configuration.Instance.Jails.FirstOrDefault(x => x.Name == jailedTime.JailName); ChatManager.serverSendMessage($"{jailedPlayer} is already in jail at {jailedTime.JailName} for {jailedTime.Reason}", Color.red, null, unturnedPlayer.SteamPlayer(), EChatMode.SAY, null, true); return; } PSRMPoliceUtilities.Instance.JailTimeService.RegisterJailedUser(jailedPlayer.CSteamID.ToString(), jailName, jailTime, jailReason); jailedPlayer.Teleport(new Vector3(jailName.X, jailName.Y, jailName.Z), 0f); ChatManager.serverSendMessage($"{unturnedPlayer.CharacterName} jailed {jailedPlayer.CharacterName} for {jailReason} at {jailName.Name} for {jailTime}!", Color.yellow, null, null, EChatMode.GLOBAL, null, true); Logger.LogWarning($"Jailed at {DateTime.Now}"); }
public void RemoveJailTime(JailTime time) { Data.Remove(time); DataStorage.Save(Data); }
public void AddJailTime(JailTime time) { Data.Add(time); DataStorage.Save(Data); }