Files
reallife-gamemode/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs

170 lines
6.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.WeaponDeal
{
public class WeaponDealManager : Script
{
public static bool checkWeaponDbyVehicle(Vehicle vehicle)
{
if (!vehicle.HasData("WeaponDealLoad") || vehicle.GetData<bool>("WeaponDealLoad") == false)
return false;
return true;
}
[RemoteEvent("startWeaponDeal")]
public void SrvEVENT_startWeaponDeal(Player client)
{
var user = client.GetUser();
using (var context = new DatabaseContext())
{
FactionVehicle factionVehicle = context.FactionVehicles.ToList().Where(f => f.GetOwners().Contains(user.FactionId ?? 0) && f.Model == VehicleHash.Burrito3).FirstOrDefault();
if (factionVehicle == null)
{
ChatService.ErrorMessage(client, "Deine Fraktion hat kein geeignetes Fahrzeug für einen Waffentransport");
return;
}
Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
if (fVeh.Position.DistanceTo(client.Position) > 80)
{
ChatService.ErrorMessage(client, "Der Transporter ist zu weit entfernt");
return;
}
WeaponDealPoints.factionWeaponDeal[user.FactionId.Value] = -1;
Vector3 vector;
vector = WeaponDealPoints.getRndWD_Route(client.GetUser().FactionId.Value);
if (vector == new Vector3())
return;
fVeh.SetData<Vector3>("weaponDealPoint", vector);
if (user.Faction.WeaponDealTime <= 0)
{
int i = 0;
string msg = "";
foreach (var point in WeaponDealPoints.WT_Route)
{
i++;
if (point != vector)
continue;
switch (i)
{
case 1:
msg = "Die albanische Mafia hat einen Waffendeal mit uns abgemacht.";
break;
case 2:
msg = "Die Lost MC scheint wieder im Waffen-Business aktiv zu sein.";
break;
case 3:
msg = "Ein paar hochrangige Militärs der U.S. Armee versuchen alte sowjetische Waffen los zu werden.";
break;
case 4:
msg = "Die russische Mafia kann uns mit östliche Importe beliefern.";
break;
case 5:
msg = "Die albanische Mafia will wohl wieder Geschäfte mit uns machen.";
break;
case 6:
msg = "Die Waffen von den Russen waren schon immer zuverlässig...";
break;
}
}
ChatService.BroadcastFaction($"~y~[WAFFENDEAL]~s~ {msg}", user.Faction);
ChatService.SendMessage(client, "~y~[WAFFENDEAL]~s~ Steige in den Burrito ein und fahre zum Waffendeal.");
fVeh.SetData("weaponDeal", true);
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
Faction fac = context.Factions.Where(f => f.Id == user.FactionId).FirstOrDefault();
fac.WeaponDealTime = 60;
context.SaveChanges();
}
else
{
ChatService.ErrorMessage(client, "Du kannst noch kein Waffendeal starten");
}
}
}
/*
public static void WeaponDealTimer()
{
System.Timers.Timer timer = new System.Timers.Timer(60000);
timer.Start();
timer.Elapsed += Timer_Elapsed;
}
*/
public static void Timer_Elapsed()
{
using (var context = new DatabaseContext())
{
List<Faction> fac = context.Factions.ToList<Faction>();
foreach (var faction in fac)
{
if (faction.WeaponDealTime > 0)
faction.WeaponDealTime -= 1;
}
context.SaveChanges();
}
}
[ServerEvent(Event.PlayerWeaponSwitch)]
public void OnPlayerWeaponSwitch(Player player, WeaponHash oldWeapon, WeaponHash newWeapon)
{
if (!player.HasAttachment("ammobox")) return;
NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed);
}
[RemoteEvent("loadWeaponTransport")]
public void SrvEVENT_loadWeaponTransport(Player client)
{
if ((VehicleHash)client.Vehicle.Model != VehicleHash.Burrito3)
return;
User user = client.GetUser();
using (var context = new DatabaseContext())
{
FactionVehicle factionVehicle = context.FactionVehicles
.Where(f => f.Model == VehicleHash.Burrito3 || f.Model == VehicleHash.Policet)
.ToList()
.Where(f => f.GetOwners().Contains(user.FactionId ?? 0))
.FirstOrDefault();
Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
fVeh.SetData("weaponDeal", false);
fVeh.SetData("WeaponDealLoad", true);
InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh);
Random rnd = new Random();
int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count();
if (factionVehicle.GetOwners().Contains(8) || factionVehicle.GetOwners().Contains(7))
{
VehicleItem item = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = rnd.Next(3, 5) * oMembers }; //pistole
InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount);
VehicleItem item3 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = rnd.Next(1, 4) * oMembers }; //Pumpe
InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount);
VehicleItem item2 = new VehicleItem() { ItemId = 16, VehicleId = factionVehicle.Id, Amount = 1 * oMembers }; //Schutzweste
InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount);
}
}
}
}
}