using SharedLibraryCore; using SharedLibraryCore.Commands; using SharedLibraryCore.Configuration; using SharedLibraryCore.Database.Models; using SharedLibraryCore.Interfaces; using System.Threading.Tasks; using ClanTagRankCommands; using System; using System.Runtime; namespace ClanTagRankCommands.Commands { /// /// Example script command /// public class PermaperkCommand : Command { private readonly IMetaService _metaService; private readonly IConfigurationHandler _configurationHandler; private Configuration Config; public PermaperkCommand(CommandConfiguration config, ITranslationLookup lookup, IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory) : base(config, lookup) { _metaService = metaService; _configurationHandler = configurationHandlerFactory.GetConfigurationHandler("ClanTagRankCommands"); if (_configurationHandler.Configuration() == null) { _configurationHandler.Set((Configuration)new Configuration().Generate()); _configurationHandler.Save(); } Config = _configurationHandler.Configuration(); Name = "Permaperk"; Description = "force permaperks, clan tag, and speed if they don't set correctly."; Alias = "perma"; Permission = EFClient.Permission.Trusted; RequiresTarget = false; Arguments = new[] { new CommandArgument() { } }; } public override async Task ExecuteAsync(GameEvent E) { //await yadb.notifyYADB("Kicked player @{target} after a successful vote started from @{origin}", $"testing", E.Data,":pencil:", E.Owner, E.Origin, E.Origin); var speedtoggle = await _metaService.GetPersistentMeta("speedtoggle", E.Origin); if (speedtoggle == null) { // speedtoggle == 1 means slower, unmodified speed) await _metaService.AddPersistentMeta("speedtoggle", "0", E.Origin); speedtoggle = await _metaService.GetPersistentMeta("speedtoggle", E.Origin); } //await E.Owner.SetDvarAsync("sv_iw4madmin_options", "speedtoggle;" + E.Origin.ClientNumber.ToString() + ";" + speedtoggle.Value.ToString()); if (E.Origin is not null && E.Origin.CurrentServer == E.Owner && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9) { var rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); var rankName = E.Origin.Level.ClanTag(Config); rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); if (rank_player_var == null) { await _metaService.AddPersistentMeta("rank", "none", E.Origin); rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin); } if (!(rank_player_var.Value.Contains("none")) && !(rank_player_var.Value.Contains("None")) && !(rank_player_var.Value.Contains("NONE"))) { rankName = rank_player_var.Value; } if (E.Origin is not null && E.Origin.CurrentServer == E.Owner && E.Origin.ClientNumber != -1 && E.Origin.ClientNumber != 9)// && (E.Origin.Level > EFClient.Permission.Trusted || rankName != Config.User)) { if(string.IsNullOrWhiteSpace(rankName)) { } else { await E.Owner.ExecuteCommandAsync("setclantag" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); await E.Owner.ExecuteCommandAsync("setrole" + " " + E.Origin.ClientNumber.ToString() + " " + rankName.ToString()); E.Origin.Tell("Setting permaperks"); } //await E.Owner.SetDvarAsync("sv_iw4madmin_role", "setRole;" + E.Origin.ClientNumber.ToString() + ";" + rankName.ToString()); } } } } }