mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-10-18 04:47:04 +02:00
CSSPanel Support
This commit is contained in:
parent
d30ac80a36
commit
f01beebea9
21 changed files with 762 additions and 214 deletions
130
CS2-SimpleAdmin/Events_Statistics.cs
Normal file
130
CS2-SimpleAdmin/Events_Statistics.cs
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
using CounterStrikeSharp.API;
|
||||
using CounterStrikeSharp.API.Core;
|
||||
using CounterStrikeSharp.API.Core.Attributes.Registration;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using CS2_SimpleAdmin.Managers;
|
||||
using CS2_SimpleAdmin.Models;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Text;
|
||||
using CounterStrikeSharp.API.Modules.Admin;
|
||||
using Dapper;
|
||||
|
||||
namespace CS2_SimpleAdmin;
|
||||
|
||||
public partial class CS2_SimpleAdmin
|
||||
{
|
||||
[GameEventHandler]
|
||||
public HookResult OnPlayerConnectStatistics(EventPlayerConnectFull @event, GameEventInfo info)
|
||||
{
|
||||
if (!Config.IsCSSPanel) return HookResult.Continue;
|
||||
if (Config.Statistics_Enable == false) return HookResult.Continue;
|
||||
|
||||
CCSPlayerController? player = @event.Userid;
|
||||
|
||||
if (player == null || string.IsNullOrEmpty(player.IpAddress) || player.IpAddress.Contains("127.0.0.1")
|
||||
|| player.IsBot || player.IsHLTV || !player.UserId.HasValue || player.AuthorizedSteamID == null)
|
||||
{
|
||||
|
||||
return HookResult.Continue;
|
||||
}
|
||||
|
||||
|
||||
if (Database == null) return HookResult.Continue;
|
||||
|
||||
SteamID authorizedSteamID = player.AuthorizedSteamID!;
|
||||
string ipAddress = player.IpAddress!.Split(":")[0];
|
||||
string playerId = authorizedSteamID.SteamId64.ToString();
|
||||
string playerName = player.PlayerName;
|
||||
|
||||
// Unix timestamp
|
||||
long Time = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||
|
||||
string Map = Server.MapName;
|
||||
|
||||
if (ServerId == null)
|
||||
return HookResult.Continue;
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var connection = await Database.GetConnectionAsync();
|
||||
|
||||
string sql = "INSERT INTO `sa_statistics` (`serverId`, `playerId`, `playerName`, `playerIP`, `connectTime`, `flags`, `map`) " +
|
||||
"VALUES (@serverId, @playerId, @playerName, @playerIP, @connectTime, @flags, @map)";
|
||||
|
||||
List<string> adminFlags = await PermissionManager.GetAdminFlagsAsString(playerId);
|
||||
|
||||
await connection.ExecuteAsync(sql, new
|
||||
{
|
||||
serverId = ServerId,
|
||||
playerId,
|
||||
playerName,
|
||||
playerIP = ipAddress,
|
||||
connectTime = Time,
|
||||
flags = adminFlags.Count > 0 ? string.Join(",", adminFlags) : null,
|
||||
map = Map
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"An error occurred in OnPlayerConnect: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
return HookResult.Continue;
|
||||
}
|
||||
|
||||
[GameEventHandler]
|
||||
public HookResult OnClientDisconnectStatistics(EventPlayerDisconnect @event, GameEventInfo info)
|
||||
{
|
||||
if (!Config.IsCSSPanel) return HookResult.Continue;
|
||||
if (Config.Statistics_Enable == false) return HookResult.Continue;
|
||||
|
||||
CCSPlayerController? player = @event.Userid;
|
||||
|
||||
if (player == null || string.IsNullOrEmpty(player.IpAddress) || player.IpAddress.Contains("127.0.0.1")
|
||||
|| player.IsBot || player.IsHLTV || !player.UserId.HasValue || player.AuthorizedSteamID == null)
|
||||
return HookResult.Continue;
|
||||
|
||||
if (Database == null) return HookResult.Continue;
|
||||
|
||||
SteamID authorizedSteamID = player.AuthorizedSteamID!;
|
||||
string ipAddress = player.IpAddress!.Split(":")[0];
|
||||
string playerId = authorizedSteamID.SteamId64.ToString();
|
||||
string playerName = player.PlayerName;
|
||||
DateTime now = DateTime.Now;
|
||||
|
||||
// Unix timestamp
|
||||
long Time = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
||||
string kills = player.ActionTrackingServices!.MatchStats.Kills.ToString();
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var connection = await Database.GetConnectionAsync();
|
||||
|
||||
string sql = "UPDATE `sa_statistics` SET `disconnectTime` = @disconnectTime, `disconnectDate` = @disconnectDate, `kills` = @kills, `duration` = @disconnectTime - `connectTime` " +
|
||||
"WHERE `playerId` = @playerId AND `disconnectTime` IS NULL";
|
||||
|
||||
await connection.ExecuteAsync(sql, new
|
||||
{
|
||||
disconnectTime = Time,
|
||||
disconnectDate = now,
|
||||
kills,
|
||||
playerId,
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.LogError($"An error occurred in OnClientDisconnectStatistics: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
return HookResult.Continue;
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue