From 20ebf2d96f850f5c23ddab42a98e292140f29292 Mon Sep 17 00:00:00 2001 From: INSANEMODE Date: Mon, 16 Nov 2020 04:01:22 -0600 Subject: [PATCH] change "Sr.Admin" to "SrAdmin", because it was too long for a clantag. --- Commands/SetRankCommand.cs | 69 ++++++++++++++++++++++++++++++++++++++ GscApiController.cs | 6 ++-- Plugin.cs | 17 ++++++++-- 3 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 Commands/SetRankCommand.cs diff --git a/Commands/SetRankCommand.cs b/Commands/SetRankCommand.cs new file mode 100644 index 0000000..cb89a65 --- /dev/null +++ b/Commands/SetRankCommand.cs @@ -0,0 +1,69 @@ +using SharedLibraryCore; +using SharedLibraryCore.Commands; +using SharedLibraryCore.Configuration; +using SharedLibraryCore.Database.Models; +using SharedLibraryCore.Interfaces; +using System.Threading.Tasks; + + + +namespace IW4ScriptCommands.Commands +{ + /// + /// Example script command + /// + public class SetRankCommand : Command + { + readonly string rank = "rank"; + string rank_string; + private readonly IMetaService _metaService; + + public SetRankCommand(CommandConfiguration config, ITranslationLookup lookup, IMetaService metaService) : base(config, lookup) + { + _metaService = metaService; + 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; + var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if (rank_player_var == null) + { + await _metaService.AddPersistentMeta(rank, "none", E.Target); + rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + } + + if (rank_string.Length > 0 && rank_string.Length < 9) + { + + await _metaService.AddPersistentMeta(rank, rank_string, E.Target); + rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if(rank_player_var.Value == "none" || rank_player_var.Value == "None" || rank_player_var.Value == "NONE") + E.Origin.Tell(E.Target.Name + "'s Rank reset to none"); + + E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name); + } + else + { + //rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + E.Origin.Tell($"invalid rank length (between 1-8 characters), set rank to none to reset"); + } + } + } +} diff --git a/GscApiController.cs b/GscApiController.cs index 9e0b894..ca17dcf 100644 --- a/GscApiController.cs +++ b/GscApiController.cs @@ -25,14 +25,14 @@ namespace WebfrontCore.Controllers.API [HttpGet("{clientname}")] public IActionResult Clientname(string clientname) { - + var clientInfo = Manager.GetActiveClients() .FirstOrDefault(c => c.Name == clientname); if (clientInfo != null) { - switch((int)clientInfo.Level) + switch ((int)clientInfo.Level) { case 0: rankName = "User"; @@ -50,7 +50,7 @@ namespace WebfrontCore.Controllers.API rankName = "Admin"; break; case 5: - rankName = "Sr.Admin"; + rankName = "SrAdmin"; break; case 6: rankName = "Owner"; diff --git a/Plugin.cs b/Plugin.cs index de0907f..f7bd628 100644 --- a/Plugin.cs +++ b/Plugin.cs @@ -10,7 +10,7 @@ namespace ClanTagRankApi { private readonly IConfigurationHandler _configurationHandler; private Configuration Config; - + readonly string rank = "rank"; @@ -41,8 +41,19 @@ namespace ClanTagRankApi return Task.CompletedTask; } - public Task OnEventAsync(GameEvent E, Server S) => Task.CompletedTask; - + public async Task OnEventAsync(GameEvent E, Server S)// => Task.CompletedTask; + { + if (E.Type == GameEvent.EventType.Join) + { + var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + if (rank_player_var == null) + { + await _metaService.AddPersistentMeta(rank, "none", E.Target); + rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target); + } + } + //return Task.CompletedTask; + } public Task OnTickAsync(Server S)// => {