add setdonator and invite guest commands
This commit is contained in:
@ -39,12 +39,25 @@ namespace ClanTagRankCommands.Commands
|
||||
|
||||
public override async Task ExecuteAsync(GameEvent gameEvent)
|
||||
{
|
||||
if(gameEvent.Target.Tag.Contains("Guest" ) || gameEvent.Target.Tag.Contains("Donator") || gameEvent.Target.Tag.Contains("VIP"))
|
||||
if(gameEvent.Target is not null && gameEvent.Target.IsIngame)
|
||||
{
|
||||
gameEvent.Origin.Tell($"Can't set {gameEvent.Target.Tag} {gameEvent.Target.Name} to Guest, they already have a rank.");
|
||||
gameEvent.Origin.Tell($"Can't set {gameEvent.Target.Name} to Guest, while they are online.");
|
||||
}
|
||||
if(gameEvent.Target is not null && gameEvent.Target.Tag is not null)
|
||||
{
|
||||
if(gameEvent.Target.Tag.Contains("Guest" ) || gameEvent.Target.Tag.Contains("Donator") || gameEvent.Target.Tag.Contains("VIP"))
|
||||
{
|
||||
gameEvent.Origin.Tell($"Can't set {gameEvent.Target.Tag} {gameEvent.Target.Name} to Guest, they already have a rank.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if(gameEvent.Target is null)
|
||||
{
|
||||
gameEvent.Origin.Tell($"Target player is undefined");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
var token = gameEvent.Owner.Manager.CancellationToken;
|
||||
|
||||
var availableTags = await _metaService.GetPersistentMetaValue<List<LookupValue<string>>>(EFMeta.ClientTagNameV2, token);
|
||||
|
@ -1,92 +1,93 @@
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Threading.Tasks;
|
||||
//using Data.Models;
|
||||
//using Data.Models.Client;
|
||||
//using SharedLibraryCore;
|
||||
//using SharedLibraryCore.Commands;
|
||||
//using SharedLibraryCore.Configuration;
|
||||
//using SharedLibraryCore.Dtos;
|
||||
//using SharedLibraryCore.Interfaces;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Data.Models;
|
||||
using Data.Models.Client;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Commands;
|
||||
using SharedLibraryCore.Configuration;
|
||||
using SharedLibraryCore.Dtos;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
|
||||
|
||||
//namespace ClanTagRankCommands.Commands
|
||||
//{
|
||||
// public class SetDonatorCommand : Command
|
||||
// {
|
||||
// private readonly IMetaServiceV2 _metaService;
|
||||
namespace ClanTagRankCommands.Commands
|
||||
{
|
||||
public class SetDonatorCommand : Command
|
||||
{
|
||||
private readonly IMetaServiceV2 _metaService;
|
||||
|
||||
|
||||
// public SetDonatorCommand(CommandConfiguration config, ITranslationLookup layout, IMetaServiceV2 metaService) :
|
||||
// base(config, layout)
|
||||
// {
|
||||
// Name = "SetDonator";
|
||||
// Description = "Sets a player to Donator rank";
|
||||
// Alias = "Donator";
|
||||
// Permission = EFClient.Permission.Trusted;
|
||||
// RequiresTarget = true;
|
||||
// Arguments = new[]
|
||||
// {
|
||||
// new CommandArgument
|
||||
// {
|
||||
// Name = "Player",
|
||||
// Required = true
|
||||
// }
|
||||
// };
|
||||
public SetDonatorCommand(CommandConfiguration config, ITranslationLookup layout, IMetaServiceV2 metaService) :
|
||||
base(config, layout)
|
||||
{
|
||||
Name = "SetDonator";
|
||||
Description = "Sets a player to Donator rank";
|
||||
Alias = "Donator";
|
||||
Permission = EFClient.Permission.Moderator;
|
||||
RequiresTarget = true;
|
||||
Arguments = new[]
|
||||
{
|
||||
new CommandArgument
|
||||
{
|
||||
Name = "Player",
|
||||
Required = true
|
||||
}
|
||||
};
|
||||
|
||||
// _metaService = metaService;
|
||||
// }
|
||||
_metaService = metaService;
|
||||
}
|
||||
|
||||
// public override async Task ExecuteAsync(GameEvent gameEvent)
|
||||
// {
|
||||
// var token = gameEvent.Owner.Manager.CancellationToken;
|
||||
public override async Task ExecuteAsync(GameEvent gameEvent)
|
||||
{
|
||||
var token = gameEvent.Owner.Manager.CancellationToken;
|
||||
|
||||
// var availableTags = await _metaService.GetPersistentMetaValue<List<LookupValue<string>>>(EFMeta.ClientTagNameV2, token);
|
||||
// var matchingTag = availableTags.FirstOrDefault(tag => tag.Value == "Donator".Trim());
|
||||
var availableTags = await _metaService.GetPersistentMetaValue<List<LookupValue<string>>>(EFMeta.ClientTagNameV2, token);
|
||||
var matchingTag = availableTags.FirstOrDefault(tag => tag.Value == "Donator".Trim());
|
||||
|
||||
// gameEvent.Target.Tag = matchingTag.Value;
|
||||
// await _metaService.SetPersistentMetaForLookupKey(EFMeta.ClientTagV2, EFMeta.ClientTagNameV2, matchingTag.Id,
|
||||
// gameEvent.Target.ClientId, token);
|
||||
// if (gameEvent.Target.Level < EFClient.Permission.Moderator)
|
||||
// {
|
||||
// gameEvent.Target.SetLevel(EFClient.Permission.Trusted, gameEvent.Origin);
|
||||
// }
|
||||
// gameEvent.Origin.Tell($"Set {gameEvent.Target.Name} to Donator");
|
||||
// if (gameEvent.Target.IsIngame)
|
||||
// {
|
||||
// gameEvent.Target.Tell($"Your rank has been set to Donator!");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// var cmd = $"{Utilities.CommandPrefix}om {gameEvent.Target.ClientId} Your rank has been set to Donator!";
|
||||
// var impersonatedCommandEvent = new GameEvent
|
||||
// {
|
||||
// Type = GameEvent.EventType.Command,
|
||||
// Origin = gameEvent.Origin,
|
||||
// ImpersonationOrigin = gameEvent.Origin,
|
||||
// Message = cmd,
|
||||
// Data = cmd,
|
||||
// Owner = gameEvent.Owner,
|
||||
// CorrelationId = gameEvent.CorrelationId
|
||||
// };
|
||||
// gameEvent.Owner.Manager.AddEvent(impersonatedCommandEvent);
|
||||
gameEvent.Target.Tag = matchingTag.Value;
|
||||
await _metaService.SetPersistentMetaForLookupKey(EFMeta.ClientTagV2, EFMeta.ClientTagNameV2, matchingTag.Id,
|
||||
gameEvent.Target.ClientId, token);
|
||||
if (gameEvent.Target.Level < EFClient.Permission.Moderator)
|
||||
{
|
||||
gameEvent.Target.SetLevel(EFClient.Permission.Trusted, gameEvent.Origin);
|
||||
}
|
||||
|
||||
// var result = await impersonatedCommandEvent.WaitAsync(Utilities.DefaultCommandTimeout,
|
||||
// gameEvent.Owner.Manager.CancellationToken);
|
||||
// await result.WaitAsync(Utilities.DefaultCommandTimeout, gameEvent.Owner.Manager.CancellationToken);
|
||||
gameEvent.Origin.Tell($"Set {gameEvent.Target.Name} to Donator");
|
||||
if (gameEvent.Target.IsIngame)
|
||||
{
|
||||
gameEvent.Target.Tell($"Your rank has been set to Donator!");
|
||||
}
|
||||
else
|
||||
{
|
||||
var cmd = $"{Utilities.CommandPrefix}om @{gameEvent.Target.ClientId} Your rank has been set to Donator!";
|
||||
var impersonatedCommandEvent = new GameEvent
|
||||
{
|
||||
Type = GameEvent.EventType.Command,
|
||||
Origin = gameEvent.Origin,
|
||||
//ImpersonationOrigin = gameEvent.Origin,
|
||||
Message = cmd,
|
||||
Data = cmd,
|
||||
Owner = gameEvent.Owner,
|
||||
CorrelationId = gameEvent.CorrelationId
|
||||
};
|
||||
gameEvent.Owner.Manager.AddEvent(impersonatedCommandEvent);
|
||||
|
||||
// // remove the added command response
|
||||
// // todo: something weird happening making this change required
|
||||
// var responses = gameEvent.Owner.Manager.ProcessingEvents
|
||||
// .Where(ev => ev.Value.CorrelationId == impersonatedCommandEvent.CorrelationId)
|
||||
// .SelectMany(ev => ev.Value.Output)
|
||||
// .ToList();
|
||||
var result = await impersonatedCommandEvent.WaitAsync(Utilities.DefaultCommandTimeout,
|
||||
gameEvent.Owner.Manager.CancellationToken);
|
||||
await result.WaitAsync(Utilities.DefaultCommandTimeout, gameEvent.Owner.Manager.CancellationToken);
|
||||
|
||||
// foreach (var output in responses)
|
||||
// await gameEvent.Origin.Tell(_translationLookup["COMMANDS_RUN_AS_SUCCESS"].FormatExt(output))
|
||||
// .WaitAsync();
|
||||
// remove the added command response
|
||||
// todo: something weird happening making this change required
|
||||
var responses = gameEvent.Owner.Manager.ProcessingEvents
|
||||
.Where(ev => ev.Value.CorrelationId == impersonatedCommandEvent.CorrelationId)
|
||||
.SelectMany(ev => ev.Value.Output)
|
||||
.ToList();
|
||||
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
foreach (var output in responses)
|
||||
await gameEvent.Origin.Tell(_translationLookup["COMMANDS_RUN_AS_SUCCESS"].FormatExt(output))
|
||||
.WaitAsync();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user