no health anti cheat when healing

This commit is contained in:
hydrant
2021-04-11 02:36:44 +02:00
parent 4126e22514
commit 34726abc04
8 changed files with 24 additions and 12 deletions

View File

@@ -47,5 +47,10 @@ namespace ReallifeGamemode.Server.Admin
{ {
lastAntiCheatBroadcastTime[(name, "Flyhack/Teleport")] = DateTime.Now.Subtract(antiCheatMessageCooldown).Add(TimeSpan.FromSeconds(5)); lastAntiCheatBroadcastTime[(name, "Flyhack/Teleport")] = DateTime.Now.Subtract(antiCheatMessageCooldown).Add(TimeSpan.FromSeconds(5));
} }
internal static void NoHealthAntiCheatForPlayer(string name)
{
lastAntiCheatBroadcastTime[(name, "Healkey (unexpected HP added)")] = DateTime.Now.Subtract(antiCheatMessageCooldown).Add(TimeSpan.FromSeconds(5));
}
} }
} }

View File

@@ -1324,7 +1324,7 @@ namespace ReallifeGamemode.Server.Commands
return; return;
} }
target.Health = hp; target.SafeSetHealth(hp);
ChatService.SendMessage(target, "~b~Deine HP wurden von " + player.Name + " auf " + hp + " gesetzt."); ChatService.SendMessage(target, "~b~Deine HP wurden von " + player.Name + " auf " + hp + " gesetzt.");
ChatService.SendMessage(player, "~b~Du hast die HP von " + target.Name + " auf " + hp + " gesetzt."); ChatService.SendMessage(player, "~b~Du hast die HP von " + target.Name + " auf " + hp + " gesetzt.");
} }
@@ -1444,7 +1444,7 @@ namespace ReallifeGamemode.Server.Commands
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
target.SafeTeleport(target.Position, 0, true); target.SafeTeleport(target.Position, 0, true);
target.Health = 100; target.SafeSetHealth(100);
Medic.delReviveTask(target); Medic.delReviveTask(target);
} }
@@ -2010,7 +2010,7 @@ namespace ReallifeGamemode.Server.Commands
foreach (var managedPlayer in peopleInRange) foreach (var managedPlayer in peopleInRange)
{ {
if (!managedPlayer.IsLoggedIn()) return; if (!managedPlayer.IsLoggedIn()) return;
managedPlayer.Health = hp; managedPlayer.SafeSetHealth(hp);
ChatService.SendMessage(managedPlayer, "~b~Admin " + player.Name + " hat im Radius von " + radius + " die HP auf " + hp + " gesetzt."); ChatService.SendMessage(managedPlayer, "~b~Admin " + player.Name + " hat im Radius von " + radius + " die HP auf " + hp + " gesetzt.");
} }
ChatService.SendMessage(player, "~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt."); ChatService.SendMessage(player, "~b~Das Leben von " + peopleInRange.Count + " Spielern wurde auf " + hp + " gesetzt.");
@@ -2415,7 +2415,7 @@ namespace ReallifeGamemode.Server.Commands
ChatService.SendMessage(managedPlayer, toPlayerChat); ChatService.SendMessage(managedPlayer, toPlayerChat);
managedPlayer.SafeTeleport(managedPlayer.Position, 0, true); managedPlayer.SafeTeleport(managedPlayer.Position, 0, true);
managedPlayer.Health = 100; managedPlayer.SafeSetHealth(100);
Medic.delReviveTask(managedPlayer); Medic.delReviveTask(managedPlayer);
} }

View File

@@ -6,6 +6,7 @@ using GTANetworkAPI;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Admin;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Factions.Medic;
using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Managers;
@@ -344,7 +345,7 @@ namespace ReallifeGamemode.Server.Commands
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
deadPlayer.SafeTeleport(deadPlayer.Position, 0, true); deadPlayer.SafeTeleport(deadPlayer.Position, 0, true);
deadPlayer.Health = 50; deadPlayer.SafeSetHealth(50);
MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == deadPlayer.Name); MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == deadPlayer.Name);
Medic.RemoveTaskFromList(task); Medic.RemoveTaskFromList(task);

