Иконка ресурса

FREE Prison : 1.0.7 1.0.7

Нет прав для скачивания
C#:
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.7")]
    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 ", ["delLiberation"] = "Liberation point ", ["Created"] = " created!", ["Liberation"] = "liberation point is set!", ["Available"] = "Jails available!", ["lib"] = "Liberation points available!", ["DeletedAll"] = "All jails deleted!", ["Deleted"] = " deleted!", ["NotExisting"] = "Jail not existing!", ["libNotExisting"] = "Liberation point 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", ["associated"] = "\nand all associated jails to this liberation point", ["NotCuffed"] = "Player is not Handcuffed", ["DeletedAlllib"] = "Deleted all liberation points!", ["->"] = "->", ["<-"] = "<-",
            }
            , 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 ", ["delLiberation"] = "Befreiungspunkt ", ["Created"] = " erstellt!", ["associated"] = "\nund alle mit diesem Befreiungspunkt verbundenen Gefängnisse", ["libNotExisting"] = "Befreiungspunkt nicht vorhanden!", ["Liberation"] = "Befreiungspunkt wurde gesetzt!", ["Available"] = "Gefängnisse verfügbar!", ["lib"] = "Befreiungspunkte verfügbar!", ["DeletedAll"] = "Alle Gefängnisse gelöscht!", ["DeletedAlllib"] = "Alle Befreiungspunkte 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>();
            public Dictionary<string, string> cellLiberationPoint = new Dictionary<string, string>();
            public Dictionary<string, string> liberationPoints = 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);
                if (player.inventory.containerMain.IsLocked()) {
                    player.inventory.containerWear.SetLocked(false);
                    player.inventory.containerMain.SetLocked(false);
                    player.inventory.containerBelt.SetLocked(false);
                    player.inventory.containerWear.Take(collect, 935692442, 1);
                    player.inventory.containerWear.Take(collect, 237239288, 1);
                    player.inventory.containerBelt.capacity = 6;
                    collect.Clear();
                }
            }
        }
        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 == 2) {
                    if (!Jail.Keys.Contains(args[0])) {
                        if (dataFile.liberationPoints.ContainsKey(args[1])) {
                            player.Reply(lang.GetMessage("Jail", this) + args[0] + lang.GetMessage("Created", this));
                            dataFile.jails.Add(args[0], player.Position().ToString());
                            dataFile.cellLiberationPoint.Add(args[0], args[1]);
                            Jail.Add(args[0], "(free)");
                            SaveData();
                        }
                        else {
                            player.Reply(lang.GetMessage("libNotExisting", this));
                        }
                    }
                    else {
                        player.Reply(lang.GetMessage("JailExisting", this));
                    }
                }
                else {
                    player.Reply(lang.GetMessage("Argument", this));
                }
            }
        }
        [Command("setfree")]
        private void SetFree(IPlayer player, string command, string[] args) {
            if (permission.UserHasPermission(player.Id.ToString(), perm)) {
                if(args.Length == 1) {
                    if (dataFile.liberationPoints.Keys.Contains(args[0])) {
                        player.Reply(lang.GetMessage("FreePoint", this));
                    }
                    else {
                        player.Reply(lang.GetMessage("Liberation", this));
                        dataFile.liberationPoints.Add(args[0], player.Position().ToString());
                        SaveData();
                    }
                }
                else {
                    player.Reply(lang.GetMessage("Argument", this));
                }
            }
        }
        [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("getliberation")]
        private void GetLiberationPoint(IPlayer player, string command, string[] args) {
            if (permission.UserHasPermission(player.Id.ToString(), perm)) {
                var jailList = string.Join("\n", dataFile.liberationPoints.ToArray()).Replace("[", "").Replace("]", "");
                player.Reply(lang.GetMessage("lib", 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 == 1) {
                    if (args[0].Equals("all", StringComparison.OrdinalIgnoreCase)) {
                        dataFile.jails.Clear();
                        dataFile.cellLiberationPoint.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]);
                            dataFile.cellLiberationPoint.Remove(args[0]);
                            Jail.Remove(args[0]);
                            SaveData();
                        }
                        catch {
                            player.Reply(lang.GetMessage("NotExisting", this));
                        }
                    }
                }
                else {
                    player.Reply(lang.GetMessage("Argument", this));
                }
            }
        }
        [Command("delliberation")]
        private void DeletLiberationPoint(IPlayer player, string command, string[] args) {
            if (permission.UserHasPermission(player.Id.ToString(), perm)) {
                if (args.Length == 1) {
                    if (args[0].Equals("all", StringComparison.OrdinalIgnoreCase)) {
                        dataFile.liberationPoints.Clear();
                        dataFile.jails.Clear();
                        Jail.Clear();
                        dataFile.cellLiberationPoint.Clear();
                        SaveData();
                        player.Reply(lang.GetMessage("DeletedAlllib", this) + lang.GetMessage("associated", this));
                    }
                    else {
                        if (dataFile.liberationPoints.ContainsKey(args[0])) {
                            dataFile.liberationPoints.Remove(args[0]);
                            try {
                                foreach (KeyValuePair<string, string> cell in dataFile.cellLiberationPoint) {
                                    if (cell.Value.Equals(args[0])) {
                                        dataFile.jails.Remove(cell.Key);
                                        Jail.Remove(cell.Key);
                                        dataFile.cellLiberationPoint.Remove(cell.Key);
                                    }
                                }
                            }
                            catch {
                            }
                            player.Reply(lang.GetMessage("delLiberation", this) + args[0] + lang.GetMessage("Deleted", this) + lang.GetMessage("associated", this));
                            SaveData();
                        }
                        else {
                            player.Reply(lang.GetMessage("libNotExisting", this));
                        }
                    }
                }
                else {
                    player.Reply(lang.GetMessage("Argument", 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];
                        var liberation = dataFile.cellLiberationPoint[jailCell];
                        var Position = dataFile.liberationPoints[liberation];
                        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.allPlayerList) {
                            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;
            }
        }
        [Command("PM.TogglePlayerGroup")]
        private void PMTogglePlayerGroup(IPlayer player, string command, string[] args) {
            var bplayer = (BasePlayer)player.Object;
            if (bplayer == null || args == null) return;
            int page = Convert.ToInt16(args[0]);
            CuiHelper.DestroyUi(bplayer, "PrisonPanel");
            PrisonPanel(bplayer, page);
        }
        [Command("PM.ToggleCellGroud")]
        private void ToggleCellGroud(IPlayer player, string command, string[] args) {
            var bplayer = (BasePlayer)player.Object;
            if (bplayer == null || args == null) return;
            int page = Convert.ToInt16(args[1]);
            CuiHelper.DestroyUi(bplayer, "PrisonPanel2");
            PrisonPanel2(bplayer, args[0] , page);
        }
#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) {
                                                    string liberationPoint;
                                                    dataFile.cellLiberationPoint.TryGetValue(JailName, out liberationPoint);
                                                    CuiHelper.DestroyUi(bplayer, "panel");
                                                    CuiHelper.DestroyUi(bplayer, "counter");
                                                    freejailautom(playerName, liberationPoint, 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) {
                                                string liberationPoint;
                                                dataFile.cellLiberationPoint.TryGetValue(JailName, out liberationPoint);
                                                CuiHelper.DestroyUi(bplayer, "panel");
                                                CuiHelper.DestroyUi(bplayer, "counter");
                                                freejailautom(playerName, liberationPoint, 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) {
            var Position = dataFile.liberationPoints[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.allPlayerList) {
                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.containerBelt.capacity = 6;
                    bplayer.inventory.containerWear.Take(collect, 935692442, 1);
                    bplayer.inventory.containerWear.Take(collect, 237239288, 1);
                    collect.Clear();
                    Prisoners.Remove(bplayer.UserIDString.ToLower());
                    cplayer.Teleport(x, y, z);
                    Puts(playerName + "befreit");
                }
            }
        }
#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, int page = 1) {
            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"
                }
            }
            , "Overlay", "PrisonPanel");
            container.Add(new CuiPanel {
                CursorEnabled = false, FadeOut = 1, Image = {
                    Color = "0 0 0 0.95", Material = "assets/content/ui/uibackgroundblur.mat"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-335.206 -205.428", OffsetMax = "325.204 205.428"
                }
            }
            , "PrisonPanel", "PrisonPanelBack");
            container.Add(new CuiPanel {
                CursorEnabled = false, FadeOut = 1, Image = {
                    Color = "0 0 0 1"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0.760", AnchorMax = "0.5 0.760", OffsetMin = "-335.206 -19.428", OffsetMax = "325.204 19.428"
                }
            }
            , "PrisonPanel", "PrisonPanelBackBack");
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.708 0.727", AnchorMax = "0.76 0.79"
                }
                , Button = {
                    Color = "0 0 0 0", Close = "PrisonPanel"
                }
                , Text = {
                    Text = "×", Font = "robotocondensed-regular.ttf", FontSize = 36, Align = TextAnchor.MiddleCenter, Color = "0.56 0.58 0.64 1.00"
                }
            }
            , "PrisonPanel", "ButtonClose");
            container.Add(new CuiElement {
                Name = "PrisonText", Parent = "PrisonPanel", Components = {
                    new CuiTextComponent {
                        Text = "Send to Prison", 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.499 0.727", AnchorMax = "0.499 0.79", OffsetMin = "-115.206 -15.428", OffsetMax = "115.204 15.428"
                    }
                }
            }
            );
            int pos1 = 48 - (page * 48), quantity = 0;
            float top = 0.720f;
            float bottom = 0.690f;
            int playercounter = 0;
            foreach (var bplayer in BasePlayer.activePlayerList) {
                pos1++;
                quantity++;
                if (pos1 > 0 && pos1 < 49) {
                    playercounter++;
                    if (playercounter <= 12) {
                        container.Add(new CuiButton {
                            RectTransform = {
                                AnchorMin = $"0.268 {bottom}", AnchorMax = $"0.350 {top}", OffsetMin = "-25.206 -1.428", OffsetMax = "25.204 1.428"
                            }
                            , Button = {
                                Color = "0.56 0.58 0.64 1.00", Command = $"prison.GetName openpanel2 {bplayer.UserIDString}"
                            }
                            , Text = {
                                Text = bplayer.displayName, Font = "robotocondensed-regular.ttf", FontSize = 12, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                            }
                        }
                        , "PrisonPanel", "ButtonGetName");
                        top = top - 0.040f;
                        bottom = bottom - 0.040f;
                        if (playercounter == 12) {
                            top = 0.720f;
                            bottom = 0.690f;
                        }
                    }
                    else if (playercounter <= 24) {
                        container.Add(new CuiButton {
                            RectTransform = {
                                AnchorMin = $"0.392 {bottom}", AnchorMax = $"0.474 {top}", OffsetMin = "-25.206 -1.428", OffsetMax = "25.204 1.428"
                            }
                            , Button = {
                                Color = "0.56 0.58 0.64 1.00", Command = $"prison.GetName openpanel2 {bplayer.UserIDString}"
                            }
                            , Text = {
                                Text = bplayer.displayName, Font = "robotocondensed-regular.ttf", FontSize = 12, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                            }
                        }
                        , "PrisonPanel", "ButtonGetName");
                        top = top - 0.040f;
                        bottom = bottom - 0.040f;
                        if (playercounter == 24) {
                            top = 0.720f;
                            bottom = 0.690f;
                        }
                    }
                    else if (playercounter <= 36) {
                        container.Add(new CuiButton {
                            RectTransform = {
                                AnchorMin = $"0.516 {bottom}", AnchorMax = $"0.598 {top}", OffsetMin = "-25.206 -1.428", OffsetMax = "25.204 1.428"
                            }
                            , Button = {
                                Color = "0.56 0.58 0.64 1.00", Command = $"prison.GetName openpanel2 {bplayer.UserIDString}"
                            }
                            , Text = {
                                Text = bplayer.displayName, Font = "robotocondensed-regular.ttf", FontSize = 12, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                            }
                        }
                        , "PrisonPanel", "ButtonGetName");
                        top = top - 0.040f;
                        bottom = bottom - 0.040f;
                        if (playercounter == 36) {
                            top = 0.720f;
                            bottom = 0.690f;
                        }
                    }
                    else if (playercounter <= 48) {
                        container.Add(new CuiButton {
                            RectTransform = {
                                AnchorMin = $"0.640 {bottom}", AnchorMax = $"0.722 {top}", OffsetMin = "-25.206 -1.428", OffsetMax = "25.204 1.428"
                            }
                            , Button = {
                                Color = "0.56 0.58 0.64 1.00", Command = $"prison.GetName openpanel2 {bplayer.UserIDString}"
                            }
                            , Text = {
                                Text = bplayer.displayName, Font = "robotocondensed-regular.ttf", FontSize = 12, Align = TextAnchor.MiddleCenter, Color = "1 1 1 1"
                            }
                        }
                        , "PrisonPanel", "ButtonGetName");
                        top = top - 0.040f;
                        bottom = bottom - 0.040f;
                        if (playercounter == 48) {
                            top = 0.720f;
                            bottom = 0.690f;
                        }
                    }
                }
            }
            if (quantity > (page * 48)) container.Add(new CuiButton {
                Button = {
                    Command = $"PM.TogglePlayerGroup {page + 1}", Color = "0.56 0.58 0.64 1.00"
                }
                , RectTransform = {
                    AnchorMin = "0.50 0.22", AnchorMax = "0.55 0.24"
                }
                , Text = {
                    Text = lang.GetMessage("->", this), FontSize = 11, Align = TextAnchor.MiddleCenter
                }
                ,
            }
            , "PrisonPanel");
            if (page > 1) container.Add(new CuiButton {
                Button = {
                    Command = $"PM.TogglePlayerGroup {page - 1}", Color = "0.56 0.58 0.64 1.00"
                }
                , RectTransform = {
                    AnchorMin = "0.44 0.22", AnchorMax = "0.49 0.24"
                }
                , Text = {
                    Text = lang.GetMessage("<-", this), FontSize = 11, Align = TextAnchor.MiddleCenter
                }
                ,
            }
            , "PrisonPanel");
            CuiHelper.DestroyUi(player, "PrisonPanel");
            CuiHelper.AddUi(player, container);
        }
        void PrisonPanel2(BasePlayer player, string playername = "", int page = 1) {
            string name = playername;
            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"
                }
            }
            , "Overlay", "PrisonPanel2");
            container.Add(new CuiPanel {
                CursorEnabled = false, FadeOut = 1, Image = {
                    Color = "0 0 0 0.95", Material = "assets/content/ui/uibackgroundblur.mat"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0.5", AnchorMax = "0.5 0.5", OffsetMin = "-335.206 -205.428", OffsetMax = "325.204 205.428"
                }
            }
            , "PrisonPanel2", "PrisonPanelBack2");
            container.Add(new CuiPanel {
                CursorEnabled = false, FadeOut = 1, Image = {
                    Color = "0 0 0 1"
                }
                , RectTransform = {
                    AnchorMin = "0.5 0.760", AnchorMax = "0.5 0.760", OffsetMin = "-335.206 -19.428", OffsetMax = "325.204 19.428"
                }
            }
            , "PrisonPanel2", "PrisonPanelBackBack2");
            container.Add(new CuiButton {
                RectTransform = {
                    AnchorMin = "0.708 0.727", AnchorMax = "0.76 0.79"
                }
                , Button = {
                    Color = "0 0 0 0", Close = "PrisonPanel2"
                }
                , Text = {
                    Text = "×", Font = "robotocondensed-regular.ttf", FontSize = 36, Align = TextAnchor.MiddleCenter, Color = "0.56 0.58 0.64 1.00"
                }
            }
            , "PrisonPanel2", "ButtonClose2");
            container.Add(new CuiElement {
                Name = "PrisonText2", Parent = "PrisonPanel2", Components = {
                    new CuiTextComponent {
                        Text = "Jail Cells", 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.499 0.727", AnchorMax = "0.499 0.79", OffsetMin = "-115.206 -15.428", OffsetMax = "115.204 15.428"
                    }
                }
            }
            );
            int pos1 = 48 - (page * 48), quantity = 0;
            float top = 0.720f;
            float bottom = 0.690f;
            int playercounter = 0;
            foreach (var jail in Jail) {
                pos1++;
                quantity++;
                if (pos1 > 0 && pos1 < 49) {
                    playercounter++;
                    if (playercounter <= 12) {
                        container.Add(new CuiButton {
                            RectTransform = {
                                AnchorMin = $"0.268 {bottom}", AnchorMax = $"0.350 {top}", OffsetMin = "-25.206 -1.428", OffsetMax = "25.204 1.428"
                            }
                            , Button = {
                                Color 
// ... [Code preview truncated due to length. Full source in attached file] ...

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху