Помогите AutoBroadcast настройка

EddieRust

Автор темы
9 Дек 2023
22
5
13
28
Ребят только начал осваивать серверостроение, спустя много попыток, так и не чего не получается. Все время в чате дефолтные сообщения что бы я ниже не писал, подскажите как получить свои сообщения в чате. Текс плагина и конфига прилагаю через ______.

using System;
using System.Collections.Generic;
using System.Linq;
using Oxide.Core.Libraries.Covalence;

namespace Oxide.Plugins
{
[Info("Auto Broadcast", "Wulf", "1.0.9")]
[Description("Sends randomly configured chat messages every X amount of seconds")]

class AutoBroadcast : CovalencePlugin
{
#region Initialization

const string permBroadcast = "autobroadcast.broadcast";
bool random;
int interval;
int nextKey;

protected override void LoadDefaultConfig()
{
Config["Randomize Messages (true/false)"] = random = GetConfig("Randomize Messages (true/false)", false);
Config["Broadcast Interval (Seconds)"] = interval = GetConfig("Broadcast Interval (Seconds)", 300);
SaveConfig();
}

void OnServerInitialized()
{
LoadDefaultConfig();
permission.RegisterPermission(permBroadcast, this);

if (lang.GetLanguages(this).Length == 0 || lang.GetMessages(lang.GetServerLanguage(), this)?.Count == 0)
{
lang.RegisterMessages(new Dictionary<string, string>
{
["ExampleMessage"] = "Присоединяйся в нашу группу в Telegram, получай актуальные новости сервера!",
["AnotherExample"] = "Соблюдайте правила сервера, незнание правил не освобождает от ответствености!"
}, this, lang.GetServerLanguage());
}
else
{
foreach (var language in lang.GetLanguages(this))
{
var messages = new Dictionary<string, string>();
foreach (var message in lang.GetMessages(language, this)) messages.Add(message.Key, message.Value);
lang.RegisterMessages(messages, this, language);
}
}
Broadcast();
}

#endregion

#region Broadcasting

void Broadcast()
{
if (lang.GetLanguages(this) == null || lang.GetMessages(lang.GetServerLanguage(), this).Count == 0) return;

timer.Every(interval, () =>
{
if (players.Connected.Count() <= 0) return;

Dictionary<string, string> messages = null;
foreach (var player in players.Connected)
{
messages = lang.GetMessages(lang.GetLanguage(player.Id), this) ?? lang.GetMessages(lang.GetServerLanguage(), this);

if (messages == null || messages.Count == 0)
{
LogWarning($"No messages found for {player.Name} in {lang.GetLanguage(player.Id)} or {lang.GetServerLanguage()}");
continue;
}

var message = random ? messages.ElementAt(new Random().Next(0, messages.Count - 1)) : messages.ElementAt(nextKey);
if (message.Key != null) player.Message(Lang(message.Key, player.Id));
}
nextKey = nextKey + 1 == messages.Count ? 0 : nextKey + 1; // TODO: Don't assume that all languages have same count
});
}

#endregion

#region Commands

[Command("broadcast")]
void CmdChatBroadcast(IPlayer player, string command, string[] args)
{
if (args.Length != 1 || !player.HasPermission(permBroadcast)) return;

foreach (var target in players.Connected)
{
var message = lang.GetMessage(args[0], this, target.Id);
if (!string.IsNullOrEmpty(message))
{
target.Message(message);
}
}
}

#endregion

#region Helpers

T GetConfig<T>(string name, T value) => Config[name] == null ? value : (T)Convert.ChangeType(Config[name], typeof(T));

string Lang(string key, string id = null, params object[] args) => string.Format(lang.GetMessage(key, this, id), args);

#endregion
}
}
____________________________________________________________Ниже конфиг
{
"Broadcast Interval (Seconds)": 300,
"Randomize Messages (true/false)": false
}
 
Во первых, сообщения нужно редактировать не в .cs файле а в .json (т.е конфиге который в oxide\config\)

Советую использоваться https://umod.org/plugins/advert-messages
 
Во первых, сообщения нужно редактировать не в .cs файле а в .json (т.е конфиге который в oxide\config\)

Советую использоваться https://umod.org/plugins/advert-messages
{
"Broadcast Interval (Seconds)": 300,
"Randomize Messages (true/false)": false
}


Вот что в файле конфига, можете дать пример 1 сообщения
 
  • Мне нравится
Реакции: EddieRust
{
"Broadcast Interval (Seconds)": 300,
"Randomize Messages (true/false)": false
}


Вот что в файле конфига, можете дать пример 1 сообщения
{
"Messages": [
"Welcome to our server, have fun!",
"Please treat everybody respectfully.",
"Cheating will result in a [#red]permanent[/#] ban."
],
"Advert Interval (in Minutes)": 10.0,
"Broadcast to Console (true/false)": true,
"Choose Message at Random (true/false)": false
}
 

Похожие темы