C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace Oxide.Plugins
{
[Info("Prison", "Janny", "1.0.5")]
public class Prison : CovalencePlugin
{
#region Lang
protected override void LoadDefaultMessages()
{
//English
lang.RegisterMessages(new Dictionary<string, string>
{
["Free"] = "You are free!",
["Offline"] = "Prisoner is offline",
["TimeLeft"] = "Prison time left: ",
["Suicide"] = "You cant suicide while in prison!",
["Argument"] = "Argument missing!",
["Jail"] = "Jail ",
["Created"] = " created!",
["Liberation"] = "liberation point is set!",
["Available"] = "Jails available!",
["DeletedAll"] = "All jails deleted!",
["Deleted"] = " deleted!",
["NotExisting"] = "Jail not existing!",
["Command"] = "Command: /sendjail [player name] [jail name] [minutes]",
["SendJail"] = "You have been send to jail for ",
["Minutes"] = " minute(s)!",
["OfflineOrJail"] = "Player already in jail or offline",
["Input"] = "Wrong input playername or jail",
["FreePoint"] = "liberation point already existing!",
["JailExisting"] = "Jail already exists!",
["occupied"] = "Jail is occupied!",
["Positive"] = "Only positive numbers",
["NumbersOnly"] = "Input only numbers",
["SendToJail"] = "Player has been send to jail",
["NotCuffed"] = "Player is not Handcuffed",
}, this);
//German
lang.RegisterMessages(new Dictionary<string, string>
{
["Free"] = "Du bist frei!",
["Offline"] = "Gefangener ist offline",
["TimeLeft"] = "Gefängnis Zeit übrig: ",
["Suicide"] = "Du kannst im Gefängnis kein Selbstmord begehen!",
["Argument"] = "Argument fehlt!",
["Jail"] = "Gefängnis ",
["Created"] = " erstellt!",
["Liberation"] = "Befreiungspunkt wurde gesetzt!",
["Available"] = "Gefängnisse verfügbar!",
["DeletedAll"] = "Alle Gefängnisse gelöscht!",
["Deleted"] = " gelöscht!",
["NotExisting"] = "Gefängnis nicht vorhanden!",
["Command"] = "Command: /sendjail [Spieler Name] [Gefängnis Name] [Minuten]",
["SendJail"] = "Du wurdest ins Gefängnis geschickt für ",
["Minutes"] = " Minute(n)!",
["OfflineOrJail"] = "Der Spieler ist offline oder schon im Gefängnis",
["Input"] = "Falsche Eingabe Spieler Name oder Gefängnis Name",
["FreePoint"] = "Befreiungspunkt bereits vorhanden!",
["JailExisting"] = "Das Gefängnis existiert bereits",
["occupied"] = "Gefängnis ist besetzt!",
["Positive"] = "Nur positive Zahlen",
["NumbersOnly"] = "Nur Zahlen eingeben",
["SendToJail"] = "Spieler wurde ins Gefängnis geschickt",
["NotCuffed"] = "Spieler is nicht in Handschellen",
}, this, "de");
}
#endregion
#region Init
[PluginReference] Plugin LockMeUp;
char[] separators = new char[] { ',' };
char[] trim = new char[] { '(', ')' };
ArrayList Prisoners = new ArrayList();
public Dictionary<string, string> Jail = new Dictionary<string, string>();
List<Item> collect = new List<Item>();
public Dictionary<ulong, Timer> CraftTimer = new Dictionary<ulong, Timer>();
public string fx = "assets/bundled/prefabs/fx/notice/item.select.fx.prefab";
private static string perm = "prison.use";
#endregion
#region Data
DynamicConfigFile dataFile;
class DynamicConfigFile
{
public Dictionary<string, string> jails = new Dictionary<string, string>();
}
private Configuration config;
protected override void LoadConfig()
{
base.LoadConfig();
config = Config.ReadObject<Configuration>();
SaveConfig();
}
protected override void LoadDefaultConfig()
{
config = Configuration.CreateConfig();
}
protected override void SaveConfig() => Config.WriteObject(config);
class Configuration
{
[JsonProperty("Use_LockMeUp_Only_Send_To_Jail_If_Player_Handcuffed")]
public bool useLockMeUp { get; set; }
public static Configuration CreateConfig()
{
return new Configuration
{
useLockMeUp = false,
};
}
}
#endregion
#region Hooks
void Init()
{
LoadConfig();
LoadDefaultMessages();
permission.RegisterPermission(perm, this);
}
void Loaded()
{
dataFile = Interface.Oxide.DataFileSystem.ReadObject<DynamicConfigFile>("Prison");
Interface.Oxide.DataFileSystem.WriteObject("Prison", dataFile);
foreach (var data in dataFile.jails)
{
if(data.Key == "free")
{
}
else
{
Jail.Add(data.Key, "(free)");
}
}
}
void SaveData()
{
Interface.Oxide.DataFileSystem.WriteObject("Prison", dataFile);
}
void Unload()
{
SaveData();
foreach (var player in BasePlayer.activePlayerList)
{
CuiHelper.DestroyUi(player, "panel");
CuiHelper.DestroyUi(player, "counter");
DestroyTimer(player.userID);
}
}
object OnEntityTakeDamage(BaseCombatEntity entity, HitInfo info)
{
var player = entity.ToPlayer();
if(player)
{
if (Prisoners.Contains(player.UserIDString.ToLower()))
{
info.damageTypes.ScaleAll(0);
return false;
}
else
{
return null;
}
}
return null;
}
#endregion
#region Commands
[Command("jail")]
private void OpenPanelJail(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
var bplayer = (BasePlayer)player.Object;
PrisonPanel(bplayer);
}
}
[Command("setjail")]
private void SetJail(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (args.Length == 0)
{
player.Reply(lang.GetMessage("Argument", this));
}
else if (!Jail.Keys.Contains(args[0]))
{
player.Reply(lang.GetMessage("Jail", this) + args[0] + lang.GetMessage("Created", this));
dataFile.jails.Add(args[0], player.Position().ToString());
Jail.Add(args[0], "(free)");
SaveData();
}
else
{
player.Reply(lang.GetMessage("JailExisting", this));
}
}
}
[Command("setfree")]
private void SetFree(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (dataFile.jails.Keys.Contains("free"))
{
player.Reply(lang.GetMessage("FreePoint", this));
}
else
{
player.Reply(lang.GetMessage("Liberation", this));
dataFile.jails.Add("free", player.Position().ToString());
SaveData();
}
}
}
[Command("getjail")]
private void GetJail(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
var jailList = string.Join("\n", Jail.ToArray()).Replace("[", "").Replace("]", "");
player.Reply(lang.GetMessage("Available", this) + "\n--------------------\n" + jailList + "\n--------------------");
}
}
[Command("deljail")]
private void DeletJail(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (args.Length == 0)
{
player.Reply(lang.GetMessage("Argument", this));
}
else if (args[0].Equals("all", StringComparison.OrdinalIgnoreCase))
{
dataFile.jails.Clear();
Jail.Clear();
SaveData();
player.Reply(lang.GetMessage("DeletedAll", this));
}
else
{
try
{
player.Reply(lang.GetMessage("Jail", this) + args[0] + lang.GetMessage("Deleted", this));
dataFile.jails.Remove(args[0]);
Jail.Remove(args[0]);
SaveData();
}
catch
{
player.Reply(lang.GetMessage("NotExisting", this));
}
}
}
}
[Command("sendjail")]
private void SendJail(IPlayer player, string command, string[] args)
{
if (config.useLockMeUp == true)
{
var dplayer = (BasePlayer)player.Object;
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (args.Length != 3)
{
player.Reply(lang.GetMessage("Argument", this) + "\n");
player.Reply(lang.GetMessage("Command", this));
}
else
{
try
{
float newtime = float.Parse(args[2]);
if (newtime > 0)
{
string value;
string idstring = "";
Jail.TryGetValue(args[1], out value);
foreach(var players in BasePlayer.activePlayerList)
{
if (players.displayName.Equals(args[0], StringComparison.OrdinalIgnoreCase))
{
idstring = players.UserIDString;
}
}
if (!Prisoners.Contains(idstring.ToLower()) && CheckIfOnline(idstring) == true)
{
if (value == "(free)")
{
var tshirt = global::ItemManager.FindItemDefinition("tshirt.long");
var pants = global::ItemManager.FindItemDefinition("pants");
string playerName = args[0];
string JailName = args[1];
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.displayName.Equals(playerName, StringComparison.OrdinalIgnoreCase))
{
if ((Boolean)LockMeUp?.Call("IsRestrained", dplayer) == true)
{
LockMeUp?.Call("UnRestrainPlayer", bplayer);
Jail.Remove(JailName);
Jail.Add(JailName, "(" + bplayer.displayName + ")");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("SendJail", this) + args[2] + lang.GetMessage("Minutes", this));
bplayer.inventory.containerWear.SetLocked(true);
bplayer.inventory.containerMain.SetLocked(true);
bplayer.inventory.containerBelt.SetLocked(true);
bplayer.inventory.containerBelt.capacity = 0;
bplayer.inventory.containerWear.AddItem(tshirt, 1, 2354721675);
bplayer.inventory.containerWear.AddItem(pants, 1, 2354729871);
Prisoners.Add(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
var craftTime = newtime * 60f;
var time = 0;
if (CraftTimer.ContainsKey(bplayer.userID)) CraftTimer.Remove(bplayer.userID);
panel(bplayer);
var newTime = craftTime - time;
counter(bplayer, convertTime(newTime));
CraftTimer.Add(bplayer.userID, timer.Every(1f, () =>
{
time++;
var timeNew = craftTime - time;
counter(bplayer, convertTime(timeNew));
if (time >= craftTime)
{
CuiHelper.DestroyUi(bplayer, "panel");
CuiHelper.DestroyUi(bplayer, "counter");
freejailautom(playerName, "free", JailName);
DestroyTimer(bplayer.userID);
}
}));
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NotCuffed");
player.Reply(lang.GetMessage("NotCuffed", this));
}
}
}
}
else
{
player.Reply(lang.GetMessage("occupied", this));
}
}
else
{
player.Reply(lang.GetMessage("OfflineOrJail", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "Positive");
player.Reply(lang.GetMessage("Positive", this));
}
}
catch
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NumbersOnly");
player.Reply(lang.GetMessage("NumbersOnly", this));
}
}
}
}
else
{
var dplayer = (BasePlayer)player.Object;
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (args.Length != 3)
{
player.Reply(lang.GetMessage("Argument", this) + "\n");
player.Reply(lang.GetMessage("Command", this));
}
else
{
try
{
float newtime = float.Parse(args[2]);
if (newtime > 0)
{
string value;
string idstring = "";
Jail.TryGetValue(args[1], out value);
foreach (var players in BasePlayer.activePlayerList)
{
if (players.displayName.Equals(args[0], StringComparison.OrdinalIgnoreCase))
{
idstring = players.UserIDString;
}
}
if (!Prisoners.Contains(idstring.ToLower()) && CheckIfOnline(idstring) == true)
{
if (value == "(free)")
{
var tshirt = global::ItemManager.FindItemDefinition("tshirt.long");
var pants = global::ItemManager.FindItemDefinition("pants");
string playerName = args[0];
string JailName = args[1];
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.displayName.Equals(playerName, StringComparison.OrdinalIgnoreCase))
{
Jail.Remove(JailName);
Jail.Add(JailName, "(" + bplayer.displayName + ")");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("SendJail", this) + args[2] + lang.GetMessage("Minutes", this));
bplayer.inventory.containerWear.SetLocked(true);
bplayer.inventory.containerMain.SetLocked(true);
bplayer.inventory.containerBelt.SetLocked(true);
bplayer.inventory.containerBelt.capacity = 0;
bplayer.inventory.containerWear.AddItem(tshirt, 1, 2354721675);
bplayer.inventory.containerWear.AddItem(pants, 1, 2354729871);
Prisoners.Add(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
var craftTime = newtime * 60f;
var time = 0;
if (CraftTimer.ContainsKey(bplayer.userID)) CraftTimer.Remove(bplayer.userID);
panel(bplayer);
var newTime = craftTime - time;
counter(bplayer, convertTime(newTime));
CraftTimer.Add(bplayer.userID, timer.Every(1f, () =>
{
time++;
var timeNew = craftTime - time;
counter(bplayer, convertTime(timeNew));
if (time >= craftTime)
{
CuiHelper.DestroyUi(bplayer, "panel");
CuiHelper.DestroyUi(bplayer, "counter");
freejailautom(playerName, "free", JailName);
DestroyTimer(bplayer.userID);
}
}));
}
}
}
else
{
player.Reply(lang.GetMessage("occupied", this));
}
}
else
{
player.Reply(lang.GetMessage("OfflineOrJail", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "Positive");
player.Reply(lang.GetMessage("Positive", this));
}
}
catch
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NumbersOnly");
player.Reply(lang.GetMessage("NumbersOnly", this));
}
}
}
}
}
[Command("freejail")]
private void FreeJail(IPlayer player, string command, string[] args)
{
if (permission.UserHasPermission(player.Id.ToString(), perm))
{
if (args.Length != 1)
{
player.Reply(lang.GetMessage("Argument", this));
}
else
{
try
{
string jailCell = args[0];
string JailName = "free";
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
string name;
Jail.TryGetValue(jailCell, out name);
string trimmedName = name.Trim(trim);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.displayName.Equals(trimmedName, StringComparison.OrdinalIgnoreCase))
{
Jail.Remove(args[0]);
Jail.Add(args[0], "(free)");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("Free", this));
bplayer.inventory.containerWear.SetLocked(false);
bplayer.inventory.containerMain.SetLocked(false);
bplayer.inventory.containerBelt.SetLocked(false);
bplayer.inventory.containerWear.Take(collect, 935692442, 1);
bplayer.inventory.containerWear.Take(collect, 237239288, 1);
collect.Clear();
bplayer.inventory.containerBelt.capacity = 6;
Prisoners.Remove(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
CuiHelper.DestroyUi(bplayer, "panel");
CuiHelper.DestroyUi(bplayer, "counter");
DestroyTimer(bplayer.userID);
}
}
}
catch
{
player.Reply(lang.GetMessage("Input", this));
}
}
}
}
[Command("prison.GetName")]
private void GetName(IPlayer player, string command, string[] args)
{
var bplayer = (BasePlayer)player.Object;
if (bplayer == null || args == null) return;
switch (args[0])
{
case "openpanel2":
CuiHelper.DestroyUi(bplayer, "PrisonPanel");
PrisonPanel2(bplayer, args[1]);
break;
case "openpanel3":
CuiHelper.DestroyUi(bplayer, "PrisonPanel2");
PrisonPanel3(bplayer, args[1], args[2]);
break;
case "Send":
SendJailAutom(player, args[1], args[2], args[3]);
CuiHelper.DestroyUi(bplayer, "PrisonPanel3");
break;
}
}
#endregion
#region Functions
private void SendJailAutom(IPlayer player, string name, string jail, string timecount)
{
if(config.useLockMeUp == true)
{
var dplayer = (BasePlayer)player.Object;
string value;
Jail.TryGetValue(jail, out value);
try
{
float newtime = float.Parse(timecount);
if (newtime > 0)
{
if (!Prisoners.Contains(name.ToLower()) && CheckIfOnline(name) == true)
{
if (value == "(free)")
{
var tshirt = global::ItemManager.FindItemDefinition("tshirt.long");
var pants = global::ItemManager.FindItemDefinition("pants");
string playerName = name;
string JailName = jail;
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.UserIDString.Equals(playerName, StringComparison.OrdinalIgnoreCase))
{
if ((Boolean)LockMeUp?.Call("IsRestrained", bplayer) == true)
{
LockMeUp?.Call("UnRestrainPlayer", bplayer);
Jail.Remove(JailName);
Jail.Add(JailName, "(" + bplayer.displayName + ")");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("SendJail", this) + timecount + lang.GetMessage("Minutes", this));
bplayer.inventory.containerWear.SetLocked(true);
bplayer.inventory.containerMain.SetLocked(true);
bplayer.inventory.containerBelt.SetLocked(true);
bplayer.inventory.containerBelt.capacity = 0;
bplayer.inventory.containerWear.AddItem(tshirt, 1, 2354721675);
bplayer.inventory.containerWear.AddItem(pants, 1, 2354729871);
Prisoners.Add(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
var craftTime = newtime * 60f;
var time = 0;
if (CraftTimer.ContainsKey(bplayer.userID)) CraftTimer.Remove(bplayer.userID);
panel(bplayer);
var newTime = craftTime - time;
counter(bplayer, convertTime(newTime));
CraftTimer.Add(bplayer.userID, timer.Every(1f, () =>
{
time++;
var timeNew = craftTime - time;
counter(bplayer, convertTime(timeNew));
if (time >= craftTime)
{
CuiHelper.DestroyUi(bplayer, "panel");
CuiHelper.DestroyUi(bplayer, "counter");
freejailautom(playerName, "free", JailName);
DestroyTimer(bplayer.userID);
}
}));
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NotCuffed");
player.Reply(lang.GetMessage("NotCuffed", this));
}
}
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "occupied");
player.Reply(lang.GetMessage("occupied", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "OfflineOrJail");
player.Reply(lang.GetMessage("OfflineOrJail", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "Positive");
player.Reply(lang.GetMessage("Positive", this));
}
}
catch
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NumbersOnly");
player.Reply(lang.GetMessage("NumbersOnly", this));
}
}
else
{
var dplayer = (BasePlayer)player.Object;
string value;
Jail.TryGetValue(jail, out value);
try
{
float newtime = float.Parse(timecount);
if (newtime > 0)
{
if (!Prisoners.Contains(name.ToLower()) && CheckIfOnline(name) == true)
{
if (value == "(free)")
{
var tshirt = global::ItemManager.FindItemDefinition("tshirt.long");
var pants = global::ItemManager.FindItemDefinition("pants");
string playerName = name;
string JailName = jail;
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.UserIDString.Equals(playerName, StringComparison.OrdinalIgnoreCase))
{
Jail.Remove(JailName);
Jail.Add(JailName, "(" + bplayer.displayName + ")");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("SendJail", this) + timecount + lang.GetMessage("Minutes", this));
bplayer.inventory.containerWear.SetLocked(true);
bplayer.inventory.containerMain.SetLocked(true);
bplayer.inventory.containerBelt.SetLocked(true);
bplayer.inventory.containerBelt.capacity = 0;
bplayer.inventory.containerWear.AddItem(tshirt, 1, 2354721675);
bplayer.inventory.containerWear.AddItem(pants, 1, 2354729871);
Prisoners.Add(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
var craftTime = newtime * 60f;
var time = 0;
if (CraftTimer.ContainsKey(bplayer.userID)) CraftTimer.Remove(bplayer.userID);
panel(bplayer);
var newTime = craftTime - time;
counter(bplayer, convertTime(newTime));
CraftTimer.Add(bplayer.userID, timer.Every(1f, () =>
{
time++;
var timeNew = craftTime - time;
counter(bplayer, convertTime(timeNew));
if (time >= craftTime)
{
CuiHelper.DestroyUi(bplayer, "panel");
CuiHelper.DestroyUi(bplayer, "counter");
freejailautom(playerName, "free", JailName);
DestroyTimer(bplayer.userID);
}
}));
}
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "occupied");
player.Reply(lang.GetMessage("occupied", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "OfflineOrJail");
player.Reply(lang.GetMessage("OfflineOrJail", this));
}
}
else
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "Positive");
player.Reply(lang.GetMessage("Positive", this));
}
}
catch
{
RunEffect(dplayer.transform.position, fx, dplayer);
InfoPanel(dplayer, "NumbersOnly");
player.Reply(lang.GetMessage("NumbersOnly", this));
}
}
}
private static void RunEffect(Vector3 position, string prefab, BasePlayer player = null)
{
var effect = new Effect();
effect.Init(Effect.Type.Generic, position, Vector3.zero);
effect.pooledString = prefab;
if (player != null)
{
EffectNetwork.Send(effect, player.net.connection);
}
else
{
EffectNetwork.Send(effect);
}
}
private string convertTime(float totalSeconds)
{
TimeSpan time = TimeSpan.FromSeconds(totalSeconds);
var newTime = time.ToString("hh':'mm':'ss");
return newTime;
}
private bool CheckIfOnline(string playername)
{
bool online = false;
foreach (var onlineplayer in BasePlayer.activePlayerList)
{
if (onlineplayer.UserIDString.Equals(playername, StringComparison.OrdinalIgnoreCase))
{
online = true;
}
}
return online;
}
void DestroyTimer(ulong id)
{
if (CraftTimer.ContainsKey(id))
{
if (!CraftTimer[id].Destroyed) CraftTimer[id].Destroy();
CraftTimer.Remove(id);
}
}
private void freejailautom(string playerName, string JailName, string freeJail)
{
if (CheckIfOnline(playerName) == true)
{
var Position = dataFile.jails[JailName];
var PositionNew1 = Position.ToString().Trim(trim);
var PositionNew2 = PositionNew1.Split(separators);
float x = float.Parse(PositionNew2[0], CultureInfo.InvariantCulture.NumberFormat);
float y = float.Parse(PositionNew2[1], CultureInfo.InvariantCulture.NumberFormat);
float z = float.Parse(PositionNew2[2], CultureInfo.InvariantCulture.NumberFormat);
foreach (var bplayer in BasePlayer.activePlayerList)
{
if (bplayer.UserIDString.Equals(playerName, StringComparison.OrdinalIgnoreCase))
{
Jail.Remove(freeJail);
Jail.Add(freeJail, "(free)");
var cplayer = bplayer.IPlayer;
bplayer.ChatMessage(lang.GetMessage("Free", this));
bplayer.inventory.containerWear.SetLocked(false);
bplayer.inventory.containerMain.SetLocked(false);
bplayer.inventory.containerBelt.SetLocked(false);
bplayer.inventory.containerWear.Take(collect, 935692442, 1);
bplayer.inventory.containerWear.Take(collect, 237239288, 1);
collect.Clear();
bplayer.inventory.containerBelt.capacity = 6;
Prisoners.Remove(bplayer.UserIDString.ToLower());
cplayer.Teleport(x, y, z);
}
}
}
else
{
Puts(lang.GetMessage("Offline", this));
}
}
#endregion
#region UI
void panel(BasePlayer player)
{
var container = new CuiElementContainer();
container.Add(new CuiPanel
{
CursorEnabled = false,
Image = { Color = "0 0 0 0" },
RectTransform = { AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-114.858 -279.428", OffsetMax = "115.552 -248.572" }
}, "Overlay", "panel");
container.Add(new CuiPanel
{
CursorEnabled = false,
FadeOut = 1,
Image = { Color = "0 0 0 0.5", Material = "assets/content/ui/uibackgroundblur.mat" },
RectTransform = { AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-115.206 -15.428", OffsetMax = "115.204 15.428" }
}, "panel", "PanelBack");
CuiHelper.DestroyUi(player, "panel");
CuiHelper.AddUi(player, container);
}
void counter(BasePlayer player, string timeleft)
{
var container = new CuiElementContainer();
container.Add(new CuiElement
{
Name = "counter",
Parent = "panel",
Components = {
new CuiTextComponent { Text = lang.GetMessage("TimeLeft",this) + "<color=orange>"+timeleft+"</color>", Font = "robotocondensed-bold.ttf", FontSize = 17, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1" },
new CuiOutlineComponent { Color = "0 0 0 0.5", Distance = "1 -1" },
new CuiRectTransformComponent { AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-115.206 -15.428", OffsetMax = "115.204 15.428" }
}
});
CuiHelper.DestroyUi(player, "counter");
CuiHelper.AddUi(player, container);
}
void PrisonPanel(BasePlayer player)
{
CuiHelper.DestroyUi(player, "PrisonPanel2");
CuiHelper.DestroyUi(player, "PrisonPanel3");
var container = new CuiElementContainer();
container.Add(new CuiPanel
{
CursorEnabled = true,
Image = { Color = "0 0 0 0.85", Material = "assets/content/ui/uibackgroundblur-ingamemenu.mat" },
RectTransform = { AnchorMin = "0 0", AnchorMax = "1 1"}
}
// ... [Code preview truncated due to length. Full source in attached file] ...