1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-10 07:13:58 -05:00

stats tweaked to scale SPM based on team size

invalid client id results in 404 rather than exception page
performance based on traditional elo rating
fixed @ (broadcast commands)
added reports to penalty list and profile
This commit is contained in:
RaidMax
2018-05-24 14:48:57 -05:00
parent 8ac75ec63a
commit eb3b208e4f
12 changed files with 108 additions and 47 deletions

View File

@ -451,6 +451,7 @@ namespace SharedLibraryCore.Commands
if (ActiveClient != null)
{
ActiveClient.Level = newPerm;
await E.Owner.Manager.GetClientService().Update(ActiveClient);
await ActiveClient.Tell($"{Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_SUCCESS_TARGET"]} {newPerm}");
}
@ -806,6 +807,20 @@ namespace SharedLibraryCore.Commands
E.Owner.Reports.Add(new Report(E.Target, E.Origin, E.Data));
Penalty newReport = new Penalty()
{
Type = Penalty.PenaltyType.Report,
Expires = DateTime.UtcNow,
Offender = E.Target,
Offense = E.Data,
Punisher = E.Origin,
Active = true,
When = DateTime.UtcNow,
Link = E.Target.AliasLink
};
await E.Owner.Manager.GetPenaltyService().Create(newReport);
await E.Origin.Tell(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_REPORT_SUCCESS"]);
E.Owner.Manager.GetEventHandler().AddEvent(new GameEvent(GameEvent.EventType.Report, E.Data, E.Origin, E.Target, E.Owner));
await E.Owner.ToAdmins(String.Format("^5{0}^7->^1{1}^7: {2}", E.Origin.Name, E.Target.Name, E.Data));

View File

@ -127,6 +127,9 @@ namespace SharedLibraryCore.Services
};
var foundClient = await iqClient.FirstOrDefaultAsync();
if (foundClient == null)
return null;
foundClient.Client.LinkedAccounts = new Dictionary<int, long>();
// todo: find out the best way to do this
// I'm doing this here because I don't know the best way to have multiple awaits in the query
@ -163,12 +166,11 @@ namespace SharedLibraryCore.Services
if (entity.Level != client.Level)
{
// get all clients that use the same aliasId
var matchingClients = await context.Clients
.Where(c => c.CurrentAliasId == client.CurrentAliasId)
.ToListAsync();
var matchingClients = context.Clients
.Where(c => c.CurrentAliasId == client.CurrentAliasId);
// update all related clients level
matchingClients.ForEach(c => c.Level = (client.Level == Player.Permission.Banned) ?
await matchingClients.ForEachAsync(c => c.Level = (client.Level == Player.Permission.Banned) ?
client.Level : entity.Level);
}