C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using Oxide.Core;
using System.Collections.Generic;
using System.Linq;
namespace Oxide.Plugins
{
[Info("NameManager", "Ankawi", "1.0.1")]
[Description("Manage names on your server")]
class NameManager : CovalencePlugin
{
#region Config
new void LoadConfig()
{
SetConfig("Characters Required", 2);
SetConfig("Enable Restricted Characters", false);
SetConfig("Enable Restricted Names", false);
SetConfig("Enable Character Requirement", false);
SetConfig("Restricted Characters", new List<object> { '$', '!', '+' });
SetConfig("Restricted Names", new List<object> { "Oxide", "Admin", "Owner", "Moderator" });
SaveConfig();
}
protected override void LoadDefaultConfig() => PrintWarning("Creating a new configuration file...");
#endregion
#region Hooks
void Loaded()
{
permission.RegisterPermission("namemanager.admin", this);
LoadDefaultMessages();
LoadConfig();
}
object CanUserLogin(string name, string id, string ip)
{
//PrintWarning($"{name} ({id}) tries to connect from {ip} ({name.Length} of minimal {Config["Characters Required"]})");
List<object> RestrictedNames = (List<object>)Config["Restricted Names"];
List<object> RestrictedCharacters = (List<object>)Config["Restricted Characters"];
if (permission.UserHasPermission(id, "namemanager.admin")) return null;
if ((bool)Config["Enable Character Requirement"])
{
if (name.Length < (int)(Config["Characters Required"]))
{
return (GetMsg("Not Enough Characters", id));
}
}
if ((bool)Config["Enable Restricted Names"])
{
if (RestrictedNames.Contains(name))
{
return (GetMsg("Restricted Name", id));
}
}
if ((bool)Config["Enable Restricted Characters"])
{
foreach(var bannedChar in RestrictedCharacters)
{
if (name.Contains(bannedChar.ToString()))
{
return (GetMsg("Restricted Character", id));
}
}
}
return null;
}
#endregion
#region Localization
void LoadDefaultMessages()
{
lang.RegisterMessages(new Dictionary<string, string>
{
{"Restricted Name", "You were kicked for using a restricted name"},
{"Restricted Character", "You were kicked for using a restricted character"},
{"Not Enough Characters", "You were kicked because your name was not long enough"}
}, this);
}
#endregion
#region Helpers
void SetConfig(params object[] args)
{
List<string> stringArgs = (from arg in args select arg.ToString()).ToList<string>();
stringArgs.RemoveAt(args.Length - 1);
if (Config.Get(stringArgs.ToArray()) == null) Config.Set(args);
}
string GetMsg(string key, object id = null) => lang.GetMessage(key, this, id == null ? null : id.ToString());
#endregion
}
}