port plugin and events
This commit is contained in:
parent
6d39360955
commit
0a1192d5fc
@ -1,57 +1,54 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
using Axwabo.Helpers;
|
using LabApi.Events.Arguments.PlayerEvents;
|
||||||
|
using LabApi.Events.Arguments.ServerEvents;
|
||||||
|
using LabApi.Events.Handlers;
|
||||||
|
using LabApi.Loader.Features.Plugins;
|
||||||
using PlayerRoles;
|
using PlayerRoles;
|
||||||
using PlayerRoles.PlayableScps;
|
|
||||||
using PlayerStatsSystem;
|
using PlayerStatsSystem;
|
||||||
using PluginAPI.Core;
|
|
||||||
using PluginAPI.Core.Attributes;
|
|
||||||
using PluginAPI.Enums;
|
|
||||||
using PluginAPI.Events;
|
|
||||||
using Respawning;
|
|
||||||
using Respawning.Waves;
|
|
||||||
|
|
||||||
namespace DeathLog;
|
namespace DeathLog;
|
||||||
|
|
||||||
public sealed class DeathLogPlugin
|
public sealed class DeathLogPlugin : Plugin<DeathLogConfig>
|
||||||
{
|
{
|
||||||
|
|
||||||
[PluginEntryPoint("DeathLog", "1.1.0", "DeathLog", "Axwabo")]
|
public override string Name => "DeathLog";
|
||||||
public void OnEnabled()
|
public override string Description => "Logs deaths, cuffing and leaving SCPs";
|
||||||
|
public override string Author => "Axwabo";
|
||||||
|
public override Version Version => GetType().Assembly.GetName().Version;
|
||||||
|
public override Version RequiredApiVersion { get; } = new(1, 0, 0);
|
||||||
|
|
||||||
|
public override void Enable()
|
||||||
{
|
{
|
||||||
EventManager.RegisterEvents(this);
|
ServerEvents.WaveRespawned += OnTeamRespawn;
|
||||||
WaveManager.OnWaveSpawned += OnTeamRespawn;
|
ServerEvents.RoundStarted += OnRoundStarted;
|
||||||
Log.Info("DeathLog loaded!");
|
PlayerEvents.Dying += OnPlayerDeath;
|
||||||
|
PlayerEvents.ChangingRole += OnPlayerLeave;
|
||||||
|
PlayerEvents.Cuffed += OnDetaining;
|
||||||
|
PlayerEvents.Uncuffed += OnUnDetaining;
|
||||||
}
|
}
|
||||||
|
|
||||||
[PluginUnload]
|
public override void Disable()
|
||||||
public void OnDisabled()
|
|
||||||
{
|
{
|
||||||
EventManager.UnregisterEvents(this);
|
ServerEvents.WaveRespawned -= OnTeamRespawn;
|
||||||
WaveManager.OnWaveSpawned -= OnTeamRespawn;
|
ServerEvents.RoundStarted -= OnRoundStarted;
|
||||||
Log.Info("DeathLog disabled!");
|
PlayerEvents.Dying -= OnPlayerDeath;
|
||||||
|
PlayerEvents.ChangingRole -= OnPlayerLeave;
|
||||||
|
PlayerEvents.Cuffed -= OnDetaining;
|
||||||
|
PlayerEvents.Uncuffed -= OnUnDetaining;
|
||||||
}
|
}
|
||||||
|
|
||||||
[PluginConfig]
|
|
||||||
public DeathLogConfig Config = new();
|
|
||||||
|
|
||||||
private bool _spawnWaveOccurred;
|
private bool _spawnWaveOccurred;
|
||||||
|
|
||||||
[PluginEvent(ServerEventType.RoundStart)]
|
|
||||||
private void OnRoundStarted()
|
private void OnRoundStarted()
|
||||||
{
|
{
|
||||||
_spawnWaveOccurred = false;
|
_spawnWaveOccurred = false;
|
||||||
_lastId = "";
|
|
||||||
LogHandler.KosIgnoredVictimNetIdList.Clear();
|
LogHandler.KosIgnoredVictimNetIdList.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTeamRespawn(SpawnableWaveBase spawnableWaveBase, List<ReferenceHub> referenceHubs)
|
private void OnTeamRespawn(WaveRespawnedEventArgs ev)
|
||||||
=> _spawnWaveOccurred = Config.IgnoreLeavingAfterSpawnWave;
|
=> _spawnWaveOccurred = Config!.IgnoreLeavingAfterSpawnWave;
|
||||||
|
|
||||||
private static bool IsUnknownCause(DamageHandlerBase handler) =>
|
private void OnPlayerDeath(PlayerDyingEventArgs e)
|
||||||
handler is UniversalDamageHandler udh && (udh.TranslationId == 0 ? string.IsNullOrEmpty(udh._logsText) : udh._logsText == DeathTranslations.Unknown.LogLabel);
|
|
||||||
|
|
||||||
[PluginEvent(ServerEventType.PlayerDying)]
|
|
||||||
private void OnPlayerDeath(PlayerDyingEvent e)
|
|
||||||
{
|
{
|
||||||
var player = e.Player;
|
var player = e.Player;
|
||||||
var attacker = e.Attacker;
|
var attacker = e.Attacker;
|
||||||
@ -59,53 +56,26 @@ public sealed class DeathLogPlugin
|
|||||||
if (player.Role is RoleTypeId.None or RoleTypeId.Scp0492 || string.IsNullOrEmpty(player.ReferenceHub.nicknameSync._myNickSync))
|
if (player.Role is RoleTypeId.None or RoleTypeId.Scp0492 || string.IsNullOrEmpty(player.ReferenceHub.nicknameSync._myNickSync))
|
||||||
return;
|
return;
|
||||||
if (attacker != null && handler is AttackerDamageHandler adh)
|
if (attacker != null && handler is AttackerDamageHandler adh)
|
||||||
LogHandler.LogAttackerDeathMessage(player, attacker, adh, Config.VisibilityRequirement, Config.KillOnSightPermitted, Config.DefaultFontSizeScalar);
|
LogHandler.LogAttackerDeathMessage(player, attacker, adh, Config!.VisibilityRequirement, Config.KillOnSightPermitted, Config.DefaultFontSizeScalar);
|
||||||
else if (Config.LogSimpleDeaths)
|
else if (Config!.LogSimpleDeaths)
|
||||||
LogHandler.LogSimpleDeathMessage(player, handler, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
LogHandler.LogSimpleDeathMessage(player, handler, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||||
if (!IsUnknownCause(handler) || player.ReferenceHub.roleManager.CurrentRole is not FpcStandardScp scp)
|
|
||||||
return;
|
|
||||||
_lastRole = scp.RoleName.Color(scp.RoleColor.ToHex());
|
|
||||||
_lastId = player.UserId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[PluginEvent(ServerEventType.PlayerDamage)]
|
private void OnPlayerLeave(PlayerChangingRoleEventArgs ev)
|
||||||
private void OnDamage(PlayerDamageEvent e)
|
|
||||||
{
|
{
|
||||||
var handler = e.DamageHandler;
|
if (ev.NewRole == RoleTypeId.Destroyed && !_spawnWaveOccurred && Config!.LogLeavingScpPlayers)
|
||||||
var player = e.Player;
|
LogHandler.LogLeavingScp(ev.OldRole.RoleName, ev.Player.Health, ev.Player.HumeShield, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||||
if (player == null
|
|
||||||
|| !player.IsConnected()
|
|
||||||
|| !IsUnknownCause(handler)
|
|
||||||
|| player.ReferenceHub.roleManager.CurrentRole is not FpcStandardScp {RoleTypeId: not RoleTypeId.Scp0492})
|
|
||||||
return;
|
|
||||||
var stats = player.ReferenceHub.playerStats;
|
|
||||||
_lastHealth = stats.GetModule<HealthStat>().CurValue;
|
|
||||||
_lastHumeShield = stats.GetModule<HumeShieldStat>().CurValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private string _lastRole = "";
|
private void OnDetaining(PlayerCuffedEventArgs e)
|
||||||
private float _lastHealth;
|
|
||||||
private float _lastHumeShield;
|
|
||||||
private string _lastId;
|
|
||||||
|
|
||||||
[PluginEvent(ServerEventType.PlayerLeft)]
|
|
||||||
private void OnPlayerLeave(Player player)
|
|
||||||
{
|
{
|
||||||
if (!_spawnWaveOccurred && Config.LogLeavingScpPlayers && player.UserId == _lastId)
|
if (Config!.LogDetainEvents)
|
||||||
LogHandler.LogLeavingScp(_lastRole, _lastHealth, _lastHumeShield, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
|
||||||
}
|
|
||||||
|
|
||||||
[PluginEvent]
|
|
||||||
private void OnDetaining(PlayerHandcuffEvent e)
|
|
||||||
{
|
|
||||||
if (Config.LogDetainEvents)
|
|
||||||
LogHandler.LogDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
LogHandler.LogDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
[PluginEvent]
|
private void OnUnDetaining(PlayerUncuffedEventArgs e)
|
||||||
private void OnDetaining(PlayerRemoveHandcuffsEvent e)
|
|
||||||
{
|
{
|
||||||
if (Config.LogDetainEvents)
|
if (Config!.LogDetainEvents)
|
||||||
LogHandler.LogUnDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
LogHandler.LogUnDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Axwabo.Helpers;
|
using Axwabo.Helpers;
|
||||||
|
using LabApi.Features.Wrappers;
|
||||||
using PlayerRoles;
|
using PlayerRoles;
|
||||||
using PlayerRoles.PlayableScps;
|
using PlayerRoles.PlayableScps;
|
||||||
using PlayerRoles.PlayableScps.Scp3114;
|
using PlayerRoles.PlayableScps.Scp3114;
|
||||||
using PlayerRoles.PlayableScps.Scp939;
|
using PlayerRoles.PlayableScps.Scp939;
|
||||||
using PlayerStatsSystem;
|
using PlayerStatsSystem;
|
||||||
using PluginAPI.Core;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace DeathLog;
|
namespace DeathLog;
|
||||||
@ -20,7 +20,7 @@ public static class LogHandler
|
|||||||
|
|
||||||
private static readonly Color DntColor = new(0.59f, 0.59f, 0.59f);
|
private static readonly Color DntColor = new(0.59f, 0.59f, 0.59f);
|
||||||
|
|
||||||
public static readonly HashSet<uint> KosIgnoredVictimNetIdList = new();
|
public static readonly HashSet<uint> KosIgnoredVictimNetIdList = [];
|
||||||
|
|
||||||
private static bool IsWeapon(ItemType type) => type is ItemType.GunCOM15
|
private static bool IsWeapon(ItemType type) => type is ItemType.GunCOM15
|
||||||
or ItemType.GunCOM18
|
or ItemType.GunCOM18
|
||||||
@ -76,7 +76,7 @@ public static class LogHandler
|
|||||||
|
|
||||||
private static void Log(Func<float, string> msg, bool success, PlayerPermissions playerPermissions, float defaultScalar)
|
private static void Log(Func<float, string> msg, bool success, PlayerPermissions playerPermissions, float defaultScalar)
|
||||||
{
|
{
|
||||||
foreach (var p in Player.GetPlayers())
|
foreach (var p in Player.ReadyList)
|
||||||
{
|
{
|
||||||
var sender = p.ReferenceHub.queryProcessor._sender;
|
var sender = p.ReferenceHub.queryProcessor._sender;
|
||||||
if (!p.RemoteAdminAccess || !PermissionsHandler.IsPermitted(sender.Permissions, playerPermissions) || ToggleLogsCommand.HiddenIdList.Contains(p.UserId))
|
if (!p.RemoteAdminAccess || !PermissionsHandler.IsPermitted(sender.Permissions, playerPermissions) || ToggleLogsCommand.HiddenIdList.Contains(p.UserId))
|
||||||
@ -159,7 +159,7 @@ public static class LogHandler
|
|||||||
_ => "[an unknown attack type]"
|
_ => "[an unknown attack type]"
|
||||||
};
|
};
|
||||||
|
|
||||||
private static string GetScp939AttackType(Scp939DamageHandler scp939) => scp939._damageType switch
|
private static string GetScp939AttackType(Scp939DamageHandler scp939) => scp939.Scp939DamageType switch
|
||||||
{
|
{
|
||||||
Scp939DamageType.Claw => nameof(Scp939DamageType.Claw),
|
Scp939DamageType.Claw => nameof(Scp939DamageType.Claw),
|
||||||
Scp939DamageType.LungeSecondary => "Lunge Secondary",
|
Scp939DamageType.LungeSecondary => "Lunge Secondary",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user