ClanTagRankCommands/Commands/SetRankCommand.cs
INSANEMODE 231f77bc77 -change to IpluginV2
-change version
-change to event system
-change config
-to use RegisterDependencies
2023-04-07 22:57:28 -05:00

116 lines
4.3 KiB
C#

using SharedLibraryCore;
using SharedLibraryCore.Commands;
using SharedLibraryCore.Configuration;
using SharedLibraryCore.Database.Models;
using SharedLibraryCore.Interfaces;
using System.Threading.Tasks;
namespace ClanTagRankCommands.Commands
{
/// <summary>
/// Example script command
/// </summary>
///
public class SetRankCommand : Command
{
readonly string rank = "rank";
string rank_string;
private readonly IMetaServiceV2 _metaService;
//private readonly IConfigurationHandler<ClanTagConfiguration> _configurationHandler;
private ClanTagConfiguration Config;
public SetRankCommand(CommandConfiguration config, ITranslationLookup lookup, ClanTagConfiguration _Config, IMetaServiceV2 metaService, IConfigurationHandlerFactory configurationHandlerFactory) : base(config, lookup)
{
_metaService = metaService;
//_configurationHandler = configurationHandlerFactory.GetConfigurationHandler<ClanTagConfiguration>("ClanTagRankCommands");
//if (_configurationHandler.Configuration() == null)
//{
// _configurationHandler.Set((ClanTagConfiguration)new ClanTagConfiguration().Generate());
// _configurationHandler.Save();
//}
Config = _Config;
Name = "SetRank";
Description = "set a user's clan tag Rank (does not give permissions)";
Alias = "sr";
Permission = EFClient.Permission.Administrator;
RequiresTarget = true;
Arguments = new[]
{
new CommandArgument()
{
Name = "rank",
Required = true
}
};
}
public override async Task ExecuteAsync(GameEvent E )
{
//var S = E.Owner;
rank_string = "none";
if (E.Data != null)
rank_string = E.Data;
if(E.Target is not null)
{
var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target.ClientId);
if (rank_player_var == null)
{
await _metaService.SetPersistentMeta(rank, "none", E.Target.ClientId);
rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target.ClientId);
}
if (rank_string.Length > 0 && rank_string.Length < 9)
{
await _metaService.SetPersistentMeta(rank, rank_string, E.Target.ClientId);
rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target.ClientId);
if(rank_player_var.Value == "none" || rank_player_var.Value == "None" || rank_player_var.Value == "NONE")
{
//E.Origin.Tell(E.Target.Name + "'s rank has been reset");
rank_string = E.Target.Level.ClanTag(Config);
E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string);
}
else
{
rank_string = rank_player_var.Value;
E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name);
}
}
else
{
E.Origin.Tell($"invalid rank length (between 1-8 characters), set rank to none, or use !ResetRank to reset");
}
if(E.Target is not null && E.Target.IsIngame)
{
if (string.IsNullOrWhiteSpace(rank_string))
{
await E.Owner.ExecuteCommandAsync("resetclantag" + " " + E.Target.ClientNumber.ToString());
await E.Owner.ExecuteCommandAsync("resetrole " + E.Target.ClientNumber.ToString());
}
else
{
await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString());
await E.Owner.ExecuteCommandAsync("setrole " + E.Target.ClientNumber.ToString() + " " + rank_string.ToString());
}
}
}
}
}
}