port plugin and events
This commit is contained in:
parent
6d39360955
commit
0a1192d5fc
@ -1,57 +1,54 @@
|
||||
using System.Collections.Generic;
|
||||
using Axwabo.Helpers;
|
||||
using System;
|
||||
using LabApi.Events.Arguments.PlayerEvents;
|
||||
using LabApi.Events.Arguments.ServerEvents;
|
||||
using LabApi.Events.Handlers;
|
||||
using LabApi.Loader.Features.Plugins;
|
||||
using PlayerRoles;
|
||||
using PlayerRoles.PlayableScps;
|
||||
using PlayerStatsSystem;
|
||||
using PluginAPI.Core;
|
||||
using PluginAPI.Core.Attributes;
|
||||
using PluginAPI.Enums;
|
||||
using PluginAPI.Events;
|
||||
using Respawning;
|
||||
using Respawning.Waves;
|
||||
|
||||
namespace DeathLog;
|
||||
|
||||
public sealed class DeathLogPlugin
|
||||
public sealed class DeathLogPlugin : Plugin<DeathLogConfig>
|
||||
{
|
||||
|
||||
[PluginEntryPoint("DeathLog", "1.1.0", "DeathLog", "Axwabo")]
|
||||
public void OnEnabled()
|
||||
public override string Name => "DeathLog";
|
||||
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);
|
||||
WaveManager.OnWaveSpawned += OnTeamRespawn;
|
||||
Log.Info("DeathLog loaded!");
|
||||
ServerEvents.WaveRespawned += OnTeamRespawn;
|
||||
ServerEvents.RoundStarted += OnRoundStarted;
|
||||
PlayerEvents.Dying += OnPlayerDeath;
|
||||
PlayerEvents.ChangingRole += OnPlayerLeave;
|
||||
PlayerEvents.Cuffed += OnDetaining;
|
||||
PlayerEvents.Uncuffed += OnUnDetaining;
|
||||
}
|
||||
|
||||
[PluginUnload]
|
||||
public void OnDisabled()
|
||||
public override void Disable()
|
||||
{
|
||||
EventManager.UnregisterEvents(this);
|
||||
WaveManager.OnWaveSpawned -= OnTeamRespawn;
|
||||
Log.Info("DeathLog disabled!");
|
||||
ServerEvents.WaveRespawned -= OnTeamRespawn;
|
||||
ServerEvents.RoundStarted -= OnRoundStarted;
|
||||
PlayerEvents.Dying -= OnPlayerDeath;
|
||||
PlayerEvents.ChangingRole -= OnPlayerLeave;
|
||||
PlayerEvents.Cuffed -= OnDetaining;
|
||||
PlayerEvents.Uncuffed -= OnUnDetaining;
|
||||
}
|
||||
|
||||
[PluginConfig]
|
||||
public DeathLogConfig Config = new();
|
||||
|
||||
private bool _spawnWaveOccurred;
|
||||
|
||||
[PluginEvent(ServerEventType.RoundStart)]
|
||||
private void OnRoundStarted()
|
||||
{
|
||||
_spawnWaveOccurred = false;
|
||||
_lastId = "";
|
||||
LogHandler.KosIgnoredVictimNetIdList.Clear();
|
||||
}
|
||||
|
||||
private void OnTeamRespawn(SpawnableWaveBase spawnableWaveBase, List<ReferenceHub> referenceHubs)
|
||||
=> _spawnWaveOccurred = Config.IgnoreLeavingAfterSpawnWave;
|
||||
private void OnTeamRespawn(WaveRespawnedEventArgs ev)
|
||||
=> _spawnWaveOccurred = Config!.IgnoreLeavingAfterSpawnWave;
|
||||
|
||||
private static bool IsUnknownCause(DamageHandlerBase handler) =>
|
||||
handler is UniversalDamageHandler udh && (udh.TranslationId == 0 ? string.IsNullOrEmpty(udh._logsText) : udh._logsText == DeathTranslations.Unknown.LogLabel);
|
||||
|
||||
[PluginEvent(ServerEventType.PlayerDying)]
|
||||
private void OnPlayerDeath(PlayerDyingEvent e)
|
||||
private void OnPlayerDeath(PlayerDyingEventArgs e)
|
||||
{
|
||||
var player = e.Player;
|
||||
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))
|
||||
return;
|
||||
if (attacker != null && handler is AttackerDamageHandler adh)
|
||||
LogHandler.LogAttackerDeathMessage(player, attacker, adh, Config.VisibilityRequirement, Config.KillOnSightPermitted, Config.DefaultFontSizeScalar);
|
||||
else if (Config.LogSimpleDeaths)
|
||||
LogHandler.LogAttackerDeathMessage(player, attacker, adh, Config!.VisibilityRequirement, Config.KillOnSightPermitted, Config.DefaultFontSizeScalar);
|
||||
else if (Config!.LogSimpleDeaths)
|
||||
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 OnDamage(PlayerDamageEvent e)
|
||||
private void OnPlayerLeave(PlayerChangingRoleEventArgs ev)
|
||||
{
|
||||
var handler = e.DamageHandler;
|
||||
var player = e.Player;
|
||||
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;
|
||||
if (ev.NewRole == RoleTypeId.Destroyed && !_spawnWaveOccurred && Config!.LogLeavingScpPlayers)
|
||||
LogHandler.LogLeavingScp(ev.OldRole.RoleName, ev.Player.Health, ev.Player.HumeShield, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||
}
|
||||
|
||||
private string _lastRole = "";
|
||||
private float _lastHealth;
|
||||
private float _lastHumeShield;
|
||||
private string _lastId;
|
||||
|
||||
[PluginEvent(ServerEventType.PlayerLeft)]
|
||||
private void OnPlayerLeave(Player player)
|
||||
private void OnDetaining(PlayerCuffedEventArgs e)
|
||||
{
|
||||
if (!_spawnWaveOccurred && Config.LogLeavingScpPlayers && player.UserId == _lastId)
|
||||
LogHandler.LogLeavingScp(_lastRole, _lastHealth, _lastHumeShield, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||
}
|
||||
|
||||
[PluginEvent]
|
||||
private void OnDetaining(PlayerHandcuffEvent e)
|
||||
{
|
||||
if (Config.LogDetainEvents)
|
||||
if (Config!.LogDetainEvents)
|
||||
LogHandler.LogDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||
}
|
||||
|
||||
[PluginEvent]
|
||||
private void OnDetaining(PlayerRemoveHandcuffsEvent e)
|
||||
private void OnUnDetaining(PlayerUncuffedEventArgs e)
|
||||
{
|
||||
if (Config.LogDetainEvents)
|
||||
if (Config!.LogDetainEvents)
|
||||
LogHandler.LogUnDetain(e.Target, e.Player, Config.VisibilityRequirement, Config.DefaultFontSizeScalar);
|
||||
}
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Axwabo.Helpers;
|
||||
using LabApi.Features.Wrappers;
|
||||
using PlayerRoles;
|
||||
using PlayerRoles.PlayableScps;
|
||||
using PlayerRoles.PlayableScps.Scp3114;
|
||||
using PlayerRoles.PlayableScps.Scp939;
|
||||
using PlayerStatsSystem;
|
||||
using PluginAPI.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DeathLog;
|
||||
@ -20,7 +20,7 @@ public static class LogHandler
|
||||
|
||||
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
|
||||
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)
|
||||
{
|
||||
foreach (var p in Player.GetPlayers())
|
||||
foreach (var p in Player.ReadyList)
|
||||
{
|
||||
var sender = p.ReferenceHub.queryProcessor._sender;
|
||||
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]"
|
||||
};
|
||||
|
||||
private static string GetScp939AttackType(Scp939DamageHandler scp939) => scp939._damageType switch
|
||||
private static string GetScp939AttackType(Scp939DamageHandler scp939) => scp939.Scp939DamageType switch
|
||||
{
|
||||
Scp939DamageType.Claw => nameof(Scp939DamageType.Claw),
|
||||
Scp939DamageType.LungeSecondary => "Lunge Secondary",
|
||||
|
Loading…
x
Reference in New Issue
Block a user