Files
reallife-gamemode/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs
2021-04-11 14:17:50 +02:00

91 lines
2.6 KiB
C#

/***
@overview Life of German - Wanted (Wanted.cs)
@author kookroach
@copyright (c) 2008 - 2019 Life of German
*/
using System.Collections.Generic;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Wanted
{
public class WantedEscapeTimer
{
private const int WantedEscapeTime = 300000;
public static Dictionary<int, int> waTimer { get; set; } = new Dictionary<int, int>(); //zeit in ms
/*
public static void WantedTimer()
{
//System.Timers.Timer timer = new System.Timers.Timer(2500);
//timer.Start();
//timer.Elapsed += Timer_Elapsed;
}
*/
public static void ResetWantedTimeToElapse(Player client)
{
User user = client.GetUser();
if (user.FactionId == 1 || user.FactionId == 3)
return;
waTimer[user.Id] = WantedEscapeTime;
}
public static void Timer_Elapsed()
{
using var dbContext = new DatabaseContext();
foreach (var player in NAPI.Pools.GetAllPlayers())
{
User user = player.GetUser(dbContext);
if (user != null && user.Wanteds > 0)
{
if (!waTimer.ContainsKey(user.Id))
ResetWantedTimeToElapse(player);
bool isNearCop = false;
foreach (var playerCop in NAPI.Pools.GetAllPlayers())
{
if (!playerCop.IsLoggedIn()) continue;
User cop = playerCop.GetUser();
if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3))
{
if (cop.GetData<bool>("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500)
{
//Schriftzug 'abgetaucht' zerstören :(
isNearCop = true;
break;
}
//Hier abgetaucht schriftzug einfügen :)
}
}
if (!waTimer.ContainsKey(user.Id))
waTimer[user.Id] = 300000;
if (waTimer[user.Id] <= 0)
{
ResetWantedTimeToElapse(player);
player.SendChatMessage("~y~Du hast erfolgreich einen Wanted abgetaucht.");
user.Wanteds -= 1;
if (user.Wanteds == 0)
{
ChatService.HQMessage(player.Name + " konnte solange abtauchen, sodass er nicht mehr gesucht wird.");
user.SetBlipAndNametagColor();
}
dbContext.SaveChanges();
waTimer[user.Id] = WantedEscapeTime;
}
else if (!isNearCop)
waTimer[user.Id] -= 2500;
}
}
}
}
}