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

FREE DoorsControl : 1.0.4 1.0.4

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using Newtonsoft.Json;
using System;
using System.Reflection;
using System.Text;
using Oxide.Core;
using Oxide.Core.Plugins;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("DoorsControl", "RusskiIvan", "1.0.4")]
    [Description("DoorsControl")]
    public class DoorsControl : RustPlugin
    {
        [PluginReference] private Plugin Clans;

        #region Variables

        private StoredData _data;
        private ConfigData _config;

        private readonly FieldInfo _serverInput = typeof(BasePlayer).GetField("serverInput",
            (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));

        private readonly Vector3 _eyesAdjust = new Vector3(0f, 1.5f, 0f);
        private bool _dataLoaded;

        private readonly FieldInfo _hasCode = typeof(CodeLock).GetField("hasCode",
            (BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.NonPublic));

        #endregion

        #region Configuration

        private class ConfigData
        {
            [JsonProperty("Команда для замков")] public string codelockCommand { get; set; }
            [JsonProperty("Команда для дверей ")] public string doorsCommand { get; set; }
            [JsonProperty("Привилегии")] public Permissions permissions { get; set; }
            [JsonProperty("Настройки")] public Settings settings { get; set; }
        }

        private class Permissions
        {
            [JsonProperty("Привилегия для дверей")]
            public string permissionDeployDoor { get; set; }

            [JsonProperty("Привилегия для ящиков")]
            public string permissionDeployBox { get; set; }

            [JsonProperty("Привилегия для шкафов с одеждой")]
            public string permissionDeployLocker { get; set; }

            [JsonProperty("Привилегия для шкафа")] public string permissionDeployCupboard { get; set; }

            [JsonProperty("Привилегия для автозакрытия замка")]
            public string permissionAutoLock { get; set; }

            [JsonProperty("Привилегия для установки замка без замка :)")]
            public string permissionNoLockNeed { get; set; }

            [JsonProperty("Привилегия для автозакрывания двери")]
            public string permissionAutoCloseDoor { get; set; }

            [JsonProperty("Привилегия для умного дома")]
            public string permissionSmartHome { get; set; }
        }

        private class Settings
        {
            [JsonProperty("Автозакрытие замка")] public bool AutoLock { get; set; }

            [JsonProperty("Авто установка на двери")]
            public bool DeployDoor { get; set; }

            [JsonProperty("Авто установка на ящики")]
            public bool DeployBox { get; set; }

            [JsonProperty("Авто установка на шкафы с одеждой")]
            public bool DeployLocker { get; set; }

            [JsonProperty("Авто установка на шкаф")]
            public bool DeployCupboard { get; set; }

            [JsonProperty("Задержка закрытия двери")]
            public float defaultDelay { get; set; }

            [JsonProperty("Автозакрытие дверей")] public bool autoDoor { get; set; }
        }

        protected override void LoadDefaultConfig()
        {
            var config = new ConfigData
            {
                codelockCommand = "code",
                doorsCommand = "ad",
                permissions = new Permissions
                {
                    permissionDeployDoor = Name + ".deploydoor",
                    permissionDeployBox = Name + ".deploybox",
                    permissionDeployLocker = Name + ".deploylocker",
                    permissionDeployCupboard = Name + ".deploycup",
                    permissionAutoLock = Name + ".autolock",
                    permissionNoLockNeed = Name + ".nolockneed",
                    permissionAutoCloseDoor = Name + ".autoclose",
                    permissionSmartHome = Name + ".smarthome",

                },
                settings = new Settings
                {
                    AutoLock = true,
                    DeployDoor = true,
                    DeployBox = true,
                    DeployLocker = true,
                    DeployCupboard = true,
                    autoDoor = true,
                    defaultDelay = 5f
                }
            };
            SaveConfig(config);
            PrintWarning("Creating default a configuration file...");
        }

        private void LoadConfigVariables() => _config = Config.ReadObject<ConfigData>();
        private void SaveConfig(ConfigData config) => Config.WriteObject(config, true);

        #endregion

        #region Oxide
        
        private void Loaded()
        {
            LoadConfigVariables();
            cmd.AddChatCommand(_config.codelockCommand, this, "CodeLockCommand");
            cmd.AddChatCommand(_config.doorsCommand, this, "AutoDoorCommand");
        }

        private void OnServerInitialized()
        {
            if (!_dataLoaded) LoadData();
            RegisterPermissions();
            foreach (var player in BasePlayer.activePlayerList)
            {
                if (!_data.PlayerInfo.ContainsKey(player.userID)) AddNewPlayer(player);
            }
        }

        private void OnPlayerConnected(BasePlayer player)    
        {
            if (!_data.PlayerInfo.ContainsKey(player.userID)) AddNewPlayer(player);
        }

        private void OnDoorOpened(Door door, BasePlayer player)
        {
            if (door == null || player == null) return;
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoCloseDoor))
            {
                //Puts(permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoCloseDoor).ToString());
                return;
            }
            if (door.GetComponentInChildren<DoorCloser>() != null) return;
            if (_data.DoorsList.Contains(door.net.ID)) return;
            var time = 0f;
            if (_data.PlayerInfo.ContainsKey(player.userID))
            {
                if (!_data.PlayerInfo[player.userID].AutoDoor) return;
                time = _data.PlayerInfo[player.userID].DefaultDelay;
            }
            else
            {
                if (!_config.settings.AutoLock) return;
                time = _config.settings.defaultDelay;
            }

            if (time == 0f) return;
            timer.Once(time, () => CloseDoor(door));

        }

        private void OnItemDeployed(Deployer deployer, BaseEntity entity)
        {
            if (deployer.GetOwnerPlayer() == null || deployer.GetModDeployable() == null ||
                deployer.GetModDeployable().name == "doorcloser.item" || !entity.HasSlot(BaseEntity.Slot.Lock) ||
                !(entity.GetSlot(BaseEntity.Slot.Lock) is CodeLock)) return;
            var owner = deployer.GetOwnerPlayer();
            if (!permission.UserHasPermission(owner.UserIDString, _config.permissions.permissionAutoLock) ||
                !_data.PlayerInfo[owner.userID].AutoLock) return;
            var codelock = entity.GetSlot(BaseEntity.Slot.Lock) as CodeLock;
            if (codelock == null) return;
            codelock.code = Convert.ToString(_data.PlayerInfo[owner.userID].Password != 0
                ? _data.PlayerInfo[owner.userID].Password
                : UnityEngine.Random.Range(1234, 9876));
            _hasCode.SetValue(codelock, true);
            codelock.whitelistPlayers.Add(owner.userID);
            codelock.SetFlag(BaseEntity.Flags.Locked, true);
            Effect.server.Run("assets/prefabs/locks/keypad/effects/lock.code.updated.prefab",
                entity.transform.position);
            var code = codelock.code;
            if (owner.net.connection.info.GetBool("global.streamermode")) code = "****";
            SendReply(owner, string.Format(Msg("CodeAuth", owner), code)); //Изменено
        }

        private void OnEntityBuilt(Planner planner, GameObject obj)
        {
            if (planner == null || planner.GetOwnerPlayer() == null ||
                obj.GetComponent<BaseEntity>() == null || obj.GetComponent<BaseEntity>().OwnerID == 0) return;
            var entity = obj.GetComponent<BaseEntity>();
            var player = planner.GetOwnerPlayer();
            if (player == null || !_data.PlayerInfo.ContainsKey(player.userID)) return;
            if (entity is Door && (entity as Door).canTakeLock)
            {
                if (permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployDoor) &&
                    _data.PlayerInfo[player.userID].DeployDoor) LockPlacing(player, entity);
            }
            else if (entity is BoxStorage && entity.HasSlot(BaseEntity.Slot.Lock))
            {
                if (permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployBox) &&
                    _data.PlayerInfo[player.userID].DeployBox) LockPlacing(player, entity);
            }
            else if (entity is Locker && entity.HasSlot(BaseEntity.Slot.Lock))
            {
                if (permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployLocker) &&
                    _data.PlayerInfo[player.userID].DeployLocker) LockPlacing(player, entity);
            }
            else if (entity is BuildingPrivlidge && entity.HasSlot(BaseEntity.Slot.Lock))
            {
                if (permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployCupboard) &&
                    _data.PlayerInfo[player.userID].DeployCupboard) LockPlacing(player, entity);
            }
        }

        private void OnNewSave()
        {
            LoadData();
            _data.DoorsList.Clear();
            SaveData();
        }

        private void OnServerSave() => SaveData();

        private void Unload() => SaveData();

        #endregion

        #region Functions
        bool IsClanMember(ulong playerid = 294912, ulong targetID = 0) => (bool)(Clans?.Call("HasFriend", playerid, targetID) ?? false);

        private void CloseDoor(BaseEntity door)
        {
            if (door == null || !door.IsOpen()) return;
            door.SetFlag(BaseEntity.Flags.Open, false);
            door.SendNetworkUpdateImmediate();
        }

        private static BaseEntity DoRay(Vector3 pos, Vector3 aim)
        {
            var hits = Physics.RaycastAll(pos, aim);
            var distance = 3f;
            BaseEntity target = null;
            foreach (var hit in hits)
            {
                if (!(hit.distance < distance)) continue;
                distance = hit.distance;
                target = hit.GetEntity();
            }

            return target;
        }
    
        private void AutoDoorCommand(BasePlayer player, string command, string[] args)
        {
            if (player == null) return;
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoCloseDoor))
            {
                SendReply(player,
                    Msg("NoAccess", player));
                return;
            }

            SetDoor(player);
        }

        private void SetDoor(BasePlayer player)
        {
            var input = _serverInput.GetValue(player) as InputState;
            if (input == null) return;
            var currentRot = Quaternion.Euler(input.current.aimAngles) * Vector3.forward;
            var entity = DoRay(player.transform.position + _eyesAdjust, currentRot);
            var door = entity as Door;
            if (door == null)
            {
                if (!_data.PlayerInfo.ContainsKey(player.userID)) AddNewPlayer(player);
                _data.PlayerInfo[player.userID].AutoDoor = !_data.PlayerInfo[player.userID].AutoDoor;
                SaveData();
                SendReply(player,
                    _data.PlayerInfo[player.userID].AutoDoor
                        ? Msg("AllAutoCloseEnabled", player)
                        : Msg("AllAutoCloseDisabled", player));
                return;
            }

            SwitchDoor(player, door);
        }

        private void SwitchDoor(BasePlayer player, BaseNetworkable door)
        {
            if (door == null || door.net == null) return;
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoCloseDoor)) return;

            if (_data.DoorsList.Contains(door.net.ID))
            {
                _data.DoorsList.Remove(door.net.ID);
                SendReply(player,
                    Msg("AutoCloseEnabled", player));
            }
            else
            {
                _data.DoorsList.Add(door.net.ID);
                SendReply(player,
                    Msg("AutoCloseDisabled", player));
            }

            SaveData();
        }

        private void RegisterPermissions()
        {
            if (!permission.PermissionExists(_config.permissions.permissionDeployDoor))
                permission.RegisterPermission(_config.permissions.permissionDeployDoor, this);
            if (!permission.PermissionExists(_config.permissions.permissionAutoLock))
                permission.RegisterPermission(_config.permissions.permissionAutoLock, this);
            if (!permission.PermissionExists(_config.permissions.permissionDeployBox))
                permission.RegisterPermission(_config.permissions.permissionDeployBox, this);
            if (!permission.PermissionExists(_config.permissions.permissionDeployLocker))
                permission.RegisterPermission(_config.permissions.permissionDeployLocker, this);
            if (!permission.PermissionExists(_config.permissions.permissionDeployCupboard))
                permission.RegisterPermission(_config.permissions.permissionDeployCupboard, this);
            if (!permission.PermissionExists(_config.permissions.permissionAutoCloseDoor))
                permission.RegisterPermission(_config.permissions.permissionAutoCloseDoor, this);
            if (!permission.PermissionExists(_config.permissions.permissionNoLockNeed))
                permission.RegisterPermission(_config.permissions.permissionNoLockNeed, this);
            if (!permission.PermissionExists(_config.permissions.permissionSmartHome))
                permission.RegisterPermission(_config.permissions.permissionSmartHome, this);
        }

        private void AddNewPlayer(BasePlayer player)
        {
            if (_data.PlayerInfo.ContainsKey(player.userID)) return;

            var info = new PlayerInfo
            {
                AutoLock = _config.settings.AutoLock,
                DeployDoor = _config.settings.DeployDoor,
                DeployBox = _config.settings.DeployBox,
                DeployLocker = _config.settings.DeployLocker,
                DeployCupboard = _config.settings.DeployCupboard,
                AutoDoor = _config.settings.autoDoor,
                DefaultDelay = _config.settings.defaultDelay,
                Password = UnityEngine.Random.Range(1000, 9999)
            };
            _data.PlayerInfo.Add(player.userID, info);
            SaveData();
        }

        private void SetPlayerData(BasePlayer player, int Code, bool AutoLock = true, bool DeployDoor = true,
            bool DeployBox = true, bool DeployLocker = true, bool DeployCupboard = true, bool autoDoor = true,
            float defaultDelay = 5f)
        {
            if (player == null) return;
            if (_data.PlayerInfo.ContainsKey(player.userID)) _data.PlayerInfo.Remove(player.userID);
            var info = new PlayerInfo
            {
                AutoLock = AutoLock,
                DeployDoor = DeployDoor,
                DeployBox = DeployBox,
                DeployLocker = DeployLocker,
                DeployCupboard = DeployCupboard,
                AutoDoor = autoDoor,
                DefaultDelay = defaultDelay,
                Password = Code == 0 ? UnityEngine.Random.Range(1000, 9999) : Code
            };
            _data.PlayerInfo.Add(player.userID, info);
            SaveData();
        }

        private PlayerInfo GetPlayerData(BasePlayer player)
        {
            if (player == null) return null;
            if (!_data.PlayerInfo.ContainsKey(player.userID)) AddNewPlayer(player);
            return _data.PlayerInfo[player.userID];
        }

        private void LockPlacing(BasePlayer player, BaseEntity entity)
        {
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionNoLockNeed) &&
                player.inventory.Take(null, 1159991980, 1) == 0)
            {
                return;
            }

            var codeLock = GameManager.server.CreateEntity("assets/prefabs/locks/keypad/lock.code.prefab",
                new Vector3(), new Quaternion(), true) as CodeLock;
            if (codeLock == null) return;
            codeLock.gameObject.Identity();
            codeLock.SetParent(entity, entity.GetSlotAnchorName(BaseEntity.Slot.Lock));
            codeLock.OnDeployed(entity, player);
            codeLock.Spawn();
            entity.SetSlot(BaseEntity.Slot.Lock, codeLock);
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoLock) ||
                !_data.PlayerInfo[player.userID].AutoLock) return;
            codeLock.code = Convert.ToString(_data.PlayerInfo[player.userID].Password != 0
                ? _data.PlayerInfo[player.userID].Password
                : UnityEngine.Random.Range(1234, 9876));
            _hasCode.SetValue(codeLock, true);
            codeLock.whitelistPlayers.Add(player.userID);
            var clanList = Clans?.Call<List<string>>("GetClanMembers", player.userID);
            if (clanList != null && clanList.Count > 0)
            {
                foreach (var clanuser in clanList)
                {
                    codeLock.whitelistPlayers.Add(ulong.Parse(clanuser));
                } 
            }
            else
            {
                codeLock.whitelistPlayers.Add(player.userID);
            }
            if (RelationshipManager.Instance.FindPlayersTeam(player.userID) != null)
            {
                foreach (var playerID in player.Team.members)
                {
                    codeLock.whitelistPlayers.Add(playerID);

                }
            }
            codeLock.SetFlag(BaseEntity.Flags.Locked, true);
            Effect.server.Run("assets/prefabs/locks/keypad/effects/lock.code.updated.prefab",
                entity.transform.position);
            var code = codeLock.code;
            if (player.net.connection.info.GetBool("global.streamermode")) code = "****";
            SendReply(player, string.Format(Msg("CodeAuth", player), code));
        }

        private void CodeLockCommand(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoLock) &&
                !permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployDoor) &&
                !permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployBox) &&
                !permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployLocker) &&
                !permission.UserHasPermission(player.UserIDString, _config.permissions.permissionDeployCupboard))
            {
                SendReply(player,
                    Msg("NoAccess", player));
                return;
            }

            if (args.Length == 0)
            {
                var sb = new StringBuilder();
                sb.AppendLine(string.Format(Msg("CommandUsage", player), _config.codelockCommand));
                if (permission.UserHasPermission(player.UserIDString, _config.permissions.permissionAutoLock))
                    sb.AppendLine(String.Format(Msg("CommandAutolock", player), "auto", _data.PlayerInfo[player.userID].AutoLock
                                      ? "ON"
                                      : "OFF"));
                var pin = Convert.ToString(_data.PlayerInfo[player.userID].Password);
                if (player.net.connection.info.GetBool("global.streamermode")) pin = "****";
                sb.AppendLine(String.Format(Msg("CommandPinCode", player),"pin", _data.PlayerInfo[player.userID].Password > 0
                    ? pin
                    : Msg("CommandPinCodeNotSet", player)));
                SendReply(player, sb.ToString().TrimEnd());
                return;
            }

            switch (args[0].ToLower())
            {
                case "auto":
                    _data.PlayerInfo[player.userID].AutoLock = !_data.PlayerInfo[player.userID].AutoLock;
                        SendReply(player,
                            (_data.PlayerInfo[player.userID].AutoLock
                                ? Msg("AutoLockEnabled", player)
                                : Msg("AutoLockDisabled", player)));//Изменено
                    break;
               case "pin":
                    int pin;
                    if (args.Length != 2) goto case "noaccess";
                    //Puts(int.TryParse(args[1], out pin).ToString());
                    if (int.TryParse(args[1], out pin) == false || int.Parse(args[1]) > 9999 || int.Parse(args[1]) < 1000) goto case "badargument";
                    _data.PlayerInfo[player.userID].Password = pin;
                    SendReply(player, string.Format(Msg("CommandPinCodeSetTo", player), pin));
                    break;
                case "noaccess":
                    SendReply(player, string.Format(Msg("CommandPinCodeHelp", player), _config.codelockCommand));
                    break;
                 case "badargument":
                     SendReply(player, string.Format(Msg("BadFormatPin", player), args[1]));
                    break;
                    
                default:
                    SendReply(player, string.Format(Msg("NotSupported", player), args[0]));
                    break;
            }
        }
        
        #endregion

        #region Data
        private void SaveData() => Interface.Oxide.DataFileSystem.WriteObject(Name, _data);

        private void LoadData()
        {
            try
            {
                _data = Interface.Oxide.DataFileSystem.ReadObject<StoredData>(Name);
            }
            catch (Exception e)
            {
                PrintError(e.ToString());
            }

            if (_data == null) _data = new StoredData();
            _dataLoaded = true;
        }
        class StoredData
        {
            public Dictionary<ulong, PlayerInfo> PlayerInfo = new Dictionary<ulong, PlayerInfo>();
            public List<uint> DoorsList = new List<uint>();
        }
        
        class PlayerInfo
        {
            public bool AutoLock;
            public bool DeployDoor;
            public bool DeployBox;
            public bool DeployLocker;
            public bool DeployCupboard;
            public int Password;
            public bool AutoDoor;
            public float DefaultDelay;
        }
        #endregion

        #region Localization
        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(
                new Dictionary<string, string>
                {
                    {"AllAutoCloseEnabled", "<color=#00FFFF></color><color=#FFFFFF> Automatic doors closing for you is enabled</color>"},
                    {"AllAutoCloseDisabled", "<color=#00FFFF></color><color=#FFFFFF> Automatic doors closing for you is disabled</color>"},
                    {"BadFormatPin", "<color=#00FFFF></color><color=#FFFFFF> Error syntax pin: <color=#FF0000>{0}</color></color>"},
                    {"AutoCloseEnabled", "<color=#00FFFF></color><color=#FFFFFF> Automatic closing of <color=#00FF00>THIS DOOR</color> for all authorized players is enabled</color>"},
                    {"AutoCloseDisabled", "<color=#00FFFF></color><color=#FFFFFF> Automatic closing of <color=#FF0000>THIS DOOR</color> for all authorized players is disabled</color>"},
                    {"AutoLockEnabled", "<color=#00FFFF></color><color=#FFFFFF> CodeLock automation (secure and lock) enabled</color>"},
                    {"AutoLockDisabled", "<color=#00FFFF></color><color=#FFFFFF> CodeLock automation disabled</color>"},
                    {"DeployLockDoorEnabled", "<color=#00FFFF></color><color=#FFFFFF> Doors will include codelocks on deploy</color>"},
                    {"DeployLockDoorDisabled", "<color=#00FFFF></color><color=#FFFFFF> Doors will not include codelocks on deploy</color>"},
                    {"DeployLockBoxEnabled", "<color=#00FFFF></color><color=#FFFFFF> Boxes will include codelocks on deploy</color>"},
                    {"DeployLockBoxDisabled", "<color=#00FFFF></color><color=#FFFFFF> Boxes will not include codelocks on deploy</color>"},
                    {"DeployLockLockerEnabled", "<color=#00FFFF></color><color=#FFFFFF> Locker will include codelocks on deploy</color>"},
                    {"DeployLockLockerDisabled", "<color=#00FFFF></color><color=#FFFFFF> Locker will not include codelocks on deploy</color>"},
                    {"DeployLockCupEnabled", "<color=#00FFFF></color><color=#FFFFFF> Cupboards will include codelocks on deploy</color>"},
                    {"DeployLockCupDisabled", "<color=#00FFFF></color><color=#FFFFFF> Cupboards will not include codelocks on deploy</color>"},
                    {"CodeAuth", "<color=#00FFFF></color><color=#FFFFFF> CodeLock secured and locked with <color=#00FF00>{0}</color></color>"},
                    {"NoAccess", "<color=#00FFFF></color><color=#FFFFFF> You are not granted for this feature</color>"},
                    {"NotSupported", "<color=#00FFFF></color><color=#FFFFFF> The specific function <color=#FF0000>{0}</color> is not available</color>"},
                    {"CommandUsage", "<color=#FFFFFF>Command usage: <color=#00FF00>{0}</color></color>"},
                    {"CommandToggle", "<color=#FFFFFF>All switches toggle their setting (on<>off)</color>"},
                    {"CommandAutolock", "<color=#FFFFFF><color=#00FF00>{0}</color> - Autolock feature: <color=#00FF00>{1}</color></color>"}, 
                    {"CommandPinCode", "<color=#FFFFFF><color=#00FF00>{0}</color> - Your current PIN: <color=#00FF00>{1}</color></color>"},
                    {"CommandPinCodeNotSet", "<color=#FFFFFF>Random 8-Digits</color>"},
                    {"CommandPinCodeSetTo", "<color=#00FFFF></color><color=#FFFFFF> Your Pin was succesful set to: <color=#00FF00>{0}</color></color>"},
                    {"CommandPinCodeHelp", "<color=#00FFFF></color><color=#FFFFFF> Set your PIN with <color=#00FF00>/{1} pin 1234</color> (4-Digits)"},
                    {"CommandDeployDoor", "<color=#FFFFFF> Deploy with Door:</color>"}, 
                    {"CommandDeployBox", "<color=#FFFFFF> Deploy with Box:</color>"},
                    {"CommandDeployLocker", "<color=#FFFFFF> Deploy with Locker:</color>"}, 
                    {"CommandDeployCupboard", "<color=#FFFFFF> Deploy with Cupboard:</color>"},
                }, this);
        lang.RegisterMessages(
                new Dictionary<string, string>
                {
                    {"AllAutoCloseEnabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическое закрытие всех дверей для Вас <color=#00FF00>ВКЛЮЧЕНО</color></color>"},
                    {"AllAutoCloseDisabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическое закрытие всех дверей для Вас <color=#FF0000>ВЫКЛЮЧЕНО</color></color>"},
                    {"BadFormatPin", "<color=#00FFFF></color><color=#FFFFFF> Неправильный формат пароля: <color=#FF0000>{0}</color></color>"},
                    {"AutoCloseEnabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическое закрытие <color=#00FF00>ЭТОЙ ДВЕРИ</color> для всех авторизованных игроков <color=#00FF00>ВКЛЮЧЕНО</color></color>"},
                    {"AutoCloseDisabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическое закрытие <color=#FF0000>ЭТОЙ ДВЕРИ</color> для всех авторизованных игроков <color=#FF0000>ВЫКЛЮЧЕНО</color></color>"},
                    {"AutoLockEnabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическая установка замка с паролем <color=#00FF00>ВКЛЮЧЕНА</color></color>"},
                    {"AutoLockDisabled", "<color=#00FFFF></color><color=#FFFFFF> Автоматическая установка замка с паролем <color=#FF0000>ВЫКЛЮЧЕНА</color></color>"},
                    {"DeployLockDoorEnabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#00FF00>будут</color> автоматически устанавливаться на двери</color>"},
                    {"DeployLockDoorDisabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#FF0000>не будут</color> автоматически устанавливаться на двери</color>"},
                    {"DeployLockBoxEnabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#00FF00>будут</color> автоматически устанавливаться на ящики</color>"},
                    {"DeployLockBoxDisabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#FF0000>не будут</color> автоматически устанавливаться на ящики</color>"},
                    {"DeployLockLockerEnabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#00FF00>будут</color> автоматически устанавливаться на шкафы с одеждой</color>"},
                    {"DeployLockLockerDisabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#FF0000>не будут</color> автоматически устанавливаться на шкафы с одеждой</color>"},
                    {"DeployLockCupEnabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#00FF00>будут</color> автоматически устанавливаться на шкафы</color>"},
                    {"DeployLockCupDisabled", "<color=#00FFFF></color><color=#FFFFFF> Замки <color=#FF0000>не будут</color> автоматически устанавливаться на шкафы</color>"},
                    {"CodeAuth", "<color=#00FFFF></color><color=#FFFFFF> Замок установлен! Пароль <color=#00FF00>{0}</color></color>"},
                    {"NoAccess", "<color=#00FFFF></color><color=#FFFFFF> У вас нету привилегии для использования команды</color>"},
                    {"NotSupported", "<color=#00FFFF></color><color=#FFFFFF> Функция <color=#FF0000>{0}</color> недоступна!</color>"},
                    {"CommandUsage", "<color=#FFFFFF>Команда: <color=#00FF00>{0}</color></color>"},
                    {"CommandToggle", "<color=#FFFFFF>Используется переключение <color=#00FF00>ON/OFF</color></color>"},
                    {"CommandAutolock", "<color=#FFFFFF><color=#00FF00>{0}</color> - значение: <color=#00FF00>{1}</color></color>"}, 
                    {"CommandPinCode", "<color=#FFFFFF><color=#00FF00>{0}</color> - Текущий пароль: <color=#00FF00>{1}</color></color>"},    
                    {"CommandPinCodeNotSet", "<color=#FFFFFF>Случайные 8 цифр</color>"},
                    {"CommandPinCodeSetTo", "<color=#00FFFF></color><color=#FFFFFF> Ваш пароль: <color=#00FF00>{0}</color>"},
                    {"CommandPinCodeHelp", "<color=#00FFFF></color><color=#FFFFFF> Установить пароль <color=##00FF00>/{1} pin 1234</color> (4 цифры)</color>"},
                    {"CommandDeployDoor", "<color=#FFFFFF> Установка на двери:</color>"}, 
                    {"CommandDeployBox", "<color=#FFFFFF> Установка на ящики:</color>"},
                    {"CommandDeployLocker", "<color=#FFFFFF> Установка на шкаф с одеждой:</color>"}, 
                    {"CommandDeployCupboard", "<color=#FFFFFF> Установка на шкаф:</color>"},
                }, this, "ru");
        }    
        private string Msg(string key, BasePlayer player = null) =>
            lang.GetMessage(key, this, player.UserIDString);
        #endregion    
        
    }
}

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