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

FREE DemolishLimiter : 1.0.1 1.0.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
// Reference: Oxide.Ext.Rust

using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;

namespace Oxide.Plugins
{

    [Info("Demolish Limiter", "Mughisi", "1.0.1")]
    class DemolishLimiter : RustPlugin
    {

        #region Configuration Data

        private bool configChanged = false;

        // Plugin settings
        string defaultChatPrefix = "Demolisher";
        string defaultChatPrefixColor = "#008000ff";

        string chatPrefix;
        string chatPrefixColor;

        // Plugin options
        bool defaultAdminCanDemolish = true;
        bool defaultModeratorCanDemolish = false;
        bool defaultLogDemolishToConsole = true;

        bool adminCanDemolish;
        bool moderatorCanDemolish;
        bool logToConsole;
        
        // Plugin messages
        string defaultNotAllowed = "You are not allowed to demolish anything.";
        
        string notAllowed;

        #endregion

        void Loaded()
        {
            LoadConfigValues();
        }

        protected override void LoadDefaultConfig()
        {
            Log("New configuration file created.");
        }

        void LoadConfigValues()
        {
            // Plugin settings
            chatPrefix = Convert.ToString(GetConfigValue("Settings", "ChatPrefix", defaultChatPrefix));
            chatPrefixColor = Convert.ToString(GetConfigValue("Settings", "ChatPrefixColor", defaultChatPrefixColor));

            // Plugin options
            adminCanDemolish = Convert.ToBoolean(GetConfigValue("Options", "AdminsCanDemolish", defaultAdminCanDemolish));
            moderatorCanDemolish = Convert.ToBoolean(GetConfigValue("Options", "ModeratorsCanDemolish", defaultModeratorCanDemolish));
            logToConsole = Convert.ToBoolean(GetConfigValue("Options", "LogToConsole", defaultLogDemolishToConsole));

            // Plugin messages
            notAllowed = Convert.ToString(GetConfigValue("Messages", "NotAllowed", defaultNotAllowed));

            if (configChanged)
            {
                Log("Configuration file updated.");
                SaveConfig();
            }
        }
        
        object OnBuildingBlockDemolish(BuildingBlock block, BasePlayer player)
        {
            int demolisherAuthLevel = player.net.connection.authLevel;

            if ((demolisherAuthLevel == 1 && !moderatorCanDemolish) || (demolisherAuthLevel == 2 && !adminCanDemolish))
            {
                SendChatMessage(player, notAllowed);
                return true;
            }

            if (logToConsole)
                Log($"{player.displayName} has demolished a {block.blockDefinition.hierachyName} at location {block.transform.position.ToString()}.");

            return null;
        }

        #region Helper methods
        void Log(string message)
        {
            Puts("{0} : {1}", Title, message);
        }

        void SendChatMessage(BasePlayer player, string message, string arguments = null)
        {
            string chatMessage = $"<color={chatPrefixColor}>{chatPrefix}</color>: {message}";
            player?.SendConsoleCommand("chat.add", -1, string.Format(chatMessage, arguments), 1.0);
        }

        object GetConfigValue(string category, string setting, object defaultValue)
        {
            var data = Config[category] as Dictionary<string, object>;
            object value;
            if (data == null)
            {
                data = new Dictionary<string, object>();
                Config[category] = data;
                configChanged = true;
            }
            if (!data.TryGetValue(setting, out value))
            {
                value = defaultValue;
                data[setting] = value;
                configChanged = true;
            }
            return value;
        }

        void SetConfigValue(string category, string setting, object newValue)
        {
            var data = Config[category] as Dictionary<string, object>;
            object value;
            if (data.TryGetValue(setting, out value))
            {
                value = newValue;
                data[setting] = value;
                configChanged = true;
            }
            SaveConfig();
        }
        #endregion
    }

}

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