2025-07-03 22:05:38 +02:00

68 lines
2.4 KiB
C#

using LabApi.Events.Handlers;
using LabApi.Features;
using LabApi.Features.Console;
using LabApi.Features.Wrappers;
using LabApi.Loader.Features.Plugins;
using MEC;
namespace ServerHints;
public class ServerHints : Plugin
{
public override string Name => "ServerHints";
public override string Author => "Code002Lover";
public override Version Version { get; } = new(1, 0, 0);
public override string Description => "Adds hints for custom features.";
public override Version RequiredApiVersion { get; } = new(LabApiProperties.CompiledVersion);
public string[] Hints { get; set; } =
[
"Man kann gegnerische Einheiten festnehmen, um sie zu seiner Seite zu bringen.",
"Als Hausmeister beginnst du in der Nähe von SCP-914.",
"Du kannst als SCP mit .scpswap <SCP nummer> deine Rolle tauschen. (Ö)",
"Es gibt auf der Surface versteckte Items.",
"Man kann mehr als 2 Candies nehmen.",
"Man braucht seine Karte nicht in der Hand zu halten.",
"Man kann Türen aufschießen",
"Wenn man Granaten anschießt, explodieren sie sofort."
];
private const string Message = "PAf4jcb1UobNURH4USLKhBQtgR/GTRD1isf6h9DvUSGmFMbdh9b/isrtgBKmGpa4HMbAhAX4gRf0Cez4h9L6UR/qh9DsUSCyCAfyhcb4gRjujBGmisQ5USD8URK0";
public override void Enable()
{
const string customAlphabet = "abcdefABCDEFGHIJKLMNPQRSTUghijklmnopqrstuvwxyz0123456789+/=VWXYZ";
const string standardAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var standardized = "";
foreach (var c in Message)
{
var index = customAlphabet.IndexOf(c);
standardized += index >= 0 ? standardAlphabet[index] : c;
}
// Then decode using standard base64
var decodedBytes = Convert.FromBase64String(standardized);
var decodedMessage = System.Text.Encoding.UTF8.GetString(decodedBytes);
Logger.Info(decodedMessage);
ServerEvents.RoundStarted += OnRoundStarted;
}
public override void Disable()
{
ServerEvents.RoundStarted -= OnRoundStarted;
}
private void OnRoundStarted()
{
var random = new Random();
var hint = Hints[random.Next(Hints.Length)];
Timing.CallDelayed(1, () =>
{
foreach (var player in Player.ReadyList) player.SendBroadcast($"<color=grey>{hint}</color>", 5);
});
}
}