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

FREE AdvertiseMe : 1.0.3 1.0.3

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Text.RegularExpressions;
namespace Oxide.Plugins {
    [Info("Advertise Me", "Psystec", "1.0.3", ResourceId = 2764)]
    [Description("Lets players place eye catching advertisement messages.")]
    class AdvertiseMe : RustPlugin {
#region You Can Customize The Chat Commands
        private const string chatCommand = "advert";
        //This is when players use the chat command in game ex./advert Best shop now open.private const string consoleCommand = "advert";     //This is for admins to change settings in the console ex.advert allowadverttoall false
#endregion
#region Configuration
        private const string advertMeAllow = "advertiseMe.allow";
        private const string advertMeAdmin = "advertiseMe.admin";
        List<BasePlayer> AdvertedPlayers = new List<BasePlayer>();
        List<string> CommandsList = new List<string>();
        private bool allowAdvertToAll;
        private bool stripChatSize;
        private bool enableDelay;
        private bool adminNoDelay;
        private int delaySeconds;
        private bool enablePrefixLabel;
        private string prefixLabel;
        private string prefixLabelColor;
        private string advertMessageColor;
        private bool showLogs;
        protected override void LoadDefaultConfig() {
            lang.RegisterMessages(new Dictionary<string, string> {
                //Commands and messages are localized only advert command has to be constant
                //h = Headers, c= commands, d = descriptions, m = messages
                ["hCOMMAND"]
                = "COMMAND", ["hDESCRIPTION"] = "DESCRIPTION", ["cAllowAdvertToAll"] = "AllowAdvertToAll", ["dAllowAdvertToAll"] = "Enable everyone to use the advert command.", ["cStripChatSize"] = "StripChatSize", ["dStripChatSize"] = "Removes the functionality for players to adjust the message size.", ["cEnableDelay"] = "EnableDelay", ["dEnableDelay"] = "Enable a delay so people can't spam advert.", ["cAdminNoDelay"] = "AdminNoDelay", ["dAdminNoDelay"] = "Lets admins skip the advert delay.", ["cDelaySeconds"] = "DelaySeconds", ["dDelaySeconds"] = "Delay between adverts per person.", ["cEnablePrefixLabel"] = "EnablePrefixLabel", ["dEnablePrefixLabel"] = "Prefix the message with a label when being advertised.", ["cPrefixLabel"] = "PrefixLabel", ["dPrefixLabel"] = "Label that the advert should be prefixed with.", ["cPrefixLabelColor"] = "PrefixLabelColor", ["dPrefixLabelColor"] = "Prefixed label color.", ["cAdvertMessageColor"] = "AdvertMessageColor", ["dAdvertMessageColor"] = "Advert Color.", ["cTest"] = "Test", ["dTest"] = "Sends a test message to you only, quality check.", ["cShowLogs"] = "ShowLogs", ["dShowLogs"] = "Enables messages to be seen in the RCON Console Log.", ["mInvalidCommand"] = "Invalid Command.", ["mInvalidTrueFalse"] = "Invalid Syntax: Use true/false or 0/1.", ["mInvalidNumbers"] = "Invalid Syntax: Use only numbers.", ["mInvalidLabelNone"] = "Please specify a prefix Label.", ["mInvalidColorCode"] = "Invalid Syntax: Incorrect Color code.", ["mPlayerDelayMessage"] = "Please wait before making another advertisement.", ["mPlayerNoMessage"] = "No message specified.Type /advert followed by a message to advertise.", ["mPlayerMessageIgnored"] = "(advert ignored)",
            }
            , this, "en");
            Config["allowAdvertToAll"] = allowAdvertToAll = GetConfig("allowAdvertToAll", true);
            Config["stripChatSize"] = stripChatSize = GetConfig("stripChatSize", true);
            Config["enableDelay"] = enableDelay = GetConfig("enableDelay", true);
            Config["adminNoDelay"] = adminNoDelay = GetConfig("adminNoDelay", true);
            Config["delaySeconds"] = delaySeconds = GetConfig("delaySeconds", 60);
            Config["enablePrefixLabel"] = enablePrefixLabel = GetConfig("enablePrefixLabel", true);
            Config["prefixLabel"] = prefixLabel = GetConfig("prefixLabel", "Advertisement: ");
            Config["prefixLabelColor"] = prefixLabelColor = GetConfig("prefixLabelColor", "#0EB741");
            Config["advertMessageColor"] = advertMessageColor = GetConfig("advertMessageColor", "#ddff00");
            Config["showLogs"] = showLogs = GetConfig("showLogs", true);
            SaveConfig();
            CommandsList.Add(Lang("cAllowAdvertToAll"));
            CommandsList.Add(Lang("cStripChatSize"));
            CommandsList.Add(Lang("cEnableDelay"));
            CommandsList.Add(Lang("cAdminNoDelay"));
            CommandsList.Add(Lang("cDelaySeconds"));
            CommandsList.Add(Lang("cEnablePrefixLabel"));
            CommandsList.Add(Lang("cPrefixLabel"));
            CommandsList.Add(Lang("cPrefixLabelColor"));
            CommandsList.Add(Lang("cAdvertMessageColor"));
            CommandsList.Add(Lang("cTest"));
            CommandsList.Add(Lang("cShowLogs"));
        }
#endregion
#region Hooks
        private void Init() {
            LoadDefaultConfig();
            permission.RegisterPermission(advertMeAllow, this);
            permission.RegisterPermission(advertMeAdmin, this);
        }
#endregion
#region Console Commands
        [ConsoleCommand(consoleCommand)]
        private void AdvertCommands(ConsoleSystem.Arg arg) {
            var player = arg.Player();
            if (player == null) return;
            if (!HasPermission(player, advertMeAdmin)) return;
            var args = arg?.Args ?? null;
            if (args == null) {
                SendReply(arg, (Lang("hCOMMAND") + ":").PadRight(50) + Lang("hDESCRIPTION") + ":");
                SendReply(arg, (consoleCommand + " " + Lang("cAllowAdvertToAll") + " [true/false][1/0] ").PadRight(50) + Lang("dAllowAdvertToAll"));
                SendReply(arg, (consoleCommand + " " + Lang("cStripChatSize") + " [true/false][1/0]").PadRight(50) + Lang("dStripChatSize"));
                SendReply(arg, (consoleCommand + " " + Lang("cEnableDelay") + " [true/false][1/0] ").PadRight(50) + Lang("dEnableDelay"));
                SendReply(arg, (consoleCommand + " " + Lang("cAdminNoDelay") + " [true/false][1/0] ").PadRight(50) + Lang("dAdminNoDelay"));
                SendReply(arg, (consoleCommand + " " + Lang("cDelaySeconds") + " [0-9]").PadRight(50) + Lang("dDelaySeconds"));
                SendReply(arg, (consoleCommand + " " + Lang("cEnablePrefixLabel") + " [true/false][1/0]").PadRight(50) + Lang("dEnablePrefixLabel"));
                SendReply(arg, (consoleCommand + " " + Lang("cPrefixLabel") + " [A-9]").PadRight(50) + Lang("dPrefixLabel"));
                SendReply(arg, (consoleCommand + " " + Lang("cPrefixLabelColor") + " [#0EB741]").PadRight(50) + Lang("dPrefixLabelColor"));
                SendReply(arg, (consoleCommand + " " + Lang("cAdvertMessageColor") + " [#ddff00]").PadRight(50) + Lang("dAdvertMessageColor"));
                SendReply(arg, (consoleCommand + " " + Lang("cTest") + " [A-9 ]").PadRight(50) + Lang("dTest"));
                SendReply(arg, (consoleCommand + " " + Lang("cShowLogs") + " [true/false][1/0]").PadRight(50) + Lang("dShowLogs"));
                return;
            }
            int commcount = 0;
            List<string> coms = new List<string>();
            foreach (string command in CommandsList) {
                if (command.ToLower().Contains(args[0].ToLower())) {
                    commcount++;
                    coms.Add(command);
                }
            }
            if (commcount > 1) {
                foreach (string comm in coms) {
                    SendReply(arg, comm);
                }
                return;
            }
            if (Lang("cAllowAdvertToAll").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cAllowAdvertToAll") + " = \"" + allowAdvertToAll.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["allowAdvertToAll"] = true;
                    allowAdvertToAll = true;
                    SaveConfig();
                    SendReply(arg, Lang("cAllowAdvertToAll") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["allowAdvertToAll"] = false;
                    allowAdvertToAll = false;
                    SaveConfig();
                    SendReply(arg, Lang("cAllowAdvertToAll") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            if (Lang("cStripChatSize").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cAllowAdvertToAll") + " = \"" + allowAdvertToAll.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["stripChatSize"] = true;
                    stripChatSize = true;
                    SaveConfig();
                    SendReply(arg, Lang("cStripChatSize") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["stripChatSize"] = false;
                    stripChatSize = false;
                    SaveConfig();
                    SendReply(arg, Lang("cStripChatSize") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            if (Lang("cEnableDelay").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cEnableDelay") + " = \"" + enableDelay.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["enableDelay"] = true;
                    enableDelay = true;
                    SaveConfig();
                    SendReply(arg, Lang("cEnableDelay") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["enableDelay"] = false;
                    enableDelay = false;
                    SaveConfig();
                    SendReply(arg, Lang("cEnableDelay") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            if (Lang("cAdminNoDelay").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cAdminNoDelay") + " = \"" + adminNoDelay.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["adminNoDelay"] = true;
                    adminNoDelay = true;
                    SaveConfig();
                    SendReply(arg, Lang("cAdminNoDelay") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["adminNoDelay"] = false;
                    adminNoDelay = false;
                    SaveConfig();
                    SendReply(arg, Lang("cAdminNoDelay") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            if (Lang("cDelaySeconds").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cDelaySeconds") + " = \"" + delaySeconds.ToString() + "\"");
                    return;
                }
                if (IsDigitsOnly(args[1])) {
                    Config["delaySeconds"] = Convert.ToInt32(args[1]);
                    delaySeconds = Convert.ToInt32(args[1]);
                    SaveConfig();
                    SendReply(arg, Lang("cDelaySeconds") + " = \"" + args[1] + "\"");
                }
                else {
                    SendReply(arg, Lang("mInvalidNumbers"));
                }
                return;
            }
            if (Lang("cEnablePrefixLabel").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cEnablePrefixLabel") + " = \"" + enablePrefixLabel.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["enablePrefixLabel"] = true;
                    enablePrefixLabel = true;
                    SaveConfig();
                    SendReply(arg, Lang("cEnablePrefixLabel") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["enablePrefixLabel"] = false;
                    enablePrefixLabel = false;
                    SaveConfig();
                    SendReply(arg, Lang("cEnablePrefixLabel") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            if (Lang("cPrefixLabel").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cPrefixLabel") + " = \"" + prefixLabel + "\"");
                    return;
                }
                if (args[2] != null) {
                    string rawLabel = string.Join(" ", args);
                    int fWord = rawLabel.IndexOf(" ") + 1;
                    string pLabel = rawLabel.Substring(fWord);
                    Config["prefixLabel"] = pLabel;
                    prefixLabel = pLabel;
                    SaveConfig();
                    SendReply(arg, Lang("cPrefixLabel") + " = \"" + pLabel + "\"");
                }
                else {
                    SendReply(arg, Lang("mInvalidLabelNone"));
                }
                return;
            }
            if (Lang("cPrefixLabelColor").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cPrefixLabelColor") + " = \"" + prefixLabelColor + "\"");
                    return;
                }
                if (args[1][0] == '#') {
                    Config["prefixLabelColor"] = args[1];
                    prefixLabelColor = args[1];
                    SaveConfig();
                    SendReply(arg, Lang("cPrefixLabelCSolor") + " = \"" + args[1] + "\"");
                }
                else {
                    SendReply(arg, Lang("mInvalidColorCode"));
                }
                return;
            }
            if (Lang("cAdvertMessageColor").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cAdvertMessageColor") + " = \"" + advertMessageColor + "\"");
                    return;
                }
                if (args[1][0] == '#') {
                    Config["advertMessageColor"] = args[1];
                    advertMessageColor = args[1];
                    SaveConfig();
                    SendReply(arg, Lang("cAdvertMessageColor") + " = \"" + args[1] + "\"");
                }
                else {
                    SendReply(arg, Lang("mInvalidColorCode"));
                }
                return;
            }
            if (Lang("cTest").ToLower().Contains(args[0].ToLower())) {
                string rawMessage = string.Join(" ", args);
                rawMessage = CheckMessage(rawMessage);
                int firstword = rawMessage.IndexOf(" ") + 1;
                string message = "<color=" + advertMessageColor + ">" + rawMessage.Substring(firstword) + "</color>";
                if (enablePrefixLabel) message = string.Format("<color=" + prefixLabelColor + ">" + prefixLabel + "</color>" + message, player.displayName);
                SendReply(player, message);
                SendReply(arg, "Test Message sent: " + message);
                return;
            }
            if (Lang("cShowLogs").ToLower().Contains(args[0].ToLower())) {
                if (args.Length == 1) {
                    SendReply(arg, Lang("cShowLogs") + " = \"" +showLogs.ToString() + "\"");
                    return;
                }
                if (args[1].ToLower() == "true" || args[1] == "1") {
                    Config["showLogs"] = true;
                    showLogs = true;
                    SaveConfig();
                    SendReply(arg, Lang("cShowLogs") + " = \"true\"");
                    return;
                }
                if (args[1].ToLower() == "false" || args[1] == "0") {
                    Config["showLogs"] = false;
                    showLogs = false;
                    SaveConfig();
                    SendReply(arg, Lang("cShowLogs") + " = \"false\"");
                    return;
                }
                SendReply(arg, Lang("mInvalidTrueFalse"));
                return;
            }
            SendReply(arg, Lang("mInvalidCommand"));
        }
#endregion
#region Chat Commands
        [ChatCommand(chatCommand)]
        private void Advertisement(BasePlayer player, string command, string[] args) {
            if (!allowAdvertToAll) {
                if (!HasPermission(player, advertMeAllow, true)) return;
            }
            if (args.Length == 0) {
                SendReply(player, "<color=" + prefixLabelColor + ">" + Lang("mPlayerNoMessage") + "</color> <color=#727272>" + Lang("mPlayerMessageIgnored") + "</color>");
                return;
            }
            if (!AdvertedPlayers.Contains(player)) {
                string rawMessage = string.Join(" ", args);
                rawMessage = CheckMessage(rawMessage);
                string message = "<color=" + advertMessageColor + ">" + rawMessage + "</color>";
                if (enablePrefixLabel) message = string.Format("<color=" + prefixLabelColor + ">" + prefixLabel + "</color>" + message, player.displayName);
                if (showLogs) Puts(player.UserIDString + " | " + player.displayName + ": " + message);
                rust.BroadcastChat(null, message);
                //SendReply(player, message); //^Hash this out and unhash < this to send adverts to you only.(testing)
                if (enableDelay) {
                    if (HasPermission(player, advertMeAdmin) && adminNoDelay) {
                        //skip delay
                    }
                    else {
                        AdvertedPlayers.Add(player);
                        timer.Once(delaySeconds, () => {
                            AdvertedPlayers.Remove(player);
                        }
                        );
                    }
                }
            }
            else {
                SendReply(player, "<color=" + prefixLabelColor + ">" + Lang("mPlayerDelayMessage") + "</color> <color=#727272>" + Lang("mPlayerMessageIgnored") + " </color>");
            }
        }
#endregion
#region Helpers
        private string CheckMessage(string message) {
            if (stripChatSize) {
                message = Regex.Replace(message, @"<size=..>", "", RegexOptions.IgnoreCase);
                message = Regex.Replace(message, @"</size>", "", RegexOptions.IgnoreCase);
            }
            return message;
        }
        private string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);
        private T GetConfig<T>(string name, T defaultValue) {
            if (Config[name] == null) return defaultValue;
            return (T)Convert.ChangeType(Config[name], typeof(T));
        }
        bool HasPermission(BasePlayer player, string perm, bool skipAdminCheck = false) {
            if (player.net.connection.authLevel > 1 && skipAdminCheck) {
                return true;
            }
            return permission.UserHasPermission(player.userID.ToString(), perm);
        }
        bool IsDigitsOnly(string str) {
            foreach (char c in str) {
                if (c < '0' || c > '9') return false;
            }
            return true;
        }
#endregion
    }
}

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