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

FREE PrivateMessages : 0.3.1 0.3.1

Нет прав для скачивания
C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Core.Libraries.Covalence;
using System.Collections.Generic;
using System.Linq;
using Oxide.Core.Plugins;

namespace Oxide.Plugins
{
    [Info("Private Messages", "PaiN", "0.3.1", ResourceId = 2046)]
    class PrivateMessages : CovalencePlugin
    {
        [PluginReference]
        Plugin AntiAds;
        // Plugin BetterChat;

        ConfigFile Cfg = new ConfigFile();

        class ConfigFile
        {
            public bool Anti_Ads_PM_BlockAdverts;
            public bool ConsoleLogPM;
            //public bool BetterChat_PM_BlockIgnored;
        }

        public Dictionary<string, string> LastPerson = new Dictionary<string, string>();

        void Loaded() { Cfg = Config.ReadObject<ConfigFile>(); LoadMessages(); }

        void LoadMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>
            {
                ["PM_SYNTAX"] = "/pm <Player> <Text>",
                ["PM_LOG"] = "*NEW* Sender: {0} || Receiver: {1} || Message {3}",
                ["PMR_SYNTAX"] = "/r <Text>",
                ["EMPTY_MSG"] = "You can not send empty messages!",
                ["NO_CONVERSATIONS"] = "You do not have any previous conversations!",
                ["NO_ADVERTS"] = "Advertisments are not allowed!",
                ["PLAYER_NOT_FOUND"] = "Player not found!",
                ["FROM_MSG"] = "FROM: {0} => {1}",
                ["TO_MSG"] = "TO: {0} => {1}",
                ["IS_IGNORING"] = "This player has ignored you."

            }, this);

        }

        protected override void LoadDefaultConfig()
        {
            PrintWarning("Creating a new configuration file...");
            Config.WriteObject(Cfg, true);
        }

        [Command("pm"), Permission("privatemessages.use")]
        void cmdPM(IPlayer player, string cmd, string[] args)
        {
            if (args.Length == 0)
            {
                player.Message(LangMsg("PM_SYNTAX", player.Id));
                return;
            }

            string msg = string.Join(" ", args.Skip(1).ToArray());

            if (string.IsNullOrEmpty(msg))
            {
                player.Message(LangMsg("EMPTY_MSG", player.Id));
                return;
            }

            if (Cfg.Anti_Ads_PM_BlockAdverts)
            {
                bool isAdvert = (bool)AntiAds?.Call("IsAdvertisement", msg);

                if (isAdvert)
                {
                    player.Message(LangMsg("NO_ADVERTS", player.Id));
                    return;
                }
            }

            IPlayer target = players.FindPlayer(args[0]) ?? null;

            if (target == null)
            {
                player.Message(LangMsg("PLAYER_NOT_FOUND", player.Id));
                return;
            }

            /* if (Cfg.BetterChat_PM_BlockIgnored)
             {
                 bool IsIgnoring = (bool)BetterChat?.CallHook("API_PlayerIgnores", player.Id.ToString(), target.BasePlayer.Id.ToString());

                 if(IsIgnoring)
                 {
                     player.ConnectedPlayer.Message(LangMsg("IS_IGNORING", player.Id));
                     return;
                 }
             }*/

            target.Message(string.Format(LangMsg("FROM_MSG", player.Id), player.Name, msg));
            player.Message(string.Format(LangMsg("TO_MSG", player.Id), target.Name, msg));

            if (Cfg.ConsoleLogPM)
                Puts(string.Format(LangMsg("PM_LOG"), player.Name, target.Name, msg));

            if (!LastPerson.ContainsKey(player.Id))
                LastPerson.Add(player.Id, target.Id);
            else
                LastPerson[player.Id] = target.Id;

        }

        [Command("r"), Permission("privatemessages.use")]
        void cmdReply(IPlayer player, string cmd, string[] args)
        {
            if (args.Length == 0)
            {
                player.Message(LangMsg("PMR_SYNTAX", player.Id));
                return;
            }

            if (!LastPerson.ContainsValue(player.Id))
            {
                player.Message(LangMsg("NO_CONVERSATIONS", player.Id));
                return;
            }

            string msg = string.Join(" ", args);

            if (Cfg.Anti_Ads_PM_BlockAdverts)
            {
                bool isAdvert = (bool)AntiAds?.Call("IsAdvertisement", msg);

                if (isAdvert)
                {
                    player.Message(LangMsg("NO_ADVERTS", player.Id));
                    return;
                }
            }

            IPlayer LastSender = players.FindPlayer(LastPerson.FirstOrDefault(x => x.Value == player.Id).Key);

            if (LastSender == null)
            {
                player.Message(LangMsg("PLAYER_NOT_FOUND", player.Id));
                return;
            }

            /*if (Cfg.BetterChat_PM_BlockIgnored)
            {
                bool IsIgnoring = (bool)BetterChat?.Call("API_PlayerIgnores", player.Id.ToString(), LastSender?.BasePlayer.Id.ToString());

                if (IsIgnoring)
                {
                    player.ConnectedPlayer.Message(LangMsg("IS_IGNORING", player.Id));
                    return;
                }
            }*/

            LastSender.Message(string.Format(LangMsg("FROM_MSG", player.Id), player.Name, msg));
            player.Message(string.Format(LangMsg("TO_MSG", player.Id), LastSender.Name, msg));

            if (Cfg.ConsoleLogPM)
                Puts(string.Format(LangMsg("PM_LOG"), player.Name, LastSender.Name, msg));

            if (!LastPerson.ContainsKey(player.Id))
                LastPerson.Add(player.Id, LastSender.Id);
            else
                LastPerson[player.Id] = LastSender.Id;
        }

        string LangMsg(string msg, string uid = null) => lang.GetMessage(msg, this, uid);
    }
}

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