Fix gulag & tweak ratio (#36)
* - tweak: Tweak gulag ratio * - fix: Fix gulag.
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
|
using Content.Server.Administration.Managers;
|
||||||
using Content.Server.Database;
|
using Content.Server.Database;
|
||||||
using Content.Shared.Administration;
|
using Content.Shared.Administration;
|
||||||
using Robust.Shared.Console;
|
using Robust.Shared.Console;
|
||||||
@@ -16,6 +17,7 @@ namespace Content.Server.Administration.Commands
|
|||||||
{
|
{
|
||||||
var player = shell.Player;
|
var player = shell.Player;
|
||||||
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
||||||
|
var banManager = IoCManager.Resolve<IBanManager>();
|
||||||
|
|
||||||
if (args.Length != 1)
|
if (args.Length != 1)
|
||||||
{
|
{
|
||||||
@@ -37,6 +39,9 @@ namespace Content.Server.Administration.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ban.UserId.HasValue)
|
||||||
|
banManager.RemoveCachedServerBan(ban.UserId.Value, banId);
|
||||||
|
|
||||||
if (ban.Unban != null)
|
if (ban.Unban != null)
|
||||||
{
|
{
|
||||||
var response = new StringBuilder("This ban has already been pardoned");
|
var response = new StringBuilder("This ban has already been pardoned");
|
||||||
|
|||||||
@@ -207,7 +207,26 @@ public sealed class BanManager : IBanManager, IPostInjectInit
|
|||||||
|
|
||||||
if (banDef.UserId.HasValue)
|
if (banDef.UserId.HasValue)
|
||||||
{
|
{
|
||||||
_cachedServerBans.GetOrNew(banDef.UserId.Value).Add(banDef);
|
var banlist = await _db.GetServerBansAsync(addressRange?.Item1, target, hwid, false);
|
||||||
|
if (banlist.Count > 0 && banlist[^1].Id.HasValue)
|
||||||
|
{
|
||||||
|
var banDefWithId = new ServerBanDef(
|
||||||
|
banlist[^1].Id,
|
||||||
|
banDef.UserId,
|
||||||
|
banDef.Address,
|
||||||
|
banDef.HWId,
|
||||||
|
banDef.BanTime,
|
||||||
|
banDef.ExpirationTime,
|
||||||
|
banDef.RoundId,
|
||||||
|
banDef.PlaytimeAtNote,
|
||||||
|
banDef.Reason,
|
||||||
|
banDef.Severity,
|
||||||
|
banDef.BanningAdmin,
|
||||||
|
banDef.Unban,
|
||||||
|
banDef.ServerName);
|
||||||
|
|
||||||
|
_cachedServerBans.GetOrNew(banDef.UserId.Value).Add(banDefWithId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we're not banning a player we don't care about disconnecting people
|
// If we're not banning a player we don't care about disconnecting people
|
||||||
@@ -241,6 +260,22 @@ public sealed class BanManager : IBanManager, IPostInjectInit
|
|||||||
|
|
||||||
return new HashSet<ServerBanDef>();
|
return new HashSet<ServerBanDef>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveCachedServerBan(NetUserId userId, int? id)
|
||||||
|
{
|
||||||
|
if (_cachedServerBans.TryGetValue(userId, out var bans))
|
||||||
|
{
|
||||||
|
bans.RemoveWhere(ban => ban.Id == id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddCachedServerBan(ServerBanDef banDef)
|
||||||
|
{
|
||||||
|
if (banDef.UserId == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_cachedServerBans.GetOrNew(banDef.UserId.Value).Add(banDef);
|
||||||
|
}
|
||||||
//Miracle edit end
|
//Miracle edit end
|
||||||
|
|
||||||
#region Job Bans
|
#region Job Bans
|
||||||
|
|||||||
@@ -30,6 +30,9 @@ public interface IBanManager
|
|||||||
public HashSet<string>? GetJobBans(NetUserId playerUserId);
|
public HashSet<string>? GetJobBans(NetUserId playerUserId);
|
||||||
|
|
||||||
public HashSet<ServerBanDef> GetServerBans(NetUserId userId); // Miracle edit
|
public HashSet<ServerBanDef> GetServerBans(NetUserId userId); // Miracle edit
|
||||||
|
public void RemoveCachedServerBan(NetUserId userId, int? id); // Miracle edit
|
||||||
|
|
||||||
|
public void AddCachedServerBan(ServerBanDef banDef); // Miracle edit
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates a job ban for the specified target, username or GUID
|
/// Creates a job ban for the specified target, username or GUID
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ namespace Content.Server._Miracle.GulagSystem;
|
|||||||
|
|
||||||
public sealed partial class GulagSystem : SharedGulagSystem
|
public sealed partial class GulagSystem : SharedGulagSystem
|
||||||
{
|
{
|
||||||
//1 second = 10 points
|
//1 second = 0.01 points
|
||||||
[Dependency] private readonly AdminSystem _adminSystem = default!;
|
[Dependency] private readonly AdminSystem _adminSystem = default!;
|
||||||
[Dependency] private readonly IBanManager _banManager = default!;
|
[Dependency] private readonly IBanManager _banManager = default!;
|
||||||
[Dependency] private readonly BiomeSystem _biome = default!;
|
[Dependency] private readonly BiomeSystem _biome = default!;
|
||||||
@@ -382,8 +382,17 @@ public sealed partial class GulagSystem : SharedGulagSystem
|
|||||||
var newExpirationTime = banDef.ExpirationTime!.Value.DateTime - ConvertPointsToTime(points);
|
var newExpirationTime = banDef.ExpirationTime!.Value.DateTime - ConvertPointsToTime(points);
|
||||||
|
|
||||||
_db.EditServerBan(banDef.Id!.Value, banDef.Reason, banDef.Severity, newExpirationTime, banDef.UserId!.Value, DateTime.Now);
|
_db.EditServerBan(banDef.Id!.Value, banDef.Reason, banDef.Severity, newExpirationTime, banDef.UserId!.Value, DateTime.Now);
|
||||||
|
|
||||||
|
// Update time
|
||||||
|
_banManager.RemoveCachedServerBan(banDef.UserId.Value, banDef.Id.Value);
|
||||||
|
_banManager.AddCachedServerBan(new ServerBanDef(
|
||||||
|
banDef.Id, banDef.UserId, banDef.Address, banDef.HWId, banDef.BanTime, newExpirationTime,
|
||||||
|
banDef.RoundId, banDef.PlaytimeAtNote, banDef.Reason, banDef.Severity, banDef.BanningAdmin,
|
||||||
|
banDef.Unban, banDef.ServerName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_pointsPerPlayer.Clear();
|
||||||
|
|
||||||
_activeMap = null!;
|
_activeMap = null!;
|
||||||
_mapEntity = null!;
|
_mapEntity = null!;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using Content.Server.Database;
|
using Content.Server.Database;
|
||||||
using Content.Server._White.PandaSocket.Interfaces;
|
using Content.Server._White.PandaSocket.Interfaces;
|
||||||
using Content.Server._White.PandaSocket.Main;
|
using Content.Server._White.PandaSocket.Main;
|
||||||
|
using Content.Server.Administration.Managers;
|
||||||
|
|
||||||
namespace Content.Server._White.PandaSocket.Commands;
|
namespace Content.Server._White.PandaSocket.Commands;
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ public sealed class PandaUnbanCommand : IPandaCommand
|
|||||||
|
|
||||||
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
var dbMan = IoCManager.Resolve<IServerDbManager>();
|
||||||
var locator = IoCManager.Resolve<IPlayerLocator>();
|
var locator = IoCManager.Resolve<IPlayerLocator>();
|
||||||
|
var banManager = IoCManager.Resolve<IBanManager>();
|
||||||
IoCManager.InjectDependencies(this);
|
IoCManager.InjectDependencies(this);
|
||||||
|
|
||||||
var located = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
|
var located = await locator.LookupIdByNameOrIdAsync(message.ACkey!);
|
||||||
@@ -41,6 +43,9 @@ public sealed class PandaUnbanCommand : IPandaCommand
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ban.UserId.HasValue)
|
||||||
|
banManager.RemoveCachedServerBan(ban.UserId.Value, banId);
|
||||||
|
|
||||||
await dbMan.AddServerUnbanAsync(new ServerUnbanDef(banId, player, DateTimeOffset.Now));
|
await dbMan.AddServerUnbanAsync(new ServerUnbanDef(banId, player, DateTimeOffset.Now));
|
||||||
|
|
||||||
UtkaSendResponse(true, context);
|
UtkaSendResponse(true, context);
|
||||||
|
|||||||
@@ -8,5 +8,5 @@ public sealed class MiracleCvars
|
|||||||
// <points> / <ratio> = <time_in_seconds>
|
// <points> / <ratio> = <time_in_seconds>
|
||||||
// 100 / 10 = 10
|
// 100 / 10 = 10
|
||||||
public static readonly CVarDef<double> GulagPointsToTimeRatio = CVarDef.Create("miracle.gulag.points_to_time",
|
public static readonly CVarDef<double> GulagPointsToTimeRatio = CVarDef.Create("miracle.gulag.points_to_time",
|
||||||
10.0d, CVar.SERVERONLY, "<points> / <ratio> = <time_in_seconds>");
|
0.01d, CVar.SERVERONLY, "<points> / <ratio> = <time_in_seconds>");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user