View File

@@ -144,7 +144,7 @@ namespace ReallifeGamemode.Server.Events
{ {
player.TriggerEvent("startDeathTimer", false); player.TriggerEvent("startDeathTimer", false);
} }
player.Health = 0; player.SafeSetHealth(0);
player.SetData("isDead", true); player.SetData("isDead", true);
} }
else else

View File

@@ -74,6 +74,12 @@ namespace ReallifeGamemode.Server.Extensions
} }
} }
public static void SafeSetHealth(this Player player, int health)
{
AntiCheat.NoHealthAntiCheatForPlayer(player.Name);
player.SafeSetHealth(health);
}
public static void SetJailTime(this User user, bool killed) public static void SetJailTime(this User user, bool killed)
{ {
if (user == null) if (user == null)

View File

@@ -146,7 +146,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
activeDecision.dTarget.Health = 100; activeDecision.dTarget.SafeSetHealth(100);
activeDecision.dTarget.SendNotification($"Du wurdest von ~g~{activeDecision.dMedic.Name} ~s~ für ~g~{activeDecision.dPrice.ToMoneyString()} geheilt", false); activeDecision.dTarget.SendNotification($"Du wurdest von ~g~{activeDecision.dMedic.Name} ~s~ für ~g~{activeDecision.dPrice.ToMoneyString()} geheilt", false);
activeDecision.dMedic.SendNotification($"Du hast ~g~{activeDecision.dTarget.Name} ~s~ für {activeDecision.dPrice.ToMoneyString()} geheilt", false); activeDecision.dMedic.SendNotification($"Du hast ~g~{activeDecision.dTarget.Name} ~s~ für {activeDecision.dPrice.ToMoneyString()} geheilt", false);
delHealTask(activeDecision.dTarget); delHealTask(activeDecision.dTarget);

View File

@@ -27,7 +27,7 @@ namespace ReallifeGamemode.Server.Inventory.Items
amountToAdd = 100 - player.Health; amountToAdd = 100 - player.Health;
} }
player.Health += amountToAdd; player.SafeSetHealth(player.Health + amountToAdd);
player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false);
InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1);
} }

View File

@@ -29,7 +29,7 @@ namespace ReallifeGamemode.Server.Wanted
player.RemoveAllWeapons(); player.RemoveAllWeapons();
player.ClearAttachments(); player.ClearAttachments();
player.ClearAnimation(); player.ClearAnimation();
player.Health = 100; player.SafeSetHealth(100);
player.Armor = 0; player.Armor = 0;
Random rnd = new Random(); Random rnd = new Random();
int rndInt = rnd.Next(1, 3); int rndInt = rnd.Next(1, 3);
@@ -159,7 +159,7 @@ namespace ReallifeGamemode.Server.Wanted
} }
player.TriggerEvent("jailTime", timeMinutes); player.TriggerEvent("jailTime", timeMinutes);
player.Health = 100; player.SafeSetHealth(100);
} }
} }
} }
@@ -182,7 +182,7 @@ namespace ReallifeGamemode.Server.Wanted
player.GetUser(dbContext).JailTime = 0; player.GetUser(dbContext).JailTime = 0;
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
player.Health = 100; player.SafeSetHealth(100);
player.SafeTeleport(new Vector3(427.879, -984.65, 30.71)); player.SafeTeleport(new Vector3(427.879, -984.65, 30.71));
ChatService.HQMessage("Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen."); ChatService.HQMessage("Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen.");
@@ -202,7 +202,7 @@ namespace ReallifeGamemode.Server.Wanted
user.JailTime = 0; user.JailTime = 0;
dbContext.SaveChanges(); dbContext.SaveChanges();
target.Health = 100; target.SafeSetHealth(100);
target.SafeTeleport(new Vector3(427.879, -984.65, 30.71)); target.SafeTeleport(new Vector3(427.879, -984.65, 30.71));
ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen."); ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen.");