Compare commits
12 Commits
Release
...
release-1.
Author | SHA1 | Date | |
---|---|---|---|
26077c58ca | |||
eed006b0fe | |||
8f36326f06 | |||
7173aa53f4 | |||
38837bb05a | |||
7b73331924 | |||
d2c64973c6 | |||
0557523482 | |||
1b1d82ff16 | |||
8e40d02693 | |||
20ebf2d96f | |||
44bc835887 |
56
ClanTag.cs
Normal file
56
ClanTag.cs
Normal 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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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">
|
49
Commands/ResetRankCommand.cs
Normal file
49
Commands/ResetRankCommand.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
81
Commands/SetRankCommand.cs
Normal file
81
Commands/SetRankCommand.cs
Normal file
@ -0,0 +1,81 @@
|
||||
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 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 has been reset");
|
||||
rank_string = E.Target.Level.ClanTag();
|
||||
E.Origin.Tell(E.Target.Name + "'s rank has been reset to: " + rank_string);
|
||||
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
rank_string = rank_player_var.Value;
|
||||
E.Origin.Tell("New rank set: [" + rank_player_var.Value + "]" + E.Target.Name);
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +1,11 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using ClanTagRankApi;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using SharedLibraryCore;
|
||||
using SharedLibraryCore.Database.Models;
|
||||
using SharedLibraryCore.Interfaces;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace WebfrontCore.Controllers.API
|
||||
{
|
||||
@ -11,9 +14,11 @@ namespace WebfrontCore.Controllers.API
|
||||
public class GscApiController : BaseController
|
||||
{
|
||||
string rankName;
|
||||
public GscApiController(IManager manager) : base(manager)
|
||||
EFMeta customRankName;
|
||||
private readonly IMetaService _metaService;
|
||||
public GscApiController(IManager manager, IMetaService metaService) : base(manager)
|
||||
{
|
||||
|
||||
_metaService = metaService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -21,50 +26,64 @@ namespace WebfrontCore.Controllers.API
|
||||
/// </summary>
|
||||
/// <param name="clientname"></param>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet("{clientname}")]
|
||||
public IActionResult Clientname(string clientname)
|
||||
[HttpGet("{clientguid}")]
|
||||
public async Task<IActionResult> Clientguid(string clientguid)
|
||||
{
|
||||
|
||||
long decimalNetworkId = clientguid.ConvertGuidToLong(System.Globalization.NumberStyles.Integer);
|
||||
var clientInfo = Manager.GetActiveClients()
|
||||
.FirstOrDefault(c => c.Name == clientname);
|
||||
.FirstOrDefault(c => c.NetworkId == decimalNetworkId);
|
||||
|
||||
if (clientInfo != null)
|
||||
{
|
||||
|
||||
switch((int)clientInfo.Level)
|
||||
rankName = clientInfo.Level.ClanTag();
|
||||
|
||||
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
|
||||
if (customRankName == null)
|
||||
{
|
||||
case 0:
|
||||
rankName = "User";
|
||||
break;
|
||||
case 1:
|
||||
rankName = "User";
|
||||
break;
|
||||
case 2:
|
||||
rankName = "Trusted";
|
||||
break;
|
||||
case 3:
|
||||
rankName = "Mod";
|
||||
break;
|
||||
case 4:
|
||||
rankName = "Admin";
|
||||
break;
|
||||
case 5:
|
||||
rankName = "Sr.Admin";
|
||||
break;
|
||||
case 6:
|
||||
rankName = "Owner";
|
||||
break;
|
||||
case 7:
|
||||
rankName = "Creator";
|
||||
break;
|
||||
case 8:
|
||||
rankName = "Console";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
await _metaService.AddPersistentMeta("rank", "none", clientInfo);
|
||||
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
|
||||
}
|
||||
|
||||
if (!(customRankName.Value.Contains("none")) && !(customRankName.Value.Contains("None")) && !(customRankName.Value.Contains("NONE")))
|
||||
{
|
||||
rankName = customRankName.Value;
|
||||
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine(rankName);
|
||||
|
||||
return Content(sb.ToString());
|
||||
}
|
||||
|
||||
return Content("Error: Client info is null");
|
||||
}
|
||||
[HttpGet("{clientname}")]
|
||||
public async Task<IActionResult> Clientname(string clientname)
|
||||
{
|
||||
|
||||
var clientInfo = Manager.GetActiveClients()
|
||||
.FirstOrDefault(c => c.Name == clientname);
|
||||
|
||||
|
||||
if (clientInfo != null)
|
||||
{
|
||||
|
||||
rankName = clientInfo.Level.ClanTag();
|
||||
|
||||
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
|
||||
if (customRankName == null)
|
||||
{
|
||||
await _metaService.AddPersistentMeta("rank", "none", clientInfo);
|
||||
customRankName = await _metaService.GetPersistentMeta("rank", clientInfo);
|
||||
}
|
||||
|
||||
if (!(customRankName.Value.Contains("none")) || !(customRankName.Value.Contains("None")) || !(customRankName.Value.Contains("NONE")))
|
||||
{
|
||||
rankName = customRankName.Value;
|
||||
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
sb.AppendLine(rankName);
|
||||
|
62
Plugin.cs
62
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
|
||||
@ -10,19 +13,20 @@ 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.0f;
|
||||
public float Version => 1.3f;
|
||||
|
||||
public string Author => "INSANEMODE";
|
||||
|
||||
private readonly IMetaService _metaService;
|
||||
|
||||
public Plugin(IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory)
|
||||
public Plugin(IMetaService metaService, IConfigurationHandlerFactory configurationHandlerFactory)
|
||||
{
|
||||
_metaService = metaService;
|
||||
_configurationHandler = (IConfigurationHandler<Configuration>)configurationHandlerFactory.GetConfigurationHandler<Configuration>("ClanTagRankApi");
|
||||
@ -41,8 +45,58 @@ 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 ||E.Type == GameEvent.EventType.ChangePermission)
|
||||
{
|
||||
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.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;
|
||||
}
|
||||
public Task OnTickAsync(Server S)// =>
|
||||
{
|
||||
|
||||
|
6
README.md
Normal file
6
README.md
Normal file
@ -0,0 +1,6 @@
|
||||
# ClanTagRankCommands
|
||||
|
||||
c# plugin for iw4m-admin that interacts with ClanTagRank to set the ClanTag of players, either by iw4m-admin permission level, or a custom one set with ```!setRank <player> <tag>```.
|
||||
|
||||
# Installation
|
||||
download the latest ClanTagRankCommands.dll from the releases page and place it in the Plugins folder of your iw4m-admin folder, and then head over to https://gitea.insanemode.org/INSANEMODE/ClanTagRank and follow the instructions there.
|
Reference in New Issue
Block a user