87 lines
2.4 KiB
C#
87 lines
2.4 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;
|
|
|
|
namespace ReallifeGamemode.Server.Wanted
|
|
{
|
|
public class WantedEscapeTimer
|
|
{
|
|
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] = 300000;
|
|
}
|
|
|
|
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 erfolgtreich einen Wanted abgetaucht.");
|
|
user.Wanteds -= 1;
|
|
if (user.Wanteds == 0)
|
|
{
|
|
user.SetBlipAndNametagColor();
|
|
dbContext.SaveChanges();
|
|
}
|
|
}
|
|
|
|
if (!isNearCop)
|
|
waTimer[user.Id] -= 2500;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|