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

FREE DeployRestrict : 0.0.6 0.0.6

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("DeployRestrict", "дестерн", "0.0.6")]
    public class DeployRestrict : RustPlugin
    {
        public Dictionary<ulong, PlayerData> dictData = new Dictionary<ulong, PlayerData>();
        public class PlayerData
        {
            public List<BaseEntity> campfires = new List<BaseEntity>();
            public List<BaseEntity> furnaces = new List<BaseEntity>();
            public List<BaseEntity> largeFurnaces = new List<BaseEntity>();
        }
        public Configuration cfg;
        public class Configuration
        {
            [JsonProperty("Максимум костров")]
            public int maxCampfires;
            [JsonProperty("Максимум печей")]
            public int maxFurnaces;
            [JsonProperty("Максимум больших печей")]
            public int maxLargeFurnaces;
            [JsonProperty("Логировать в консоль случаи превышения лимита")]
            public bool needLog;
        }

        protected override void LoadConfig()
        {
            base.LoadConfig();
            try
            {
                cfg = Config.ReadObject<Configuration>();
                if (cfg == null)
                    LoadDefaultConfig();
            }
            catch
            {
                PrintWarning("С конфигом что-то не то.Создан новый.");
                LoadDefaultConfig();
            }
            NextTick(SaveConfig);
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(cfg);
        }

        protected override void LoadDefaultConfig()
        {
            cfg = new Configuration
            {
                maxCampfires = 1,
                maxFurnaces = 5,
                maxLargeFurnaces = 2,
                needLog = true
            };
        }
        private void OnServerInitialized()
        {
            foreach (BasePlayer player in BasePlayer.activePlayerList)
                OnPlayerInit(player);
        }
        private void OnEntitySpawned(BaseNetworkable ent)
        {
            BaseEntity entity = ent as BaseEntity;
            ulong playerID = entity.OwnerID;
            if (playerID == 0)
                return;
            if (!dictData.ContainsKey(playerID))
            {
                PrintWarning("Игрока почему-то нет в словаре.");
                return;
            }
            PlayerData data = dictData[playerID];
            if (entity.ShortPrefabName == "campfire")
            {
                if (data.campfires.Count >= cfg.maxCampfires)
                {
                    if (cfg.needLog)
                        PrintWarning($"{playerID} превысил лимит по кострам.");
                    if (data.campfires[0].IsValid())
                        data.campfires[0].Kill();
                    data.campfires.Remove(data.campfires[0]);
                    data.campfires.Add(entity);
                    return;
                }
                else
                {
                    data.campfires.Add(entity);
                    return;
                }
            }
            else if (entity.ShortPrefabName == "furnace")
            {
                if (data.furnaces.Count >= cfg.maxFurnaces)
                {
                    if (cfg.needLog)
                        PrintWarning($"{playerID} превысил лимит по печкам.");
                    if (data.furnaces[0].IsValid())
                        data.furnaces[0].Kill();
                    data.furnaces.Remove(data.furnaces[0]);
                    data.furnaces.Add(entity);
                    return;
                }
                else
                {
                    data.furnaces.Add(entity);
                    return;
                }
            }
            else if (entity.ShortPrefabName == "furnace.large")
            {
                if (data.largeFurnaces.Count >= cfg.maxLargeFurnaces)
                {
                    if (cfg.needLog)
                        PrintWarning($"{playerID} превысил лимит по большим печкам.");
                    if (data.largeFurnaces[0].IsValid())
                        data.largeFurnaces[0].Kill();
                    data.largeFurnaces.Remove(data.largeFurnaces[0]);
                    data.largeFurnaces.Add(entity);
                    return;
                }
                else
                {
                    data.largeFurnaces.Add(entity);
                    return;
                }
            }
        }

        private void OnPlayerInit(BasePlayer player)
        {
            if (!dictData.ContainsKey(player.userID))
            {
                dictData.Add(player.userID, new PlayerData());
            }
        }
    }
}

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