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

FREE BiomeChatPrefix : 2.0.2 2.0.2

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
/*
 * TODO
 * - Add commands
 * - Add individual player exclusions
 * - Permissions for biomes instead of a all in 1 permission 
 */
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins {
    [Info("Biome Chat Prefix", "Enforcer", "2.0.2")]
    [Description("Adds a prefix when a player is in a certain biome")]
    public class BiomeChatPrefix : RustPlugin {
#region References
        [PluginReference]
        Plugin BetterChat;
#endregion
#region Field
        private List<JObject> groupList = new List<JObject>();
#endregion
#region Permissions
        private const string showPerm = "biomechatprefix.show";
#endregion
#region Init
        private void OnServerInitialized() {
            permission.RegisterPermission(showPerm, this);
            if (BetterChat != null && BetterChat.IsLoaded) {
                Unsubscribe(nameof(OnPlayerChat));
            }
        }
#endregion
#region Hooks
        object OnPlayerChat(BasePlayer player, string message) {
            if (permission.UserHasPermission(player.UserIDString, showPerm)) {
                string region = GetRegion(player, player.transform.position);
                if (region != "NoRegion") {
                    Server.Broadcast(message, region, player.userID);
                    return true;
                }
            }
            return null;
        }
        Dictionary<string, object> OnBetterChat(Dictionary<string, object> data) {
            var player = (data["Player"] as IPlayer).Object as BasePlayer;
            if (permission.UserHasPermission(player.UserIDString, showPerm)) {
                var message = data["Message"].ToString();
                var region = GetRegion(player, player.transform.position);
                var format = string.Format(region + " " + message);
                data["Message"] = format;
            }
            return data;
        }
#endregion
#region Functions
        // Gets the Region the player is currently in
        string GetRegion(BasePlayer player, Vector3 Pos) {
            if (config.aridRegionSettings.enableAridRegion) {
                if (TerrainMeta.BiomeMap.GetBiome(Pos, 1) > 0.5f) {
                    if (config.aridRegionSettings.useAridRegionPrefix) {
                        if (player.net.connection.authLevel == 2 && config.aridRegionSettings.aridRegionExclusions.addPrefixToAdmins || player.net.connection.authLevel == 1 && config.aridRegionSettings.aridRegionExclusions.addPrefixToModerators) {
                            return $"<color={config.aridRegionSettings.aridChatPrefixColour}>{config.aridRegionSettings.aridRegionPrefix}</color>";
                        }
                        return player.net.connection.authLevel >= 1 ? "NoRegion" : $"<color={config.aridRegionSettings.aridChatPrefixColour}>{config.aridRegionSettings.aridRegionPrefix}</color>";
                    }
                }
            }
            if (config.temperateRegionSettings.enableTemperateRegion) {
                if (TerrainMeta.BiomeMap.GetBiome(Pos, 2) > 0.5f) {
                    if (config.temperateRegionSettings.useTemperateRegionPrefix) {
                        if (player.net.connection.authLevel == 2 && config.temperateRegionSettings.temperateRegionExclusions.addPrefixToAdmins || player.net.connection.authLevel == 1 && config.temperateRegionSettings.temperateRegionExclusions.addPrefixToModerators) {
                            return $"<color={config.temperateRegionSettings.temperateChatPrefixColour}>{config.temperateRegionSettings.TemperateRegionPrefix}</color>";
                        }
                        return player.net.connection.authLevel >= 1 ? "NoRegion" : $"<color={config.temperateRegionSettings.temperateChatPrefixColour}>{config.temperateRegionSettings.TemperateRegionPrefix}</color>";
                    }
                }
            }
            if (config.tundraRegionSettings.enableTundraRegion) {
                if (TerrainMeta.BiomeMap.GetBiome(Pos, 4) > 0.5f) {
                    if (config.tundraRegionSettings.useTundraRegionPrefix) {
                        if (player.net.connection.authLevel == 2 && config.tundraRegionSettings.tundraRegionExclusions.addPrefixToAdmins || player.net.connection.authLevel == 1 && config.tundraRegionSettings.tundraRegionExclusions.addPrefixToModerators) {
                            return $"<color={config.tundraRegionSettings.TundraChatPrefixColour}>{config.tundraRegionSettings.TundraRegionPrefix}</color>";
                        }
                        return player.net.connection.authLevel >= 1 ? "NoRegion" : $"<color={config.tundraRegionSettings.TundraChatPrefixColour}>{config.tundraRegionSettings.TundraRegionPrefix}</color>";
                    }
                }
            }
            if (config.arcticRegionSettings.enableArcticRegion) {
                if (TerrainMeta.BiomeMap.GetBiome(Pos, 8) > 0.5f) {
                    if (config.arcticRegionSettings.useArcticRegionPrefix) {
                        if (player.net.connection.authLevel == 2 && config.arcticRegionSettings.arcticRegionExclusions.addPrefixToAdmins || player.net.connection.authLevel == 1 && config.arcticRegionSettings.arcticRegionExclusions.addPrefixToModerators) {
                            return $"<color={config.arcticRegionSettings.arcticChatPrefixColour}>{config.arcticRegionSettings.arcticRegionPrefix}</color>";
                        }
                        return player.net.connection.authLevel >= 1 ? "NoRegion" : $"<color={config.arcticRegionSettings.arcticChatPrefixColour}>{config.arcticRegionSettings.arcticRegionPrefix}</color>";
                    }
                }
            }
            return "NoRegion";
        }
#endregion
#region Config
        ConfigData config;
        public class ConfigData {
            [JsonProperty(PropertyName = "Arid (Desert) Biome")]
            public AridRegionSettings aridRegionSettings {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Temperate (Grass) Biome")]
            public TemperateRegionSettings temperateRegionSettings {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Tundra (Forest) Biome")]
            public TundraRegionSettings tundraRegionSettings {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arctic (Snow) Biome")]
            public ArcticRegionSettings arcticRegionSettings {
                get;
                set;
            }
        }
        public class AridRegionSettings {
            [JsonProperty(PropertyName = "Enable arid biome")]
            public bool enableAridRegion {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Use arid biome chat prefix")]
            public bool useAridRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arid biome prefix")]
            public string aridRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arid biome prefix/name colour")]
            public string aridChatPrefixColour {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arid biome Exclusions")]
            public Exclusions aridRegionExclusions {
                get;
                set;
            }
        }
        public class TemperateRegionSettings {
            [JsonProperty(PropertyName = "Enable temperate biome")]
            public bool enableTemperateRegion {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Use temperate biome chat prefix")]
            public bool useTemperateRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Temperate biome prefix")]
            public string TemperateRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Temperate biome prefix/name colour")]
            public string temperateChatPrefixColour {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arctic Biome Exclusions")]
            public Exclusions temperateRegionExclusions {
                get;
                set;
            }
        }
        public class TundraRegionSettings {
            [JsonProperty(PropertyName = "Enable tundra biome")]
            public bool enableTundraRegion {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Use tundra biome chat prefix")]
            public bool useTundraRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Tundra biome prefix")]
            public string TundraRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Tundra biome prefix/name colour")]
            public string TundraChatPrefixColour {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Tundra Biome Exclusions")]
            public Exclusions tundraRegionExclusions {
                get;
                set;
            }
        }
        public class ArcticRegionSettings {
            [JsonProperty(PropertyName = "Enable arctic biome")]
            public bool enableArcticRegion {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Use arctic biome chat prefix")]
            public bool useArcticRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arctic biome prefix")]
            public string arcticRegionPrefix {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arctic biome prefix/name colour")]
            public string arcticChatPrefixColour {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Arctic Biome Exclusions")]
            public Exclusions arcticRegionExclusions {
                get;
                set;
            }
        }
        public class Exclusions {
            [JsonProperty(PropertyName = "Add prefix to admins")]
            public bool addPrefixToAdmins {
                get;
                set;
            }
            [JsonProperty(PropertyName = "Add prefix to moderators")]
            public bool addPrefixToModerators {
                get;
                set;
            }
        }
        protected override void LoadConfig() {
            base.LoadConfig();
            try {
                config = Config.ReadObject<ConfigData>();
                if (config == null) {
                    LoadDefaultConfig();
                }
            }
            catch {
                PrintError($"{Name}.json is corrupted! Recreating a new configuration");
                LoadDefaultConfig();
                return;
            }
            SaveConfig();
        }
        protected override void LoadDefaultConfig() {
            config = new ConfigData() {
                aridRegionSettings = new AridRegionSettings() {
                    enableAridRegion = true, useAridRegionPrefix = true, aridRegionPrefix = "[Desert]", aridChatPrefixColour = "#D38D4B", aridRegionExclusions = new Exclusions() {
                        addPrefixToAdmins = true, addPrefixToModerators = true,
                    }
                }
                , temperateRegionSettings = new TemperateRegionSettings() {
                    enableTemperateRegion = true, useTemperateRegionPrefix = true, TemperateRegionPrefix = "[Grass]", temperateChatPrefixColour = "#348C31", temperateRegionExclusions = new Exclusions() {
                        addPrefixToAdmins = true, addPrefixToModerators = true,
                    }
                }
                , tundraRegionSettings = new TundraRegionSettings() {
                    enableTundraRegion = true, useTundraRegionPrefix = true, TundraRegionPrefix = "[Forest]", TundraChatPrefixColour = "#014421", tundraRegionExclusions = new Exclusions() {
                        addPrefixToAdmins = true, addPrefixToModerators = true,
                    }
                }
                , arcticRegionSettings = new ArcticRegionSettings() {
                    enableArcticRegion = true, useArcticRegionPrefix = true, arcticRegionPrefix = "[Snow]", arcticChatPrefixColour = "white", arcticRegionExclusions = new Exclusions() {
                        addPrefixToAdmins = true, addPrefixToModerators = true,
                    }
                }
            }
            ;
            PrintWarning("Creating a new configuration file!");
        }
        protected override void SaveConfig() => Config.WriteObject(config);
#endregion
    }
}

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