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

FREE TeamsChat : 0.1.0 0.1.0

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

namespace Oxide.Plugins
{
    [Info("TeamsChat", "Paranormal", "0.1.0")]
      //  Слив плагинов server-rust by Apolo YouGame
    [Description("Enable private chat for player teams")]
    class TeamsChat : RustPlugin
    {
        #region TeamAPI
        private RelationshipManager.PlayerTeam GetPlayerTeam(BasePlayer player)
        {
            RelationshipManager.PlayerTeam playerTeam = RelationshipManager._instance.FindTeam(player.currentTeam);

            return playerTeam ?? null;
        }

        private List<ulong> GetPlayerTeammate(BasePlayer player)
        {
            if (player.currentTeam == 0)
                return null;
            return RelationshipManager._instance.FindTeam(player.currentTeam).members.ToList();
        }
        #endregion

        #region Helpers and Commands
        public void Broadcast(BasePlayer player, string message)
        {
            foreach (var teammate in GetPlayerTeammate(player))
            {
                var teamm = BasePlayer.FindByID(teammate);
                if (teamm != null)
                    teamm.ChatMessage($"<color={config.ChatPrefixColor}>{config.ChatPrefix}</color> {message}");
            }
        }

        void CmdChatTeamCommand(BasePlayer player, string command, string[] args)
        {
            var playerTeam = GetPlayerTeam(player);
            if (playerTeam == null)
            {
                player.ChatMessage(LangMessages("NotTeam", player));
                return;
            }
            if (playerTeam != null)
            {
                var status = playerTeam.GetLeader() == player ? $"({LangMessages("Leader", player)})" : $"({LangMessages("Member", player)})";
                Broadcast(player, $"<color={config.PlayerNameColor}>{player.displayName} {status}:</color> {string.Join(" ", args)}");
                return;
            }
        }
        #endregion

        #region Configuration and Lang
        private string LangMessages(string key, BasePlayer player = null) => lang.GetMessage(key, this, player?.UserIDString);

        protected override void LoadDefaultMessages()
        {
            lang.RegisterMessages(new Dictionary<string, string>()
            {
                {"NotTeam", "You do not have a team, first create it!\n<size=11>You can create it in the lower left corner of the inventory</size>"},
                {"Leader", "Leader"},
                {"Member", "Member" }
            }
           , this, "en");

            lang.RegisterMessages(new Dictionary<string, string>()
            {
                {"NotTeam", "У вас нету команды, сначала создайте её!\n<size=11>Создать её можно в левом нижнем углу инвентаря</size>"},
                {"Leader", "Лидер"},
                {"Member", "Участник" }
            }
            , this, "ru");
        }

        private class PluginConfig
        {
            [JsonProperty("Chat command")]
            public string Command;

            [JsonProperty("Player name color (#hex)")]
            public string PlayerNameColor;

            [JsonProperty("Chat-prefix color (#hex)")]
            public string ChatPrefixColor;

            [JsonProperty("Chat-prefix")]
            public string ChatPrefix;

            public static PluginConfig DefaultConfig()
            {
                return new PluginConfig()
                {
                    Command = "/tchat",
                    PlayerNameColor = "#48B6FF",
                    ChatPrefixColor = "#AADDFF",
                    ChatPrefix = "[Team]"
                };
            }
        }
        private PluginConfig config;

        protected override void LoadDefaultConfig()
        {
            config = PluginConfig.DefaultConfig();
        }
        protected override void LoadConfig()
        {
            base.LoadConfig();
            config = Config.ReadObject<PluginConfig>();
        }

        protected override void SaveConfig()
        {
            Config.WriteObject(config);
        }

        private void OnServerInitialized()
        {
            cmd.AddChatCommand(config.Command.Replace("/", string.Empty), this, CmdChatTeamCommand);
            foreach(var player in BasePlayer.activePlayerList)
            {
                Broadcast(player, $"<color={config.PlayerNameColor}>Paranormal ({LangMessages("Leader", player)}):</color> This test messages");
                Broadcast(player, $"<color={config.PlayerNameColor}>Green ({LangMessages("Member", player)}):</color> This test reply");

            }
        }

        #endregion
    }
}

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