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

FREE ServerBroadcast : 1.0.2 1.0.2

Нет прав для скачивания
C#:
using System;
using System.Collections.Generic;
using Oxide.Core;
using UnityEngine;
using Newtonsoft.Json;
using Oxide.Core.Plugins;
using Oxide.Game.Rust.Cui;
using System.Collections;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using Newtonsoft.Json.Converters;
using Facepunch;
using VLB;

using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Oxide.Plugins
{
    [Info("ServerBroadcast", "EcoSmile", "1.0.2")]
    class ServerBroadcast : RustPlugin
    {
        static ServerBroadcast ins; 
        PluginConfig config;

        public class PluginConfig
        {
            //[JsonProperty("Message display interval (Time in minutes)")]
            [JsonProperty("Интервал показа сообщений (Время в минутах)")]
            public float TimeInterval;
            //[JsonProperty("The Steam ID of the account from which to display the avatar in the chat. (0 - standart icon)")]
            [JsonProperty("SteamID аккаунта с которого отображать аватарка в чате. (0 - стандартная иконка)")]
            public ulong SteamID;
            //[JsonProperty("List of messages to display to players (language - messages)")]
            [JsonProperty("Список сообщения для вывода игрокам (язык - сообщения)")]
            public Dictionary<string, List<string>> messageList;
        }
           
        protected override void LoadDefaultConfig()
        {
            config = new PluginConfig
            { 
                TimeInterval = 5f,
                SteamID = 0,
                messageList = new Dictionary<string, List<string>>()
                {
                    ["en"] = new List<string>
                    {
                        "Here you can write any text using formatting <i>slope</i>, <size=25>size</size> and <color=#FF8000FF>color</color>\nA as well as line \nwrapping",
                        "Here you can write any text using formatting <i>slope</i>, <size=25>size</size> and <color=#FF8000FF>color</color>\nA as well as line \nwrapping"
                    },
                    ["ru"] = new List<string>()
                    {
                        "Здесь можно писать любой текст, используя форматирование <i>наклона</i>, <size=25>размера</size> и <color=#FF8000FF>цвета</color>\nА так-же \nперенос строк",
                        "Здесь можно писать любой текст, используя форматирование <i>наклона</i>, <size=25>размера</size> и <color=#FF8000FF>цвета</color>\nА так-же \nперенос строк",
                    }
                }
            };  
        }

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

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

        Broadcaster broadcaster;
        int count = 0;
        private void OnServerInitialized()
        {
            ins = this;
            foreach (var msg in config.messageList)
                if (count < msg.Value.Count)
                    count = msg.Value.Count;
            broadcaster = new GameObject().AddComponent<Broadcaster>();
        }
        
        void Unload()
        {
            UnityEngine.Object.Destroy(broadcaster);
            ins = null;
        }

        public class Broadcaster:FacepunchBehaviour
        {
            int messageIndex = 0;
            void Awake()
            {
                InvokeRepeating(MessageRepiter, 0, ins.config.TimeInterval * 60f);
            }

            void MessageRepiter()
            {
                foreach (var player in BasePlayer.activePlayerList)
                {
                    var lang = ins.lang.GetLanguage(player.UserIDString);
                    var text = "";
                    if (ins.config.messageList.ContainsKey(lang))
                        text = ins.config.messageList[lang][messageIndex];
                    else
                        text = ins.config.messageList.FirstOrDefault().Value[messageIndex];

                    ConsoleNetwork.SendClientCommand(player.Connection, "chat.add", new object[]
                    {
                        2,
                        ins.config.SteamID,
                        text
                    });
                }  
                messageIndex++; 
                if (messageIndex >= ins.count)
                    messageIndex = 0;
            }

            void OnDestroy()
            {
                CancelInvoke(MessageRepiter);
                Destroy(this);
            }
        } 
    
    }
}

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