I am working on a fun plugin where i want to be able to add strings(permissions) to a list but the command doesnt seem to fire.
I kinda need this plugin finished asap so any help would be appreciated
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("FactionsPlus", "Xmaniaxz", "0.0.1")]
internal class FactionsPlus : RustPlugin
{
public Configuration config;
#region INIT
private void Init()
{
Puts("Initializing Plugin");
Puts("Loading configuration.");
config = Config.ReadObject<Configuration>();
Config.WriteObject(config, true);
Permissions();
Commands();
}
#endregion INIT
#region Config
public class Configuration
{
public List<string> PermissionsList;
}
protected override void LoadDefaultConfig()
{
config = new Configuration()
{
PermissionsList = new List<string>()
{
"ugather.blessed"
}
};
}
private void SaveConfig(Configuration config)
{
Config.WriteObject(config, true);
SaveConfig();
}
#endregion Config
#region Permissions & Commands
private void Commands()
{
cmd.AddChatCommand("Addblessed", this, "BlessedAdd");
Puts("Loaded Command: Addblessed ");
cmd.AddChatCommand("ShowBlessed", this, "DebugBlessed");
Puts("Loaded Command: DebugBlessed ");
}
private void Permissions()
{
permission.RegisterPermission("FactionsPlus.Holder", this);
permission.RegisterPermission("FactionsPlus.Admin", this);
}
private void GrantBlessedPermissions(string groupperms)
{
foreach (string perm in config.PermissionsList)
{
if (!permission.GroupHasPermission(groupperms, perm))
permission.GrantGroupPermission(groupperms, perm, null);
}
}
private void RevokeBlessedPermissions(string groupperms)
{
foreach (string perm in config.PermissionsList)
{
if (permission.GroupHasPermission(groupperms, perm))
permission.RevokeGroupPermission(groupperms, perm);
}
}
#endregion Permissions & Commands
#region Commands
[ChatCommand("ShowBlessed")]
private void DebugBlessed(BasePlayer player, Configuration config)
{
Puts("ShowBlessed Called!");
if (permission.UserHasPermission(player.UserIDString, "FactionsPlus.Admin"))
{
if (config.PermissionsList.Count == 0)
{
player.IPlayer.Reply("List is Empty");
}
foreach (var entry in config.PermissionsList)
{
player.IPlayer.Reply(entry);
}
}
else
player.IPlayer.Reply("You don't have the required permission");
}
[ChatCommand("AddBlessed")]
private void BlessedAdd(BasePlayer player,Configuration config,string[] arg)
{
Puts("BlessedAdd Called!");
if (!permission.UserHasPermission(player.UserIDString, "FactionsPlus.Admin"))
{
player.IPlayer.Reply("You don't have the required permission to add permissions");
}
else
{
foreach (var entry in config.PermissionsList)
{
bool IsAssigned = false;
if (entry == arg[0])
{
IsAssigned = true;
}
if (!IsAssigned)
{
config.PermissionsList.Add(arg[0]);
string[] groups = permission.GetPermissionGroups("FactionsPlus.Holder");
foreach (var data in groups)
{
GrantBlessedPermissions(data);
player.IPlayer.Reply($"You have added {arg} to the blessed team");
}
IsAssigned = false;
break;
}
}
}
}
#endregion Commands
#region Hooks
private void Unload()
{
SaveConfig(config);
}
private void OnEntityDeath(BuildingPrivlidge ToolCupboard, HitInfo info)
{
Puts("Checking for TC");
BasePlayer owner = BasePlayer.FindByID(ToolCupboard.OwnerID);
BasePlayer attacker = info?.InitiatorPlayer;
if (owner != null && attacker != null)
{
if (owner.displayName != attacker.displayName)
{
covalence.Server.Broadcast($"{attacker.displayName}'s team, destroyed the tool cupboard of {owner.displayName}'s team");
CheckIfPlayerGroupHasPermission(owner, attacker);
}
}
}
private void CheckIfPlayerGroupHasPermission(BasePlayer player, BasePlayer attacker)
{
string[] groups = permission.GetUserGroups(player.IPlayer.Id);
string[] Attackergroups = permission.GetUserGroups(attacker.IPlayer.Id);
foreach (var entry in groups)
{
if (permission.GroupHasPermission(entry, "FactionsPlus.Holder"))
{
permission.RevokeGroupPermission(entry, "FactionPlus.Holder");
RevokeBlessedPermissions(entry);
covalence.Server.Broadcast($"{player.displayName}'s team has lost the Holy Grail!");
foreach (var attackentry in Attackergroups)
{
GrantBlessedPermissions(attackentry);
permission.GrantGroupPermission(attackentry, "FactionPlus.Holder", null);
covalence.Server.Broadcast($"{player.displayName}'s team stole the Holy Grail and have become blessed!");
}
}
}
}
#endregion Hooks
}
} 