diff --git a/ClanTag.cs b/ClanTag.cs
new file mode 100644
index 0000000..063c128
--- /dev/null
+++ b/ClanTag.cs
@@ -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;
+ }
+
+
+ }
+}
+
+
+
diff --git a/ClanTagRankApi.csproj b/ClanTagRankCommands.csproj
similarity index 92%
rename from ClanTagRankApi.csproj
rename to ClanTagRankCommands.csproj
index 8c371e5..e5bca04 100644
--- a/ClanTagRankApi.csproj
+++ b/ClanTagRankCommands.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/Commands/ResetRankCommand.cs b/Commands/ResetRankCommand.cs
new file mode 100644
index 0000000..91efb20
--- /dev/null
+++ b/Commands/ResetRankCommand.cs
@@ -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
+{
+ ///
+ /// Example script command
+ ///
+ 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);
+ }
+ }
+}
diff --git a/Commands/SetRankCommand.cs b/Commands/SetRankCommand.cs
index cb89a65..9c32e63 100644
--- a/Commands/SetRankCommand.cs
+++ b/Commands/SetRankCommand.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
-namespace IW4ScriptCommands.Commands
+namespace ClanTagRankApi.Commands
{
///
/// 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);
}
}
}
diff --git a/GscApiController.cs b/GscApiController.cs
index 460f892..a3f8104 100644
--- a/GscApiController.cs
+++ b/GscApiController.cs
@@ -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)
diff --git a/Plugin.cs b/Plugin.cs
index f9acac3..9b2d961 100644
--- a/Plugin.cs
+++ b/Plugin.cs
@@ -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 _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 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;
}