C#:
// Все права принадлежат дискорд сообществу https://discord.gg/VgNHPpNrz6
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("Convert Status", "Orange", "1.0.8")]
[Description("Change your admin status by a command")]
public class ConvertStatus : RustPlugin
{
#region Vars
private const string perm_use = "convertstatus.use";
#endregion
#region Oxide Hooks
private void Init()
{
permission.RegisterPermission(perm_use, this);
lang.RegisterMessages(messagesEN, this);
lang.RegisterMessages(messagesRU, this, "ru");
}
#endregion
#region Commands
[ChatCommand("convert")]
private void CmdConvert(BasePlayer p)
{
Convert(p);
}
#endregion
#region Helpers
private void Convert(BasePlayer p)
{
if (!HasPerm(p, perm_use))
{
message(p, "NOPERM");
return;
}
if (p.IsAdmin)
{
if (p.IsFlying)
{
p.SendConsoleCommand("noclip");
message(p, "NOCLIP");
timer.Once(1f, () => Convert(p));
return;
}
ServerUsers.Set(p.userID, ServerUsers.UserGroup.None, "", "");
p.SetPlayerFlag(BasePlayer.PlayerFlags.IsAdmin, false);
p.Connection.authLevel = 0;
permission.RemoveUserGroup(p.UserIDString, "admin");
}
else
{
ServerUsers.Set(p.userID, ServerUsers.UserGroup.Owner, "", "");
p.SetPlayerFlag(BasePlayer.PlayerFlags.IsAdmin, true);
p.Connection.authLevel = 2;
permission.AddUserGroup(p.UserIDString, "admin");
}
var a = p.IsAdmin ? "into" : "out of";
PrintWarning($"{p.displayName} converted {a} admin status");
message(p, "CHANGED", p.IsAdmin);
ServerUsers.Save();
}
private bool HasPerm(BasePlayer p, string s)
{
return permission.UserHasPermission(p.UserIDString, s);
}
#endregion
#region Language
private Dictionary<string, string> messagesEN = new Dictionary<string, string>
{
{"NOPERM", "You don't have permission to that command!"},
{"CHANGED", "Admin status now is <color=cyan>{0}</color>"},
{"NOCLIP", "Fly will be deactivated in 1 sec.Don't use it in next 3 seconds or you will be banned!"},
};
private Dictionary<string, string> messagesRU = new Dictionary<string, string>
{
{"NOPERM", "У вас нет доступа к этой команде!"},
{"CHANGED", "Ваш админ статус теперь <color=cyan>{0}</color>"},
{"NOCLIP", "Режим полёта будет выключен через 1 секунду.Не используйте его в ближайшие 3 секуны или вы будете забанены!"},
};
private void message(BasePlayer player, string key, params object[] args)
{
player.ChatMessage(string.Format(lang.GetMessage(key, this, player.UserIDString), args));
}
#endregion
}
}