anti cheat
This commit is contained in:
51
ReallifeGamemode.Server/Admin/AntiCheat.cs
Normal file
51
ReallifeGamemode.Server/Admin/AntiCheat.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Server.Types;
|
||||
|
||||
namespace ReallifeGamemode.Server.Admin
|
||||
{
|
||||
public class AntiCheat : Script
|
||||
{
|
||||
private static TimeSpan antiCheatMessageCooldown = new TimeSpan(0, 0, 30);
|
||||
private static Dictionary<(string, string), DateTime> lastAntiCheatBroadcastTime = new Dictionary<(string, string), DateTime>();
|
||||
|
||||
[ServerEvent(Event.PlayerWeaponSwitch)]
|
||||
public void OnAntiCheatPlayerWeeaponSwitch(Player player, WeaponHash oldWeapon, WeaponHash newWeapon)
|
||||
{
|
||||
player.TriggerEvent("SERVER:AntiCheat:weaponSwap");
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:CheatDetection")]
|
||||
public void OnAntiCheatCheatDetected(Player cheater, string cheat)
|
||||
{
|
||||
if (!cheater.IsLoggedIn())
|
||||
{
|
||||
cheater.Kick();
|
||||
}
|
||||
|
||||
if(cheater.IsAdminDuty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (lastAntiCheatBroadcastTime.Any(a => a.Key.Item1 == cheater.Name && a.Key.Item2 == cheat)
|
||||
&& DateTime.Now - lastAntiCheatBroadcastTime[(cheater.Name, cheat)] < antiCheatMessageCooldown)
|
||||
{
|
||||
return;
|
||||
}
|
||||
lastAntiCheatBroadcastTime[(cheater.Name, cheat)] = DateTime.Now;
|
||||
ChatService.BroadcastAdmin($"~r~[ANTICHEAT]~s~ Verdacht auf ~y~{cheat}~s~ bei ~y~{cheater.Name}~s~ (~y~{cheater.Handle.Value}~s~)", AdminLevel.ADMIN);
|
||||
}
|
||||
|
||||
internal static void NoTpAntiCheatForPlayer(string name)
|
||||
{
|
||||
lastAntiCheatBroadcastTime[(name, "Flyhack/Teleport")] = DateTime.Now.Subtract(antiCheatMessageCooldown).Add(TimeSpan.FromSeconds(5));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user