C#:
using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using Oxide.Core.Libraries.Covalence;
namespace Oxide.Plugins
{
[Info("DummyPermissions", "Realiztik", "1.0.0")]
[Description("Manage dummy permissions for gating content without triggering actions")]
public class DummyPermissions : RustPlugin
{
private static string PermissionPrefix = "dummypermissions";
private Configuration config;
#region Config
private class Configuration
{
[JsonProperty(PropertyName = "DummyPermissions", ObjectCreationHandling = ObjectCreationHandling.Replace)]
public List<string> DummyPermissions { get; set; } = new List<string>();
public static Configuration DefaultConfig()
{
return new Configuration
{
DummyPermissions = new List<string> { "example1", "example2" }
};
}
}
protected override void LoadDefaultConfig() => config = Configuration.DefaultConfig();
protected override void LoadConfig()
{
base.LoadConfig();
config = Config.ReadObject<Configuration>();
if (config == null)
{
PrintError("Configuration file is missing. Loading default configuration.");
LoadDefaultConfig();
}
SaveConfig();
}
protected override void SaveConfig() => Config.WriteObject(config);
#endregion
#region Hooks
private void Init()
{
RegisterPermissions();
}
private void OnServerInitialized()
{
RegisterPermissions();
}
private void RegisterPermissions()
{
foreach (var perm in config.DummyPermissions)
{
string fullPermission = $"{PermissionPrefix}.{perm}";
if (!permission.PermissionExists(fullPermission))
{
permission.RegisterPermission(fullPermission, this);
Puts($"Registered dummy permission: {fullPermission}");
}
}
}
#endregion
#region Commands
[Command("grantdperm", "grantd")]
private void GrantDummyPermission(IPlayer player, string command, string[] args)
{
if (!player.IsAdmin)
{
player.Reply("You don't have permission to use this command.");
return;
}
if (args.Length < 2)
{
player.Reply("Usage: /grantd <playername> <permission>");
return;
}
var target = covalence.Players.FindPlayer(args[0]);
if (target == null)
{
player.Reply("Player not found.");
return;
}
string permissionName = $"{PermissionPrefix}.{args[1]}";
if (!permission.PermissionExists(permissionName))
{
player.Reply("Permission doesn't exist.");
return;
}
permission.GrantUserPermission(target.Id, permissionName, this);
player.Reply($"Permission {permissionName} granted to {target.Name}.");
}
[Command("revokedperm", "revoked")]
private void RevokeDummyPermission(IPlayer player, string command, string[] args)
{
if (!player.IsAdmin)
{
player.Reply("You don't have permission to use this command.");
return;
}
if (args.Length < 2)
{
player.Reply("Usage: /revoked <playername> <permission>");
return;
}
var target = covalence.Players.FindPlayer(args[0]);
if (target == null)
{
player.Reply("Player not found.");
return;
}
string permissionName = $"{PermissionPrefix}.{args[1]}";
if (!permission.PermissionExists(permissionName))
{
player.Reply("Permission doesn't exist.");
return;
}
permission.RevokeUserPermission(target.Id, permissionName);
player.Reply($"Permission {permissionName} revoked from {target.Name}.");
}
#endregion
}
}