afk system

This commit is contained in:
hydrant
2021-04-13 20:32:20 +02:00
parent b981819b52
commit 62ac08e98d
7 changed files with 76 additions and 2 deletions

View File

@@ -0,0 +1,45 @@
export default function antiAfk(globalData: IGlobalData) {
let lastPosition: Vector3Mp = mp.players.local.position;
let afkCounter: number = 0;
let afkStatus: boolean = false;
setInterval(checkAfkPosition, 1000 * 10);
function checkAfkPosition() {
if (!globalData.LoggedIn) {
return;
}
let lp = lastPosition;
let np = mp.players.local.position;
let distance = mp.game.gameplay.getDistanceBetweenCoords(lp.x, lp.y, lp.z, np.x, np.y, np.z, false);
if (distance <= 5) {
if (!afkStatus) {
afkCounter++;
}
} else {
afkCounter = 0;
if (afkStatus) {
afkStatus = false;
globalData.IsAfk = afkStatus;
setServerAfkStatus(afkStatus);
}
}
if (afkCounter >= 12) {
afkStatus = true;
globalData.IsAfk = afkStatus;
setServerAfkStatus(afkStatus);
}
lastPosition = np;
}
function setServerAfkStatus(status: boolean) {
mp.events.callRemote("CLIENT:SetAfkStatus", status);
}
}

View File

@@ -4,6 +4,7 @@
InMenu: boolean, InMenu: boolean,
InChat: boolean, InChat: boolean,
LoggedIn: boolean, LoggedIn: boolean,
IsAfk: boolean,
} }
declare type AccountData = { declare type AccountData = {

View File

@@ -14,6 +14,7 @@ let globalData: IGlobalData = {
HideGui: false, HideGui: false,
InChat: false, InChat: false,
LoggedIn: false, LoggedIn: false,
IsAfk: false,
get InMenu(): boolean { get InMenu(): boolean {
return inMenu; return inMenu;
@@ -258,6 +259,9 @@ animationSync();
import antiCheat from './admin/anticheat'; import antiCheat from './admin/anticheat';
antiCheat(globalData); antiCheat(globalData);
import antiAfk from './Player/antiafk';
antiAfk(globalData);
require('./Gui/policedepartment'); require('./Gui/policedepartment');
require('./Gui/helptext'); require('./Gui/helptext');

View File

@@ -13,5 +13,15 @@ namespace ReallifeGamemode.Server.Events
{ {
player.SafeTeleport(pos); player.SafeTeleport(pos);
} }
[RemoteEvent("CLIENT:SetAfkStatus")]
public void SetPlayerAfkStatus(Player player, bool status)
{
player.SetServerData("isAfk", status);
if(status)
{
player.SendNotification("Du wurdest ~b~AFK~s~ gesetzt", true);
}
}
} }
} }

View File

@@ -136,6 +136,11 @@ namespace ReallifeGamemode.Server.Extensions
return player.GetServerData("duty", false); return player.GetServerData("duty", false);
} }
public static bool IsAfk(this Player player)
{
return player.GetServerData("isAfk", false);
}
public static bool IsAlive(this Player player) public static bool IsAlive(this Player player)
{ {
return !player.HasData("isDead") || player.GetData<bool>("isDead") == false; return !player.HasData("isDead") || player.GetData<bool>("isDead") == false;

View File

@@ -189,6 +189,11 @@ namespace ReallifeGamemode.Server.Finance
using var dbContext = new DatabaseContext(); using var dbContext = new DatabaseContext();
foreach (var player in NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn())) foreach (var player in NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn()))
{ {
if(player.IsAfk())
{
continue;
}
User user = player.GetUser(dbContext); User user = player.GetUser(dbContext);
if(user == null) if(user == null)
{ {

View File

@@ -30,6 +30,11 @@ namespace ReallifeGamemode.Server.WeaponDeal
public void SrvEVENT_startWeaponDeal(Player client) public void SrvEVENT_startWeaponDeal(Player client)
{ {
var user = client.GetUser(); var user = client.GetUser();
if(user == null || user.FactionId == null)
{
return;
}
using (var context = new DatabaseContext(true)) using (var context = new DatabaseContext(true))
{ {
FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.Model == VehicleHash.Burrito3 || f.Model == VehicleHash.Policet).ToList().Where(f => f.GetOwners().Contains(user.FactionId ?? 0)).FirstOrDefault(); FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.Model == VehicleHash.Burrito3 || f.Model == VehicleHash.Policet).ToList().Where(f => f.GetOwners().Contains(user.FactionId ?? 0)).FirstOrDefault();
@@ -40,7 +45,6 @@ namespace ReallifeGamemode.Server.WeaponDeal
return; return;
} }
Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
if (checkWeaponDbyVehicle(fVeh)) if (checkWeaponDbyVehicle(fVeh))
@@ -58,7 +62,7 @@ namespace ReallifeGamemode.Server.WeaponDeal
WeaponDealPoints.factionWeaponDeal[user.FactionId.Value] = -1; WeaponDealPoints.factionWeaponDeal[user.FactionId.Value] = -1;
Vector3 vector; Vector3 vector;
vector = WeaponDealPoints.getRndWD_Route(client.GetUser().FactionId.Value); vector = WeaponDealPoints.getRndWD_Route(user.FactionId.Value);
if (vector == new Vector3()) if (vector == new Vector3())
return; return;
fVeh.SetData<Vector3>("weaponDealPoint", vector); fVeh.SetData<Vector3>("weaponDealPoint", vector);