using SharedLibraryCore; using SharedLibraryCore.Commands; using SharedLibraryCore.Configuration; using SharedLibraryCore.Database.Models; using SharedLibraryCore.Interfaces; using System.Threading.Tasks; namespace ClanTagRankCommands.Commands { /// /// Example script command /// /// public class SetRankCommand : Command { readonly string rank = "rank"; string rank_string; private readonly IMetaServiceV2 _metaService; //private readonly IConfigurationHandler _configurationHandler; private ClanTagConfiguration Config; public SetRankCommand(CommandConfiguration config, ITranslationLookup lookup, ClanTagConfiguration _Config, IMetaServiceV2 metaService, IConfigurationHandlerFactory configurationHandlerFactory) : base(config, lookup) { _metaService = metaService; //_configurationHandler = configurationHandlerFactory.GetConfigurationHandler("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()); } } } } } }