C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System;
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("Game Tip Announcements", "redBDGR", "1.0.2")]
[Description("Send notifications to players as gametips")]
//
// TODO:
//
// - Add init messages
//
class GameTipAnnouncements : RustPlugin
{
private bool Changed;
private const string permissionNameADMIN = "gametipannouncements.admin";
private float defaultLengnth = 15f;
private void Init()
{
permission.RegisterPermission(permissionNameADMIN, this);
lang.RegisterMessages(new Dictionary<string, string>
{
//chat
["NoPermission"] = "You are not allowed to use this command!",
["sentgt Invalid Format"] = "Invalid format! /sendgt <playername/id> <message> <length>",
["sendgtall Invalid Format"] = "Invalid format! /sendgtall <message> <length>",
["sentgt Invalid Format CONSOLE"] = "Invalid format! /sendgt <playername/id> <message> <length>",
["sendgtall Invalid Format CONSOLE"] = "Invalid format! /sendgtall <message> <length>",
["No Player Found"] = "No players were found with this name / ID",
}, this);
}
protected override void LoadDefaultConfig()
{
Config.Clear();
LoadVariables();
}
private void LoadVariables()
{
defaultLengnth = Convert.ToSingle(GetConfig("Settings", "Default Fade Length", 15f));
if (!Changed) return;
SaveConfig();
Changed = false;
}
[ChatCommand("sendgt")]
private void SendGameTipCMD(BasePlayer player, string command, string[] args)
{
if (!permission.UserHasPermission(player.UserIDString, permissionNameADMIN))
{
player.ChatMessage(msg("NoPermission", player.UserIDString));
return;
}
if (args.Length != 2 && args.Length != 3)
{
player.ChatMessage(msg("sentgt Invalid Format", player.UserIDString));
return;
}
float length = defaultLengnth;
if (args.Length == 3)
float.TryParse(args[2], out length);
BasePlayer receiver = BasePlayer.Find(args[0]);
if (receiver == null)
{
player.ChatMessage(msg("No Player Found", player.UserIDString));
return;
}
CreateGameTip(args[1], receiver, length);
}
[ChatCommand("sendgtall")]
private void SendGameTipAllCMD(BasePlayer player, string command, string[] args)
{
if (!permission.UserHasPermission(player.UserIDString, permissionNameADMIN))
{
player.ChatMessage(msg("NoPermission", player.UserIDString));
return;
}
if (args.Length != 1 && args.Length != 2)
{
player.ChatMessage(msg("sendgtall Invalid Format", player.UserIDString));
return;
}
float length = defaultLengnth;
if (args.Length == 2)
float.TryParse(args[1], out length);
CreateGameTipAll(args[0], length);
}
[ConsoleCommand("sendgt")]
private void SendGameTipAllCONSOLECMD(ConsoleSystem.Arg args)
{
if (args.Connection != null)
return;
if (args.Args.Length != 2 && args.Args.Length != 3)
{
Puts(msg("sentgt Invalid Format CONSOLE"));
return;
}
float length = defaultLengnth;
if (args.Args.Length == 3)
float.TryParse(args.Args[2], out length);
BasePlayer receiver = BasePlayer.Find(args.Args[0]);
if (receiver == null)
{
Puts(msg("No Player Found"));
return;
}
CreateGameTip(args.Args[1], receiver, length);
}
[ConsoleCommand("sendgtall")]
private void SendGameTipCONSOLSECMD(ConsoleSystem.Arg args)
{
if (args.Connection != null)
return;
if (args.Args.Length != 1 && args.Args.Length != 2)
{
Puts(msg("sendgtall Invalid Format CONSOLE"));
return;
}
float length = defaultLengnth;
if (args.Args.Length == 2)
float.TryParse(args.Args[1], out length);
CreateGameTipAll(args.Args[0], length);
}
private void CreateGameTip(string text, BasePlayer player, float length = 30f)
{
if (player == null)
return;
player.SendConsoleCommand("gametip.hidegametip");
player.SendConsoleCommand("gametip.showgametip", text);
timer.Once(length, () => player?.SendConsoleCommand("gametip.hidegametip"));
}
private void CreateGameTipAll(string text, float length = 30f)
{
foreach(BasePlayer player in BasePlayer.activePlayerList)
CreateGameTip(text, player, length);
}
private object GetConfig(string menu, string datavalue, object defaultValue)
{
var data = Config[menu] as Dictionary<string, object>;
if (data == null)
{
data = new Dictionary<string, object>();
Config[menu] = data;
Changed = true;
}
object value;
if (!data.TryGetValue(datavalue, out value))
{
value = defaultValue;
data[datavalue] = value;
Changed = true;
}
return value;
}
string msg(string key, string id = null) => lang.GetMessage(key, this, id);
}
}