Merge pull request 'custom-ranks' (#2) from custom-ranks into master

Reviewed-on: #2
This commit is contained in:
Brandon Hammer 2020-11-19 16:20:32 +00:00
commit 26077c58ca
6 changed files with 175 additions and 82 deletions

56
ClanTag.cs Normal file
View File

@ -0,0 +1,56 @@

using SharedLibraryCore.Database.Models;
namespace ClanTagRankApi
{
public static class ExtensionMethods
{
public static string ClanTag(this EFClient.Permission level)
{
string rankName;
switch ((int)level)
{
case -1:
rankName = "Banned"; //this typically won't be seen.
break;
case 0:
rankName = "User";
break;
case 1:
rankName = "User"; //1 = flagged, but don't want to show this in game.
break;
case 2:
rankName = "Trusted";
break;
case 3:
rankName = "Mod";
break;
case 4:
rankName = "Admin";
break;
case 5:
rankName = "SrAdmin";
break;
case 6:
rankName = "Owner";
break;
case 7:
rankName = "Creator";
break;
case 8:
rankName = "Console";
break;
default:
rankName = "User";
break;
}
return rankName;
}
}
}

View File

@ -10,7 +10,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="RaidMax.IW4MAdmin.SharedLibraryCore" Version="2.4.9" PrivateAssets="All" />
<PackageReference Include="RaidMax.IW4MAdmin.SharedLibraryCore" Version="2020.11.18.1" PrivateAssets="All" />
</ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">

View File

@ -0,0 +1,49 @@
using SharedLibraryCore;
using SharedLibraryCore.Commands;
using SharedLibraryCore.Configuration;
using SharedLibraryCore.Database.Models;
using SharedLibraryCore.Interfaces;
using System.Threading.Tasks;
namespace ClanTagRankApi.Commands
{
/// <summary>
/// Example script command
/// </summary>
public class ResetRankCommand : Command
{
readonly string rank = "rank";
string rank_string;
private readonly IMetaService _metaService;
public ResetRankCommand(CommandConfiguration config, ITranslationLookup lookup, IMetaService metaService) : base(config, lookup)
{
_metaService = metaService;
Name = "ResetRank";
Description = "set a user's clan tag Rank (does not give permissions)";
Alias = "rr";
Permission = EFClient.Permission.Administrator;
RequiresTarget = true;
Arguments = new[]
{
new CommandArgument()
{
//Name = "rank",
//Required = false
}
};
}
public override async Task ExecuteAsync(GameEvent E)
{
//var S = E.Owner;
rank_string = "none";
await _metaService.AddPersistentMeta(rank, rank_string, E.Target);
rank_string = E.Target.Level.ClanTag();
E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string);
await E.Owner.ExecuteCommandAsync("setrank" + " " + E.Target.ClientNumber + " " + rank_string);
}
}
}

View File

