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

FREE RainbowName : 1.0.3 1.0.3

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Libraries.Covalence;
using Oxide.Core.Plugins;
using Random = System.Random;
namespace Oxide.Plugins {
    [Info("Rainbow Name", "sami37", "1.0.3")]
    [Description("Set your vip a special color name")]
    public class RainbowName : RustPlugin {
        [PluginReference]
        Plugin BetterChat;
        private string colors;
        private List<string> colorsList = new List<string>();
        private Random rand = new Random();
        private DynamicConfigFile PDATA;
        PlayersData pdata;
        public class PlayersData {
            public Dictionary<string, bool> StatePlayers = new Dictionary<string, bool>();
        }
#region config
        void Init() {
            permission.RegisterPermission("rainbowname.color", this);
        }
        protected override void LoadDefaultConfig() {
            Config.Clear();
            LoadConfig();
        }
#endregion
        void Loaded() {
            PDATA = Interface.Oxide.DataFileSystem.GetFile(this.Title + "_Player");
            pdata = PDATA.ReadObject<PlayersData>();
            if (pdata?.StatePlayers == null) pdata = new PlayersData();
            Unsubscribe(nameof(OnBetterChat));
            LoadConfig();
        }
        string ListToString<T>(List<T> list, int first = 0, string seperator = ", ") {
            return string.Join(seperator, list.Select(val => val.ToString()).Skip(first).ToArray());
        }
        void SetConfig(params object[] args) {
            List<string> stringArgs = new List<string>();
            foreach (var arg in args) stringArgs.Add(arg.ToString());
            stringArgs.RemoveAt(args.Length - 1);
            if (Config.Get(stringArgs.ToArray()) == null) Config.Set(args);
        }
        T GetConfig<T>(T defaultVal, params object[] args) {
            List<string> stringArgs = new List<string>();
            foreach (var arg in args) stringArgs.Add(arg.ToString());
            if (Config.Get(stringArgs.ToArray()) == null) {
                PrintError($"The plugin failed to read something from the config: {ListToString(stringArgs, 0, "/")}{Environment.NewLine}Please reload the plugin and see if this message is still showing.If so, please post this into the support thread of this plugin.");
                return defaultVal;
            }
            return (T) Convert.ChangeType(Config.Get(stringArgs.ToArray()), typeof(T));
        }
        void LoadConfig() {
            SetConfig("General", "Color List", "#20b2aa,#e0eee0,#333333,#474747,#aeeeee,#7ccd7c,#bcd2ee,#ee7942,#ffc1c1,#228b22,#454545,#eecbad,#ff83fa,#00ffff,#9e9e9e,#7a7a7a,#ff6a6a,#a52a2a,#f08080,#838b8b,#050505,#eee5de,#cdb38b,#00b2ee,#8b7355,#ffffe0,#a3a3a3,#8b814c,#b5b5b5,#cdc9a5");
            SaveConfig();
            colors = GetConfig("#20b2aa,#e0eee0,#333333,#474747,#aeeeee,#7ccd7c,#bcd2ee,#ee7942,#ffc1c1,#228b22,#454545,#eecbad,#ff83fa,#00ffff,#9e9e9e,#7a7a7a,#ff6a6a,#a52a2a,#f08080,#838b8b,#050505,#eee5de,#cdb38b,#00b2ee,#8b7355,#ffffe0,#a3a3a3,#8b814c,#b5b5b5,#cdc9a5", "General", "Color List");
            colorsList = colors.Split(',').ToList();
        }
        bool BetterChatIns() => (BetterChat != null);
        object OnPlayerChat(ConsoleSystem.Arg arg) {
            if (BetterChatIns()) return null;
            BasePlayer player = (BasePlayer)arg.Connection.player;
            if (pdata.StatePlayers.ContainsKey(player.UserIDString) && pdata.StatePlayers[player.UserIDString] == false) return null;
            if (!permission.UserHasPermission(player.UserIDString, "rainbowname.color")) return null;
            string charName = StripRichText(player.displayName);
            string[] stringarry = new string[charName.Length];
            for (int i = 0; i < charName.Length; i++) {
                stringarry[i] = charName[i].ToString();
            }
            for (int i = 0; i < stringarry.Length; i++) {
                stringarry[i] = "<color=" + colorsList.ElementAt(rand.Next(0, colorsList.Count)) + ">" + stringarry[i] + "</color>";
            }
            string argMsg = arg.GetString(0, "text");
            string message = string.Join("", stringarry) + " : " + argMsg;
            Server.Broadcast(message, player.userID);
            return true;
        }
        private object OnBetterChat(Dictionary<string, object> data) {
            IPlayer player = data["Player"] as IPlayer;
            if (player != null && !permission.UserHasPermission(player.Id, "rainbowname.color")) return null;
            if (pdata.StatePlayers.ContainsKey(player.Id) && pdata.StatePlayers[player.Id] == false) return null;
            string charName = player.Name;
            string[] stringarry = new string[charName.Length];
            for (int i = 0; i < charName.Length; i++) {
                stringarry[i] = charName[i].ToString();
            }
            for (int i = 0; i < stringarry.Length; i++) {
                stringarry[i] = "<color=" + colorsList.ElementAt(rand.Next(0, colorsList.Count)) + ">" + stringarry[i] + "</color>";
            }
            data["Username"] = string.Join("", stringarry).Replace("[", "<").Replace("]", ">");
            data["Player"] = player;
            return data;
        }
        private string StripRichText(string text) {
            text = Regex.Replace(text, "<.*?>", String.Empty);
            return Formatter.ToPlaintext(text);
        }
        [ChatCommand("rn")]
        void CmdChat(BasePlayer player, string cmd, string[] args) {
            if (args.Length == 0) {
                SendReply(player, "Syntax: /rn on|off");
                return;
            }
            if (args.Length > 0) {
                if (args[0].ToLower() == "on") {
                    if (!pdata.StatePlayers.ContainsKey(player.UserIDString)) {
                        pdata.StatePlayers.Add(player.UserIDString, true);
                        return;
                    }
                    pdata.StatePlayers[player.UserIDString] = true;
                }
                else if (args[0].ToLower() == "off") {
                    if (!pdata.StatePlayers.ContainsKey(player.UserIDString)) {
                        pdata.StatePlayers.Add(player.UserIDString, false);
                        return;
                    }
                    pdata.StatePlayers[player.UserIDString] = false;
                }
            }
        }
    }
}

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

Другие ресурсы пользователя 15FPS

Сверху