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

FREE PersonalFarmer : 0.1.0 0.1.0

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
#define DefaultConfigUI
using System;
using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using Newtonsoft.Json.Serialization;
using Oxide.Core;
using Oxide.Game.Rust.Cui;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;
using Oxide.Plugins.PersonalFarmerEx;
using Facepunch;
namespace Oxide.Plugins {
    [Info("PersonalFarmer", "Max39ru & walkinrey", "0.1.0")]
    public partial class PersonalFarmer : CovalencePlugin {
        private const bool RU = false;
        private const string AdminPermission = "personalfarmer.admin";
        private const string PrefabBot = "assets/rust.ai/agents/npcplayer/pet/frankensteinpet.prefab";
        /// <summary>
        /// Admin command or console command to give a sleeping bag: givefarmerbag <UserName|SteamUD> <SkinId> <Amount>
        /// </summary>
        private const string CommandAdminGiveSleepingBag = "givefarmerbag";
        /// <summary>
        /// Player command to receive a sleeping bag: /pfarmer <ConfigCommand>
        /// </summary>
        private const string CommandPlayerGiveSleepingBag = "pfarmer";
        private bool isWipe;
        private static int idFertilizer => -930193596;
        private static PersonalFarmer instance;
        private Dictionary<string, Dictionary<string, string>> localization = new();
        private Dictionary<ItemDefinition, ItemDefinition> seeds = new();
        private List<ItemDefinition> farmerFood = new();
        private List<ItemDefinition> chickensFood = new List<ItemDefinition>();
        private List<ItemDefinition> foodsSpoiling = new List<ItemDefinition>();
        private List<ItemDefinition> composterItems = new List<ItemDefinition>();
        private List<ItemCategory> categoriesAll = new List<ItemCategory>();
#region Configuration
        private const string FolderNameConfig = "ReserveConfig";
        public Configuration config;
        public static JsonSerializerSettings settingsSerializer = new JsonSerializerSettings {
            NullValueHandling = NullValueHandling.Ignore, ContractResolver = new CustomContractResolver()
        }
        ;
        public class Configuration {
            [JsonProperty(RU ? "Укажите для генератора ID фермеров, количество знаков(от 8 - 15)" : "Specify the ID of the farmer generator, the number of digits(8 - 15)")]
            private int digits = 9;
            [JsonProperty(RU ? "Настройка фермеров (в ключе скин спального мешка)" : "Farmer settings (key is a sleeping bag skin)")]
            public Dictionary<ulong, FarmerSetup> FarmerBots = new();
            public int GetDigits() => Mathf.Clamp(digits, 8, 15);
            public static Configuration GetDefault() {
                return new() {
                    FarmerBots = new() {
                        [3480145757]
                        = new() {
                            CreateFarmer = new() {
                                Permission = "personalfarmer.default", Command = "default", NameFarmer = new("PersonalFarmer_default", "%OWNER_NAME%'s Farmer"), MaxHealth = 100, Clothes = new() {
                                    CanUnlock = false, items = new() {
                                        new ItemInfo {
                                            item = new ItemSetup("burlap.shirt", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("burlap.trousers", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("burlap.gloves.new", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("burlap.shoes", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("hat.boonie", 0), amount = 1, name = ""
                                        }
                                        ,
                                    }
                                }
                            }
                            , Controller = new() {
                                WateringItem = new("bucket.water", 0, false), CanPickupDroppedItems = true, CanPickupCollectibleItems = true, CanMining = true, MiningItem = new("lumberjack.pickaxe", 0, true), CanMedicine = true, MedicineItem = new("syringe.medical", 0, true),
                            }
                            , Storage = new() {
                                ListPrefabs = new() {
                                    "woodbox_deployed", "wicker_barrel", "box.wooden.large", "fridge.deployed",
                                }
                            }
                            , Planters = new() {
                                ListPrefabs = new() {
                                    "planter.large.deployed", "planter.small.deployed", "planter.triangle.deployed", "bathtub.planter.deployed", "minecart.planter.deployed", "plantpot.single.deployed",
                                }
                            }
                            , Fertilizer = new(true) {
                                ListPrefabs = new() {
                                    "composter",
                                }
                            }
                            , Chickens = new(true) {
                                ListPrefabs = new() {
                                    "chickencoop.deployed",
                                }
                            }
                            , Beehives = new(true) {
                                ListPrefabs = new() {
                                    "beehive.deployed",
                                }
                            }
                            , Waters = new(true) {
                                ListPrefabs = new() {
                                    "waterbarrel", "water_catcher_small", "water_catcher_large",
                                }
                            }
                            ,
                        }
                        , [3480146242] = new() {
                            CreateFarmer = new() {
                                Permission = "personalfarmer.vip", Command = "vip", NameFarmer = new("PersonalFarmer_vip", "%OWNER_NAME%'s VIP Farmer"), MaxHealth = 150, Clothes = new() {
                                    CanUnlock = false, items = new() {
                                        new ItemInfo {
                                            item = new ItemSetup("jumpsuit.suit.blue", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("shoes.boots", 0), amount = 1, name = ""
                                        }
                                        , new ItemInfo {
                                            item = new ItemSetup("hat.boonie", 0), amount = 1, name = ""
                                        }
                                        ,
                                    }
                                }
                                ,
                            }
                            , Controller = new() {
                                WateringItem = new("waterjug", 0, true), CanPickupDroppedItems = true, CanPickupCollectibleItems = true, CanMining = true, MiningItem = new("lumberjack.pickaxe", 0, true), CanMedicine = true, MedicineItem = new("syringe.medical", 0, true),
                            }
                            , Storage = new(true) {
                                ListPrefabs = new() {
                                    "woodbox_deployed", "wicker_barrel", "box.wooden.large", "fridge.deployed",
                                }
                            }
                            , Planters = new(true) {
                                ListPrefabs = new() {
                                    "planter.large.deployed", "planter.small.deployed", "planter.triangle.deployed", "bathtub.planter.deployed", "minecart.planter.deployed", "plantpot.single.deployed",
                                }
                            }
                            , Fertilizer = new(true) {
                                ListPrefabs = new() {
                                    "composter",
                                }
                            }
                            , Chickens = new(true) {
                                ListPrefabs = new() {
                                    "chickencoop.deployed",
                                }
                            }
                            , Beehives = new(true) {
                                ListPrefabs = new() {
                                    "beehive.deployed",
                                }
                            }
                            , Waters = new(true) {
                                ListPrefabs = new() {
                                    "waterbarrel", "water_catcher_small", "water_catcher_large",
                                }
                            }
                            ,
                        }
                        ,
                    }
                    ,
                }
                ;
            }
        }
        public class FarmerSetup {
            [JsonProperty(RU ? "Спавн" : "Spawn")]
            public CreateFarmerSetup CreateFarmer = new();
            [JsonProperty(RU ? "Контроллер" : "Controller")]
            public ControllerSetup Controller = new();
            [JsonProperty(RU ? "Хранилища" : "Storage")]
            public EntityFarmSetup Storage = new();
            [JsonProperty(RU ? "Грядки" : "Planters")]
            public PlantersSetup Planters = new();
            [JsonProperty(RU ? "Компостеры" : "Composters")]
            public EntityFarmSetup Fertilizer = new();
            [JsonProperty(RU ? "Курятники" : "Chicken coops")]
            public EntityFarmSetup Chickens = new();
            [JsonProperty(RU ? "Улья" : "Beehives")]
            public EntityFarmSetup Beehives = new();
            [JsonProperty(RU ? "Водонакопители" : "Water tanks")]
            public EntityFarmSetup Waters = new();
            public bool CanPlayerUseCommand(BasePlayer player) => !string.IsNullOrEmpty(CreateFarmer?.Command) && CanPlayerUseDeployed(player);
            public bool CanPlayerUseDeployed(BasePlayer player) => string.IsNullOrEmpty(CreateFarmer?.Permission) || instance.permission.UserHasPermission(player.UserIDString, CreateFarmer.Permission);
            public class CreateFarmerSetup {
                [JsonProperty(RU ? "Разрешение для выдачи/установки спального мешка фермера (оставьте пустым, если разрешено всем)" : "Permission to give/deploy farmer's sleeping bag (leave empty if allowed to everyone)")]
                public string Permission = "personalfarmer.default";
                [JsonProperty(RU ? $"Аргумент команды для выдачи спального мешка (работает через команду чата /{CommandPlayerGiveSleepingBag}, оставьте пустым чтобы отключить)" : $"Command argument to receive sleeping bag (works through the chat command /{CommandPlayerGiveSleepingBag}, leave empty to disable)")]
                public string Command = "default";
                [JsonProperty(RU ? "Имя" : "Name")]
                public LangKeyValue NameFarmer = new("PersonalFarmer_default", "%OWNER_NAME%'s Farmer");
                [JsonProperty(RU ? "Максимальное здоровье" : "Maximum health")]
                public float MaxHealth = 150f;
                [JsonProperty(RU ? "Одежда" : "Clothes")]
                public ContainerFarmer Clothes = new();
                public void AddLang(Dictionary<string, string> langDictionary) => NameFarmer.AddLang(langDictionary);
            }
            public class ControllerSetup {
                [JsonIgnore]
                public float OffsetPointY => 0.4f;
                [JsonProperty(RU ? "Таймер обновления контроллера (0 - 0.2f)" : "Controller tick (0 - 0.2f)")]
                public float TickUpdateController = 0.1f;
                [JsonProperty(RU ? "Таймер обновления мозга (0.1 - 5f)" : "Brain tick (0.1 - 5f)")]
                public float TickUpdateBrain = 0.1f;
                [JsonProperty(RU ? "Размер зоны фермы, в которой может работать фермер" : "Farm zone size where farmer can work")]
                public Vector2 ZoneFarm = new(100f, 100f);
                [JsonProperty(RU ? "Предмет для полива" : "Item for watering")]
                public ToolItem WateringItem;
                [JsonProperty(RU ? "Разрешить подбор выброшенных предметов?" : "Allow to pickup dropped items?")]
                public bool CanPickupDroppedItems = false;
                [JsonProperty(RU ? "Разрешить сбор ресурсов?" : "Can collect resources?")]
                public bool CanPickupCollectibleItems = false;
                [JsonProperty(RU ? "Разрешить добычу ресурсов?" : "Can mine resources?")]
                private bool canMining = false;
                [JsonProperty(RU ? "Предмет для добычи ресурсов" : "Item for mining")]
                public ToolItem MiningItem;
                [JsonProperty(RU ? "Разрешить фермеру лечиться?" : "Can the farmer heal himself?")]
                private bool canMedicine = false;
                [JsonProperty(RU ? "Предмет для лечения" : "Item for heal")]
                public ToolItem MedicineItem;
                [JsonProperty(RU ? "Разрешить урон от утопления?" : "Allow drowning damage?")]
                public bool CanWaterDamage = false;
                [JsonProperty(RU ? "Разрешить прокладывать маршрут под водой?" : "Allow the farmer to route underwater?")]
                public bool CanRouteIsDepth = true;
                [JsonProperty(RU ? "Разрешить фермеру проходить под водой?" : "Allow the farmer to go underwater?")]
                public bool CanMoveIsDepth = true;
                [JsonIgnore]
                public bool CanWatering {
                    get => MiningItem?.GetItemDefinition() != null;
                }
                [JsonIgnore]
                public bool CanMining {
                    get => canMining && MiningItem?.GetItemDefinition() != null;
                    set => canMining = value;
                }
                [JsonIgnore]
                public bool CanMedicine {
                    get => canMedicine && MedicineItem?.GetItemDefinition() != null;
                    set => canMedicine = value;
                }
            }
            public class PlantersSetup : EntityFarmSetup {
                public PlantersSetup() {
                }
                public PlantersSetup(bool enabled) : base(enabled) {
                }
            }
            public class EntityFarmSetup {
                [JsonProperty(RU ? "Может ли фермер использовать это?" : "Can farmer use it?")]
                private bool enabled = true;
                [JsonProperty(RU ? "Список префабов объектов, которые фермер может использовать" : "List of prefab entities that the farmer can use")]
                public List<string> ListPrefabs = new();
                public EntityFarmSetup() {
                }
                public EntityFarmSetup(bool enabled) {
                    this.enabled = enabled;
                }
                public bool HasEntity(BaseEntity entity) {
                    return Enabled() && entity && (ListPrefabs.Contains(entity.PrefabName) || ListPrefabs.Contains(entity.ShortPrefabName));
                }
                public bool Enabled() => enabled && ListPrefabs?.Count > 0;
            }
        }
        public class ContainerFarmer {
            [JsonIgnore]
            private const int order = 0;
            [JsonProperty(RU ? "Разблокировать контейнер?" : "Unlock container?", Order = order + 10)]
            public bool CanUnlock = false;
            [JsonProperty(RU ? "Список предметов" : "List of items", Order = order + 20)]
            public List<ItemInfo> items = new();
        }
        public class ItemInfo {
            [JsonIgnore]
            private const int order = 100;
            [JsonProperty(RU ? "Предмет" : "Item", Order = order + 10)]
            public ItemSetup item;
            [JsonProperty(RU ? "Свое название предмета (если не нужно оставьте пустым)" : "Custom item name (if not needed leave empty)", Order = order + 20)]
            public string name;
            [JsonProperty(RU ? "Количество" : "Amount", Order = order + 30)]
            public int amount;
            public bool TryGetItem(out Item _item) {
                _item = item.CreateItem(amount, name);
                return _item != null;
            }
            public bool AddItemToContainer(ItemContainer container) {
                if (container != null && TryGetItem(out var _item)) {
                    if (_item.MoveToContainer(container)) return true;
                    else _item.Remove();
                }
                return false;
            }
        }
        public struct ItemSetup {
            [JsonProperty(RU ? "ShortName или ID предмета" : "Item shortname or ID")]
            private string shortNameOrId;
            [JsonProperty(RU ? "Скин предмета" : "Item skin")]
            public ulong SkinID;
            [JsonIgnore]
            private ItemDefinition _def;
            public ItemSetup(string shortNameOrId, ulong skin) {
                this.shortNameOrId = shortNameOrId;
                this.SkinID = skin;
                _def = null;
            }
            public Item CreateItem(int amount, string name = "") {
                if (string.IsNullOrEmpty(shortNameOrId)) return null;
                if (amount < 1) amount = 1;
                amount = amount == 0 ? 1 : Mathf.Abs(amount);
                Item result = null;
                if (int.TryParse(shortNameOrId, out int id)) result = ItemManager.CreateByItemID(id, amount, SkinID);
                if (result == null) result = ItemManager.CreateByName(shortNameOrId, amount, SkinID);
                if (result != null && !string.IsNullOrEmpty(name)) result.name = name;
                if (result == null) Debug.LogWarning(RU ? "Не создан предмет[{0}]" : "Item [{0}] not created", shortNameOrId);
                return result;
            }
            public ItemDefinition GetItemDefinition() {
                if (_def != null) return _def;
                if (string.IsNullOrEmpty(shortNameOrId)) return null;
                ItemDefinition result = null;
                if (int.TryParse(shortNameOrId, out int id)) result = ItemManager.FindItemDefinition(id);
                if (result == null) result = ItemManager.FindDefinitionByPartialName(shortNameOrId);
                return _def = result;
            }
            internal Item CreateItem() {
                return ItemManager.Create(GetItemDefinition(), 1, SkinID);
            }
        }
        public struct LangKeyValue {
            [JsonProperty(RU ? "Ключ локализации" : "Localization key")]
            public string Key;
            [JsonProperty(RU ? "Значение локализации" : "Localization value")]
            public string En;
            public LangKeyValue(string key, string en) {
                Key = key;
                En = en;
            }
            public void AddLang(Dictionary<string, string> langDictionary) {
                if (!string.IsNullOrEmpty(Key)) {
                    if (!langDictionary.TryAdd(Key, !string.IsNullOrEmpty(En) ? En : Key)) {
                        Debug.LogWarning(RU ? "Ключ {0} уже существует" : "Key {0} already exists", Key);
                    }
                }
            }
        }
        public class EntityFarmUISetup {
            [JsonProperty(RU ? "Название объекта для UI, ключ добавится в lang файлы" : "Entity name for UI, the key will be added to the lang files", Order = 20)]
            public LangKeyValue NameEntity;
        }
        public class ItemUI {
            [JsonProperty(RU ? "Настройка предмета" : "Item setup", Order = 10)]
            public ItemSetup Item;
            public ItemUI() {
            }
            public ItemUI(string shortNameOrId, ulong skin) {
                Item = new(shortNameOrId, skin);
            }
            public ItemDefinition GetItemDefinition() => Item.GetItemDefinition();
            public bool EqualsItem(Item item2) {
                return EqualsItem(item2.info, item2.skin);
            }
            public bool EqualsItem(ItemDefinition def, ulong skin) {
                return GetItemDefinition() != null && def != null && def == GetItemDefinition() && skin == Item.SkinID;
            }
            public Item CreateItem() {
                return Item.CreateItem();
            }
        }
        public class ToolItem : ItemUI {
            [JsonProperty(RU ? "Выдавать предмет, если его нет на ферме?" : "Give item if there isn't any on farm?", Order = 5)]
            public bool CanCreate;
            public ToolItem() {
            }
            public ToolItem(string shortNameOrId, ulong skin, bool canCreate) : base(shortNameOrId, skin) {
                CanCreate = canCreate;
            }
        }
        protected override void LoadDefaultConfig() => config = Configuration.GetDefault();
        protected override void LoadConfig() {
            base.LoadConfig();
            if (config == null) {
#if DefaultConfig
                LoadDefaultConfig();
#else
                try {
                    bool isLastRu = RU;
                    if(Interface.Oxide.DataFileSystem.ExistsDatafile($"{Name}/{FolderNameConfig}/lastLangRU")) {
                        isLastRu = Interface.Oxide.DataFileSystem.ReadObject<bool>($"{Name}/{FolderNameConfig}/lastLangRU");
                    }
                    config = Config.ReadObject<Configuration>();
                    if (config == null || isLastRu != RU) {
                        LoadDataConfig();
                    }
                }
                catch (Exception ex) {
                    Debug.LogError("{0}", ex?.Message);
                    LoadDataConfig();
                }
#endif
            }
            SaveConfig();
        }
        public void LoadDataConfig() {
            try {
                if (Interface.Oxide.DataFileSystem.ExistsDatafile($"{Name}/{FolderNameConfig}/config")) {
                    config = JsonConvert.DeserializeObject<Configuration>(Interface.Oxide.DataFileSystem.ReadObject<string>($"{Name}/{FolderNameConfig}/config"), settingsSerializer);
                    if (config != null) {
                        Debug.LogWarning(RU ? "Данный конфигурации восстановлены из резервной копии" : "The configuration has been restored from backup");
                        return;
                    }
                }
            }
            catch (Exception ex) {
                Debug.LogError("{0}", ex?.Message);
            }
            LoadDefaultConfig();
        }
        public void SaveDataConfig() {
            Interface.Oxide.DataFileSystem.WriteObject($"{Name}/{FolderNameConfig}/config", JsonConvert.SerializeObject(config, Formatting.Indented, settingsSerializer));
            Interface.Oxide.DataFileSystem.WriteObject($"{Name}/{FolderNameConfig}/lastLangRU", RU);
        }
        protected override void SaveConfig() {
            Config.WriteObject(config);
            SaveDataConfig();
        }
#endregion
#region Localization
        protected override void LoadDefaultMessages() {
            Dictionary<string, string> ru = new Dictionary<string, string> {
                ["CreateFarmer_NotBuildingPrivlidge"]
                = "Не обнаружен шкаф для вызова персонального фермера", ["CreateFarmer_GiveFarmerBag"] = "Вы получили спальный мешок для вызова персонального фермера.\nРазместите его на ферме", ["CreateFarmer_InitializationFarmStart"] = "Фермер начал инициализацию постройки.", ["CreateFarmer_HasFarmerThisFarm"] = "За этой постройкой уже закреплен фермер.", ["CreateFarmer_NotDeployedPermission"] = "У Вас нет разрешения для вызова этого фермера", ["CreateFarmer_NotFoundFarmersToUseCommand"] = "Не найдено ботов, разрешенных для использования этой командой.", ["CreateFarmer_ListFarmersToUseCommand"] = "У Вас несколько ботов, для команды необходимо указать одного: {0}", ["InitFarm_AddRoutePoint"] = "Добавлена точка маршрута на ферме [{0}].", ["InitFarm_FindFarmObjects"] = "Поиск построек и объектов в зоне фермы", ["InitFarm_FindWaterPoint"] = "Поиск реки в зоне фермы, для набора воды", ["InitFarm_InitRoutePoints"] = "Создание навигационной сетки на ферме.", ["InitFarm_Complete"] = "Инициализация фермы завершена.\nНайдено:\nНавигационные точки: {0}\nКонтейнеры для хранения: {1}\nПлантации: {2}\nКомпостеры: {3}\nКурятники: {4}\nУлья: {5}\nНакопители воды: {6}\nПодход к реке: {7}", ["InitFarm_Tools"] = "Необходимые инструменты:\nПредмет для полива: {0}\nИнструмент для добычи: {1}\nПредмет для лечения: {2}", ["Error_NotWateringItem"] = "Не настроен предмет для переноса воды.", ["CanNotMiningItem"] = "Не разрешена добыча", ["CanNotMedicineItem"] = "Не разрешено лечение", ["FarmerCondition_Health"] = "Здоровье: {2}({0}/{1})", ["FarmerCondition_Calories"] = "Еда: {0}    Вода: {1}", ["Message_NotFoundRouteToCup"] = "Не дошел до шкафа", ["Message_NotFoundRouteToDeath"] = "Не дошел до места смерти", ["Message_NotFoundRouteToBag"] = "Не дошел до спальника", ["LogFarmer_InitializationFarm"] = "Начинаю инициализацию фермы.", ["LogFarmer_SetPathFarm"] = "Маршрут проложен, длинна {0} м.", ["LogFarmer_NotFoundRouteFarm"] = "Не удалось проложить маршрут на ферме.", ["LogFarmer_PickupDropDeathMove"] = "<color=yellow>Отправляюсь лутать свой труп...</color>", ["LogFarmer_SleepingMove"] = "<color=yellow>Отправляюсь спать...</color>", ["LogFarmer_AuthorizationMove"] = "<color=yellow>Отправляюсь регистрироваться в шкафу...</color>", ["LogFarmer_Planted"] = "Иду высаживать семена [{0}]", ["LogFarmer_PlantedWatering"] = "Иду поливать грядку", ["LogFarmer_Harvesting"] = "Иду собирать урожай", ["LogFarmer_FertilizerToPlanted"] = "Иду добавлять удобрения на грядку", ["LogFarmer_TakeClonesToPlanted"] = "Иду срезать клоны растений на грядке", ["LogFarmer_ChickenLove"] = "Иду гладить курочек", ["LogFarmer_ChickenWater"] = "Иду наливать воду в курятнике", ["LogFarmer_ChickenFood"] = "Иду накладывать корм в курятнике", ["LogFarmer_PickEgg"] = "Иду собирать яйца в курятнике", ["LogFarmer_EggHatching"] = "Несу яйцо на вылупление в курятник", ["LogFarmer_ClearInventory"] = "Иду освобождать инвентарь", ["LogFarmer_Composter"] = "Несу продукты/отходы в компостер на переработку", ["LogFarmer_BeehiveNucleus"] = "Несу ядро в улье", ["LogFarmer_HoneyComb"] = "Иду в улье собирать медовые соты", ["LogFarmer_NotFoundChickenFood"] = "<color=red>Не найден корм для кур</color>", ["LogFarmer_NotFoundNucleus"] = "<color=red>Не найдено ядро для улья</color>", ["LogFarmer_WateringItemNotFound"] = "<color=red>Не найден предмет для переноса воды</color>", ["LogFarmer_PickupDroppedItem"] = "<color=yellow>Иду подобрать брошенный предмет</color>", ["LogFarmer_PickupCollectedEntity"] = "<color=yellow>Иду собирать ресурсы</color>", ["LogFarmer_MiningResources"] = "<color=yellow>Иду добывать ресурсы</color>", ["LogFarmer_ToolMiningItemNotFound"] = "<color=red>Не найден предмет для добычи ресурсов</color>", ["LogFarmer_SortedStorages"] = "<color=yellow>Иду сортировать хранилище</color>", ["LogFarmer_BigDepth"] = "<color=red>Слишком глубоко</color>", ["LogFarmer_NewInitializationRequired"] = "<color=red>Требуется инициализация фермы</color>\nВ общих настройках фермы, запустите инициализацию...", ["LogFarmer_MetabolismNotFood"] = "<color=red>Не нашел еду на ферме, а так хочется есть...</color>\n", ["LogFarmer_MetabolismMedication"] = "<color=yellow>Иду лечиться</color>", ["LogFarmer_MetabolismFood"] = "<color=yellow>Иду кушать</color>", ["LogFarmer_MetabolismDrink"] = "<color=yellow>Иду пить воду</color>", [BrainFarmer.StatusFarmer.Idle.ToString()] = "Свободен({0} сек.)", [BrainFarmer.StatusFarmer.Initialization.ToString()] = "Инициализация фермы({0} сек.)", [BrainFarmer.StatusFarmer.NotInitialization.ToString()] = "Требуется инициализация фермы({0} сек.)", [BrainFarmer.StatusFarmer.Authorization.ToString()] = "Авторизация в шкафу({0} сек.)", [BrainFarmer.StatusFarmer.PickupDropDeath.ToString()] = "Возврат лута из трупа({0} сек.)", [BrainFarmer.StatusFarmer.Sleeping.ToString()] = "Отдыхаю({0} сек.)", [BrainFarmer.StatusFarmer.Eat.ToString()] = "Проголодался({0} сек.)", [BrainFarmer.StatusFarmer.Drink.ToString()] = "Хочется пить({0} сек.)", [BrainFarmer.StatusFarmer.Medication.ToString()] = "Надо подлечиться({0} сек.)", [BrainFarmer.StatusFarmer.ClearInventory.ToString()] = "Необходимо освободить инвентарь({0} сек.)", [BrainFarmer.StatusFarmer.Sorted.ToString()] = "Сортировка({0} сек.)", [BrainFarmer.StatusFarmer.Job.ToString()] = "Выполняю работу({0} сек.)", ["JobStatus_FindSeed"] = "Беру семена для посадки", ["JobStatus_PlantedSeeds"] = "Высаживаю семена", ["JobStatus_FindCanister"] = "Беру емкость для переноса воды", ["JobStatus_FindWater"] = "Набираю воду в емкость", ["JobStatus_Watering"] = "Поливаю плантацию", ["JobStatus_Harvesting"] = "Собираю урожай с плантации", ["JobStatus_FertilizerToPlanted"] = "Добавляю удобрения на грядку", ["JobStatus_TakeClonesToPlanted"] = "Срезаю клоны растений", ["JobStatus_ChickenLove"] = "Ухаживаю за курами в курятнике", ["JobStatus_ChickenWater"] = "Наливаю воду курам в курятнике", ["JobStatus_FindFoodChickens"] = "Беру еду для кур", ["JobStatus_FoodChickens"] = "Кормлю кур в курятнике", ["JobStatus_PickEgg"] = "Собираю яйца в курятнике", ["JobStatus_FindAndHatchingEgg"] = "Несу яйцо на вылупление в курятник", ["JobStatus_ClearInventory"] = "Освобождаю инвентарь", ["JobStatus_ComposableItemsToComposter"] = "Заполняю компостер для удобрений", ["JobStatus_BeehiveNucleus"] = "Размещаю ядро в улье", ["JobStatus_HoneyComb"] = "Собираю медовые соты с улья", ["JobStatus_PickupDroppedItem"] = "Подбираю брошенный предмет", ["JobStatus_PickupCollectedEntity"] = "Собираю ресурсы", ["JobStatus_FindToolMining"] = "Беру инструмент для добычи ресурсов", ["JobStatus_Mining"] = "Добываю ресурсы", ["UI_Title"] = "Менеджер фермы.", ["UI_Menu_Setup"] = "Настройки", ["UI_Menu_Storage"] = "Хранилище", ["UI_Menu_Production"] = "Производство", ["UI_Menu_Stats"] = "Статистика", ["UI_Menu_Logs"] = "Логи", ["UI_Menu_Setup_General"] = "Общие настройки", ["UI_InitFarm"] = "Инициализация фермы", ["UI_Menu_Setup_Farmer"] = "Настройки фермера", ["UI_Menu_Setup_Planters"] = "Настройки выращивания урожая", ["UI_Menu_Setup_Fertilizers"] = "Настройки производства удобрений", ["UI_Menu_Setup_Chickens"] = "Настройки разведения кур", ["UI_Menu_Setup_Beehives"] = "Настройки разведения пчел", ["UI_Expiration"] = "От скольки процентов срока годности продуктов, фермер будет считать нормальным?", ["UI_SendLogsToChat"] = "Отправлять логи в чат?", ["UI_SendLogsToConsole"] = "Отправлять логи в консоль?", ["UI_StopAll"] = "Отправить фермера спать?", ["UI_ShowFarmerStatus"] = "Отображать статус фермера?", ["UI_AllowCollectResources"] = "Разрешить фермеру собирать ресурсы?", ["UI_AllowMineResources"] = "Разрешить фермеру добывать ресурсы?", ["UI_AllowPickUpDroppedItems"] = "Разрешить фермеру подбирать предметы?", ["UI_SortedStorages"] = "Сортировать хранилище", ["UI_ActivateProduction"] = "Разрешить фермеру заниматься этим производством", ["UI_SwitcherPlantSeeds"] = "Разрешить высаживать семена?", ["UI_SwitcherAddFertilizers"] = "Разрешить удобрять грядки?", ["UI_SeedsEnabled"] = "Разрешенные семена для использования фермером", ["UI_SwitcherClone"] = "Разрешить клонирование?", ["UI_ClonesEnabled"] = "Разрешенные растения для срезания положительных клонов", ["UI_ItemsToComposter"] = "Предметы для компостирования, которые разрешены фермеру", ["UI_SwitcherComposterEnableItem"] = "Разрешить этот предмет?", ["UI_SwitcherComposterCountExpiration"] = "Учитывать срок годности?", ["UI_SwitcherRaiseChickens"] = "Разрешить фермеру самостоятельно разводить кур в курятниках?", ["UI_FoodToChickens"] = "Предметы для кормления кур, которые разрешены фермеру", ["UI_SwitcherFoodToChickensEnableItem"] = "Разрешить этот предмет?", ["UI_SwitcherFoodToChickensCountExpiration"] = "Учитывать срок годности?", ["UI_SwitchToAddNucleus"] = "Разрешить фермеру размещать ядра в ульях?", ["UI_Toggle_Access_Object"] = "Разрешить фермеру доступ к этому объекту", ["UI_EmptyMenuStorages"] = "Не найдены объекты для хранения, с которыми фермеру разрешено взаимодействовать.", ["UI_TitleInputNameContainer"] = "Введите свое название контейнера", ["UI_TitleFilterStorage"] = "Категории предметов доступных для хранения", ["UI_TitleStorageContentItems"] = "Содержимое контейнера", [ItemCategory.All.ToString()] = "Все", [ItemCategory.Weapon.ToString()] = "Оружие", [ItemCategory.Construction.ToString()] = "Конструкции", [ItemCategory.Items.ToString()] = "Предметы", [ItemCategory.Resources.ToString()] = "Ресурсы", [ItemCategory.Attire.ToString()] = "Одежда", [ItemCategory.Tool.ToString()] = "Инструменты", [ItemCategory.Medical.ToString()] = "Медицина", [ItemCategory.Food.ToString()] = "Еда", [ItemCategory.Ammunition.ToString()] = "Боеприпасы", [ItemCategory.Traps.ToString()] = "Ловушки", [ItemCategory.Misc.ToString()] = "Разное", [ItemCategory.Component.ToString()] = "Компоненты", [ItemCategory.Electrical.ToString()] = "Электричество", [ItemCategory.Fun.ToString()] = "Развлечения", ["UI_EmptyMenuProductions"] = "Не найдены объекты производств, с которыми фермеру разрешено взаимодействовать.", ["UI_EmptyMenuContentProductions"] = "Не найдены объекты для этого производства, с которыми фермеру разрешено взаимодействовать.", ["UI_Menu_Planters"] = "Плантации", ["UI_Menu_Fertilizers"] = "Удобрения", ["UI_Menu_Chickens"] = "Курятники", ["UI_Menu_Hives"] = "Улья", ["UI_Menu_Waters"] = "Вода", ["UI_TitleInputNameObject"] = "Введите свое название объекта", ["UI_TitlePlanterCloneEnabled"] = "Разрешить сажать клоны с положительными генами", ["UI_TitlePlanterSeedsEnabled"] = "Семена разрешенные для этой грядки", ["UI_NameButtonCopy"] = "Копировать", ["UI_NameButtonPaste"] = "Вставить", ["UI_TitlePlanterContentItems"] = "Содержимое контейнера грядки", ["UI_TitlePlanterGrowable"] = "Растения в грядке", ["UI_TitleFertilizerContentItems"] = "Содержимое компостера", ["UI_TitleChickenFoodWater"] = "Еда/вода", ["UI_TitleChickenProduction"] = "Продукция", ["UI_TitleChicken"] = "Курицы", ["UI_TitleBeehiveHoneycombs"] = "Медовые соты", [NucleusGrading.NucleusGrade.Grade1.ToString()] = "сорт 1", [NucleusGrading.NucleusGrade.Grade2.ToString()] = "сорт 2", [NucleusGrading.NucleusGrade.Grade3.ToString()] = "сорт 3", ["UI_ResetStats"] = "Сброс", ["UI_TitleStatsFarmer"] = "Статистика состояния фермера", ["UI_StateFarmerPrint"] = "Время жизни всего: <color=yellow>{0}</color>\nКоличество смертей: <color=red>{1}</color>\nВремя последней жизни: <color=green>{2}</color>\n\nПройдено метров: <color=blue>{3}</color>\n\n<color=yellow>{4}</color>", ["UI_TitleUsedItems"] = "Статистика потребления еды, воды, медикаментов", ["UI_TitleStatsPlanted"] = "Статистика работ на плантациях", ["UI_TitleStatsPlantedSeeds"] = "Статистика посаженных семян", ["UI_TitleStatsHarvested"] = "Статистика собранного урожая и срезанных клонов", ["UI_TitleStatsPlantedFertilizer"] = "Статистика добавленных удобрений на грядки", ["UI_TitleStatsPlantedWaters"] = "Статистика расхода воды на грядки", ["UI_TitleStatsComposter"] = "Статистика работ с компостерами", ["UI_TitleStatsItemsCompost"] = "Статистика переданных отходов в компостеры", ["UI_TitleStatsComposterFertilizer"] = "Статистика изъятых удобрений из компостеров", ["UI_TitleStatsChickenCoop"] = "Статистика работ в курятнике", ["UI_TitleStatsFeedChicken"] = "Статистика добавления корма в курятники", ["UI_TitleStatsStatsChickenCoopWaters"] = "Статистика добавления воды в курятники", ["UI_TitleStatsStatsEggs"] = "Статистика добавления яиц для вылупления", ["UI_TitleStatsStatsEggsCollected"] = "Статистика собранных яиц в курятниках", ["UI_TitleStatsBeehives"] = "Статистика работ с ульями", ["UI_TitleStatsNucleus"] = "Статистика добавления ядер в улья", ["UI_TitleStatsHoney"] = "Статистика сбора медовых сот", ["UI_TitleStatsResourcesCollected"] = "Статистика подбора ресурсов", ["UI_TitleStatsCollectedItems"] = "Ресурсы собранные фермером", ["UI_TitleStatsMiningResources"] = "Статистика добычи ресурсов", ["UI_TitleStatsMiningItems"] = "Ресурсы добытые фермером", ["UI_InfoBuffer"] = "Размер буфера: {0}/{1}, текущий: {2}", ["UI_ClearLogs"] = "Очистить",
            }
            ;
            Dictionary<string, string> en = new Dictionary<string, string> {
                ["CreateFarmer_NotBuildingPrivilege"]
                = "Cupboard is not found!", ["CreateFarmer_GiveFarmerBag"] = "You've received a sleeping bag to spawn personal farmer.\nPlace it on your farm!", ["CreateFarmer_InitializationFarmStart"] = "Farmer has started building initialization.", ["CreateFarmer_HasFarmerThisFarm"] = "A farmer is already assigned to this farm.", ["CreateFarmer_NotDeployedPermission"] = "You don't have permission to deploy this farmer", ["CreateFarmer_NotFoundFarmersToUseCommand"] = "No bots found that can be used by this command.", ["CreateFarmer_ListFarmersToUseCommand"] = "You have multiple bots - specify one for the command: {0}", ["InitFarm_AddRoutePoint"] = "Route point added on farm [{0}].", ["InitFarm_FindFarmObjects"] = "Searching for buildings and objects in the farm area...", ["InitFarm_FindWaterPoint"] = "Searching for a river in the farm area to collect water...", ["InitFarm_InitRoutePoints"] = "Creating navigation grid on the farm...", ["InitFarm_Complete"] = "Farm initialization completed.\nFound:\nNavigation points: {0}\nStorage containers: {1}\nPlantations: {2}\nComposters: {3}\nChicken coops: {4}\nBeehives: {5}\nWater tanks: {6}\nRiver points: {7}", ["InitFarm_Tools"] = "Required tools:\nWatering item: {0}\nMining tool: {1}\nMedicine item: {2}", ["Error_NotWateringItem"] = "Water carrying item is not configured.", ["CanNotMiningItem"] = "Mining is not allowed!", ["CanNotMedicineItem"] = "Healing is not allowed!", ["FarmerCondition_Health"] = "Health: {2}({0}/{1})", ["FarmerCondition_Calories"] = "Food: {0}    Water: {1}", ["Message_NotFoundRouteToCup"] = "Did not reach the cupboard", ["Message_NotFoundRouteToDeath"] = "Did not reach the place of death", ["Message_NotFoundRouteToBag"] = "Did not reach the sleeping bag", ["LogFarmer_InitializationFarm"] = "Starting farm initialization...", ["LogFarmer_SetPathFarm"] = "Path set, length {0} m.", ["LogFarmer_NotFoundRouteFarm"] = "Failed to set navigation route!", ["LogFarmer_PickupDropDeathMove"] = "<color=yellow>Going to loot my corpse...</color>", ["LogFarmer_SleepingMove"] = "<color=yellow>Going to sleep...</color>", ["LogFarmer_AuthorizationMove"] = "<color=yellow>Going to authorize in cupboard...</color>", ["LogFarmer_Planted"] = "Going to plant seeds [{0}]...", ["LogFarmer_PlantedWatering"] = "Going to water the planter...", ["LogFarmer_Harvesting"] = "Going to harvest crops...", ["LogFarmer_FertilizerToPlanted"] = "Going to add fertilizer to planter", ["LogFarmer_TakeClonesToPlanted"] = "Going to cut plant clones in planter...", ["LogFarmer_ChickenLove"] = "Going to pet chickens...", ["LogFarmer_ChickenWater"] = "Going to fill water in chicken coop...", ["LogFarmer_ChickenFood"] = "Going to feed chickens in the coop...", ["LogFarmer_PickEgg"] = "Going to collect eggs in the coop...", ["LogFarmer_EggHatching"] = "Carrying egg to hatch in the coop...", ["LogFarmer_ClearInventory"] = "Going to clear inventory...", ["LogFarmer_Composter"] = "Carrying items to composter for processing...", ["LogFarmer_BeehiveNucleus"] = "Carrying nucleus to beehive...", ["LogFarmer_HoneyComb"] = "Going to collect honeycomb from beehive...", ["LogFarmer_NotFoundChickenFood"] = "<color=red>Chicken feed not found!</color>", ["LogFarmer_NotFoundNucleus"] = "<color=red>No nucleus found for beehive!</color>", ["LogFarmer_WateringItemNotFound"] = "<color=red>Water carrying item not found!</color>", ["LogFarmer_PickupDroppedItem"] = "<color=yellow>Going to pick up dropped item...</color>", ["LogFarmer_PickupCollectedEntity"] = "<color=yellow>Going to collect resources...</color>", ["LogFarmer_MiningResources"] = "<color=yellow>Going to mine resources...</color>", ["LogFarmer_ToolMiningItemNotFound"] = "<color=red>Mining tool not found!</color>", ["LogFarmer_SortedStorages"] = "<color=yellow>Going to sort storage...</color>", ["LogFarmer_BigDepth"] = "<color=red>Too deep!</color>", ["LogFarmer_NewInitializationRequired"] = "<color=red>Farm initialization required!</color>\nStart initialization in general farm settings.", ["LogFarmer_MetabolismNotFood"] = "<color=red>No food found on farm, but I'm hungry...</color>\n", ["LogFarmer_MetabolismMedication"] = "<color=yellow>Going to heal...</color>", ["LogFarmer_MetabolismFood"] = "<color=yellow>Going to eat...</color>", ["LogFarmer_MetabolismDrink"] = "<color=yellow>Going to drink water...</color>", [BrainFarmer.StatusFarmer.Idle.ToString()] = "Idle ({0} sec.)", [BrainFarmer.StatusFarmer.Initialization.ToString()] = "Farm initialization ({0} sec.)", [BrainFarmer.StatusFarmer.NotInitialization.ToString()] = "Farm initialization required ({0} sec.)", [BrainFarmer.StatusFarmer.Authorization.ToString()] = "Authorizing cupboard ({0} sec.)", [BrainFarmer.StatusFarmer.PickupDropDeath.ToString()] = "Returning to corpse ({0} sec.)", [BrainFarmer.StatusFarmer.Sleeping.ToString()] = "Resting ({0} sec.)", [BrainFarmer.StatusFarmer.Eat.ToString()] = "Hungry ({0} sec.)", [BrainFarmer.StatusFarmer.Drink.ToString()] = "Thirsty ({0} sec.)", [BrainFarmer.StatusFarmer.Medication.ToString()] = "Need to heal ({0} sec.)", [BrainFarmer.StatusFarmer.ClearInventory.ToString()] = "Need to clear inventory ({0} sec.)", [BrainFarmer.StatusFarmer.Sorted.ToString()] = "Sorting ({0} sec.)", [BrainFarmer.StatusFarmer.Job.ToString()] = "Working ({0} sec.)", ["JobStatus_FindSeed"] = "Taking seeds for planting...", ["JobStatus_PlantedSeeds"] = "Planting seeds...", ["JobStatus_FindCanister"] = "Taking container to carry water...", ["JobStatus_FindWater"] = "Filling container with water...", ["JobStatus_Watering"] = "Watering planter...", ["JobStatus_Harvesting"] = "Harvesting crops from planter...", ["JobStatus_FertilizerToPlanted"] = "Putting fertilizer to planter...", ["JobStatus_TakeClonesToPlanted"] = "Cutting plant clones...", ["JobStatus_ChickenLove"] = "Caring for chickens in coop...", ["JobStatus_ChickenWater"] = "Filling water for chickens in coop...", ["JobStatus_FindFoodChickens"] = "Taking food for chickens...", ["JobStatus_FoodChickens"] = "Feeding chickens in coop...", ["JobStatus_PickEgg"] = "Collecting eggs in coop...", ["JobStatus_FindAndHatchingEgg"] = "Carrying egg to hatch in coop...", ["JobStatus_ClearInventory"] = "Emptying inventory...", ["JobStatus_ComposableItemsToComposter"] = "Filling composter with compostable items...", ["JobStatus_BeehiveNucleus"] = "Placing nucleus in beehive...", ["JobStatus_HoneyComb"] = "Collecting honeycomb from beehive...", ["JobStatus_PickupDroppedItem"] = "Going to pickup dropped item...", ["JobStatus_PickupCollectedEntity"] = "Collecting resources...", ["JobStatus_FindToolMining"] = "Going to take mining tool...", ["JobStatus_Mining"] = "Mining resources...", ["UI_Title"] = "Farm Manager", ["UI_Menu_Setup"] = "Settings", ["UI_Menu_Storage"] = "Storage", ["UI_Menu_Production"] = "Production", ["UI_Menu_Stats"] = "Statistics", ["UI_Menu_Logs"] = "Logs", ["UI_Menu_Setup_General"] = "General", ["UI_InitFarm"] = "Farm initialization", ["UI_Menu_Setup_Farmer"] = "Farmer", ["UI_Menu_Setup_Planters"] = "Crop growing", ["UI_Menu_Setup_Fertilizers"] = "Fertilizer production", ["UI_Menu_Setup_Chickens"] = "Chicken breeding", ["UI_Menu_Setup_Beehives"] = "Beekeeping", ["UI_Expiration"] = "Target percent to mark the item as not spoiled", ["UI_SendLogsToChat"] = "Send logs to chat?", ["UI_SendLogsToConsole"] = "Send logs to console?", ["UI_StopAll"] = "Send farmer to sleep?", ["UI_ShowFarmerStatus"] = "Show farmer status?", ["UI_AllowCollectResources"] = "Allow farmer to collect resources?", ["UI_AllowMineResources"] = "Allow farmer to mine resources?", ["UI_AllowPickUpDroppedItems"] = "Allow farmer to pick up items?", ["UI_SortedStorages"] = "Sort storage", ["UI_ActivateProduction"] = "Allow farmer to participate in this production", ["UI_SwitcherPlantSeeds"] = "Allow planting seeds?", ["UI_SwitcherAddFertilizers"] = "Allow fertilizing planters?", ["UI_SeedsEnabled"] = "Allowed seeds for farmer use", ["UI_SwitcherClone"] = "Allow cloning?", ["UI_ClonesEnabled"] = "Allowed plants for positive clone cutting", ["UI_ItemsToComposter"] = "Compostable items allowed for farmer", ["UI_SwitcherComposterEnableItem"] = "Allow this item?", ["UI_SwitcherComposterCountExpiration"] = "Do not include spoiled items?", ["UI_SwitcherRaiseChickens"] = "Allow farmer to breed chickens in coops?", ["UI_FoodToChickens"] = "Chicken feed items allowed for farmer", ["UI_SwitcherFoodToChickensEnableItem"] = "Allow this item?", ["UI_SwitcherFoodToChickensCountExpiration"] = "Do not include spoiled items?", ["UI_SwitchToAddNucleus"] = "Allow farmer to place nucleus in beehives?", ["UI_Toggle_Access_Object"] = "Allow farmer to access this object", ["UI_EmptyMenuStorages"] = "No available storage objects found to interact with.", ["UI_TitleInputNameContainer"] = "Enter your container name", ["UI_TitleFilterStorage"] = "Categories of items available for storage", ["UI_TitleStorageContentItems"] = "Container contents", ["UI_EmptyMenuProductions"] = "No available objects found to interact with.", ["UI_EmptyMenuContentProductions"] = "No available objects found to interact with.", ["UI_Menu_Planters"] = "Planters", ["UI_Menu_Fertilizers"] = "Fertilizers", ["UI_Menu_Chickens"] = "Chicken coops", ["UI_Menu_Hives"] = "Beehives", ["UI_Menu_Waters"] = "Water", ["UI_TitleInputNameObject"] = "Enter your object name", ["UI_TitlePlanterCloneEnabled"] = "Allow planting of clones with positive genes", ["UI_TitlePlanterSeedsEnabled"] = "Seeds allowed for this planter", ["UI_NameButtonCopy"] = "Copy", ["UI_NameButtonPaste"] = "Paste", ["UI_TitlePlanterContentItems"] = "Planter container contents", ["UI_TitlePlanterGrowable"] = "Plants in planter", ["UI_TitleFertilizerContentItems"] = "Composter contents", ["UI_TitleChickenFoodWater"] = "Food/Water", ["UI_TitleChickenProduction"] = "Production", ["UI_TitleChicken"] = "Chickens", ["UI_TitleBeehiveHoneycombs"] = "Honeycombs", ["UI_ResetStats"] = "Reset", ["UI_TitleStatsFarmer"] = "Farmer status stats", ["UI_StateFarmerPrint"] = "Total lifetime: <color=yellow>{0}</color>\nNumber of deaths: <color=red>{1}</color>\nLast life duration: <color=green>{2}</color>\n\nMeters traveled: <color=blue>{3}</color>\n\n<color=yellow>{4}</color>", ["UI_TitleUsedItems"] = "Food, water, and medication consumption stats", ["UI_TitleStatsPlanted"] = "Planters work stats", ["UI_TitleSt
// ... [Code preview truncated due to length. Full source in attached file] ...

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