@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace IW4ScriptCommands.Commands
namespace ClanTagRankApi.Commands
{
/// <summary>
/// Example script command
@ -55,15 +55,27 @@ namespace IW4ScriptCommands.Commands
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(E.Target.Name + "'s rank has been reset");
rank_string = E.Target.Level.ClanTag();
E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string);
E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name);
}
else
{
rank_string = rank_player_var.Value;
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");
E.Origin.Tell($"invalid rank length (between 1-8 characters), set rank to none, or use !ResetRank to reset");
}
await E.Owner.ExecuteCommandAsync("setrank" + " " + E.Target.ClientNumber + " " + rank_string);
}
}
}

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using ClanTagRankApi;
using Microsoft.AspNetCore.Mvc;
using SharedLibraryCore;
using SharedLibraryCore.Database.Models;
using SharedLibraryCore.Interfaces;
@ -35,41 +36,7 @@ namespace WebfrontCore.Controllers.API
if (clientInfo != null)
{
switch ((int)clientInfo.Level)
{
case -1:
rankName = "Banned"; //this typically won't be seen.
break;
case 0:
rankName = "User";
break;
case 1:
rankName = "User"; //1 = flagged, but don't want to show this in game.
break;
case 2:
rankName = "Trusted";
break;
case 3:
rankName = "Mod";
break;
case 4:
rankName = "Admin";
break;
case 5:
rankName = "SrAdmin";
break;
case 6:
rankName = "Owner";
break;
case 7:
rankName = "Creator";
break;
case 8:
rankName = "Console";
break;
default:
break;
}
rankName = clientInfo.Level.ClanTag();
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
if (customRankName == null)
@ -103,41 +70,7 @@ namespace WebfrontCore.Controllers.API
if (clientInfo != null)
{
switch ((int)clientInfo.Level)
{
case -1:
rankName = "Banned"; //this typically won't be seen.
break;
case 0:
rankName = "User";
break;
case 1:
rankName = "User"; //1 = flagged, but don't want to show this in game.
break;
case 2:
rankName = "Trusted";
break;
case 3:
rankName = "Mod";
break;
case 4:
rankName = "Admin";
break;
case 5:
rankName = "SrAdmin";
break;
case 6:
rankName = "Owner";
break;
case 7:
rankName = "Creator";
break;
case 8:
rankName = "Console";
break;
default:
break;
}
rankName = clientInfo.Level.ClanTag();
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
if (customRankName == null)

View File

@ -1,6 +1,9 @@
using SharedLibraryCore;
using SharedLibraryCore.Interfaces;
using System.Threading.Tasks;
using System.Threading;
using SharedLibraryCore.Database.Models;
using System.Collections.Generic;
namespace ClanTagRankApi
@ -11,12 +14,13 @@ namespace ClanTagRankApi
private readonly IConfigurationHandler<Configuration> _configurationHandler;
private Configuration Config;
readonly string rank = "rank";
string rankName = "none";
public string Name => "ClanTagRankApi";
public float Version => 1.1f;
public float Version => 1.3f;
public string Author => "INSANEMODE";
@ -43,14 +47,53 @@ namespace ClanTagRankApi
}
public async Task OnEventAsync(GameEvent E, Server S)// => Task.CompletedTask;
{
if (E.Type == GameEvent.EventType.Join)
if (E.Type == GameEvent.EventType.Join ||E.Type == GameEvent.EventType.ChangePermission)
{
var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target);
Thread.Sleep(10000);
var rank_player_var = await _metaService.GetPersistentMeta(rank, E.Origin);
rankName = E.Origin.Level.ClanTag();
rank_player_var = await _metaService.GetPersistentMeta("rank", E.Origin);
if (rank_player_var == null)
{
await _metaService.AddPersistentMeta(rank, "none", E.Target);
rank_player_var = await _metaService.GetPersistentMeta(rank, E.Target);
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;
}
await S.ExecuteCommandAsync("setrank" + " " + E.Origin.ClientNumber + " " + rankName);
}
if (E.Type == GameEvent.EventType.Start || E.Type == GameEvent.EventType.MapEnd || E.Type == GameEvent.EventType.MapChange)
{
Thread.Sleep(10000);
IList<EFClient> currentclients = E.Owner.Manager.GetActiveClients();
foreach(EFClient client in currentclients)
{
var rank_player_var = await _metaService.GetPersistentMeta(rank, client);
rankName = client.Level.ClanTag();
rank_player_var = await _metaService.GetPersistentMeta("rank", client);
if (rank_player_var == null)
{
await _metaService.AddPersistentMeta("rank", "none", client);
rank_player_var = await _metaService.GetPersistentMeta("rank", client);
}
if (!(rank_player_var.Value.Contains("none")) && !(rank_player_var.Value.Contains("None")) && !(rank_player_var.Value.Contains("NONE")))
{
rankName = rank_player_var.Value;
}
await S.ExecuteCommandAsync("setrank" + " " + client.ClientNumber + " " + rankName);
}
}
//return Task.CompletedTask;
}