[+] Start WeaponDeal-System
This commit is contained in:
35
ReallifeGamemode.Server/Events/EnterVehicle.cs
Normal file
35
ReallifeGamemode.Server/Events/EnterVehicle.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Server.WeaponDeal;
|
||||
|
||||
namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
public class EnterVehicle : Script
|
||||
{
|
||||
[ServerEvent(Event.PlayerEnterVehicle)]
|
||||
public void OnPlayerEnterVehicle(Client client, Vehicle vehicle, sbyte seat)
|
||||
{
|
||||
if (seat != -1)
|
||||
return;
|
||||
|
||||
Console.WriteLine("inVEhicle");
|
||||
if (vehicle.GetServerVehicle() is FactionVehicle veh)
|
||||
{
|
||||
if (client.GetUser().FactionId != null && (veh.FactionId == client.GetUser().FactionId) && (veh.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true)
|
||||
{
|
||||
Vector3 vector = WeaponDealPoints.getRndWD_Route(client.GetUser().FactionId.Value);
|
||||
if (vector == null)
|
||||
return;
|
||||
List<Vector3> dealPoint = new List<Vector3>();
|
||||
dealPoint.Add(vector);
|
||||
CheckPointHandle.StartCheckPointRoute(client, dealPoint, 5000, 1, "loadWeaponTransport");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.WeaponDeal;
|
||||
|
||||
namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
@@ -25,6 +26,11 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
if (veh.FactionId != player.GetUser().FactionId)
|
||||
{
|
||||
if ((VehicleHash)vehicle.Model == VehicleHash.Burrito3)
|
||||
{
|
||||
if (WeaponDealManager.checkWeaponDbyVehicle(vehicle))
|
||||
return;
|
||||
}
|
||||
player.StopAnimation();
|
||||
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||
return;
|
||||
|
||||
30
ReallifeGamemode.Server/Events/ExitVehicle.cs
Normal file
30
ReallifeGamemode.Server/Events/ExitVehicle.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Server.WeaponDeal;
|
||||
|
||||
namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
public class ExitVehicle:Script
|
||||
{
|
||||
[ServerEvent(Event.PlayerExitVehicleAttempt)]
|
||||
public void OnPlayerExitVehicle(Client client, Vehicle vehicle)
|
||||
{
|
||||
if (client.VehicleSeat != -1)
|
||||
return;
|
||||
if (vehicle.GetServerVehicle() is FactionVehicle veh)
|
||||
{
|
||||
if ((client.GetUser().FactionId != null) && (veh.FactionId == client.GetUser().FactionId) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true)
|
||||
{
|
||||
CheckPointHandle.RemovePlayerHandlerFromList(client);
|
||||
client.TriggerEvent("destroyCP");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Inventory.Interfaces;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
@@ -18,53 +19,62 @@ namespace ReallifeGamemode.Server.Events
|
||||
public void SrvEvent_GetNearVehicles(Client client)
|
||||
{
|
||||
var user = client.GetUser();
|
||||
var inventoryWeight = 0;
|
||||
List<VehicleInventory> vehicleInventory = new List<VehicleInventory>();
|
||||
if (!client.IsInVehicle)
|
||||
{
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
foreach (GTANetworkAPI.Vehicle veh in NAPI.Pools.GetAllVehicles())
|
||||
{
|
||||
List<string> iName = new List<string>();
|
||||
List<int> iAmount = new List<int>();
|
||||
List<int> iId = new List<int>();
|
||||
inventoryWeight = 0;
|
||||
|
||||
if (veh.Position.DistanceTo(client.Position) < 2.5f)
|
||||
List<VehicleInventory> vehicleInventory = new List<VehicleInventory>();
|
||||
if (veh.Position.DistanceTo(client.Position) < 5f)
|
||||
{
|
||||
if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen)
|
||||
if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen)
|
||||
{
|
||||
ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context);
|
||||
List<VehicleItem> vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id);
|
||||
foreach (var vehItem in vehicleItems)
|
||||
{
|
||||
IItem iItem = InventoryManager.GetItemById(vehItem.ItemId);
|
||||
var currentItemWeight = iItem.Gewicht * vehItem.Amount;
|
||||
inventoryWeight += currentItemWeight;
|
||||
|
||||
iName.Add(iItem.Name);
|
||||
iAmount.Add(vehItem.Amount);
|
||||
iId.Add(iItem.Id);
|
||||
|
||||
}
|
||||
var vehInv = new VehicleInventory
|
||||
{
|
||||
ID = serverVehicle.Id,
|
||||
currentWeight = inventoryWeight,
|
||||
totalWeight = 250,
|
||||
ivehName = iName.ToArray(),
|
||||
ivehAmount = iAmount.ToArray(),
|
||||
ivehId = iId.ToArray()
|
||||
};
|
||||
vehicleInventory.Add(vehInv);
|
||||
vehicleInventory = getVehItem(veh);
|
||||
}
|
||||
client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray());
|
||||
client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray());
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<VehicleInventory> getVehItem(Vehicle veh)
|
||||
{
|
||||
List<string> iName = new List<string>();
|
||||
List<int> iAmount = new List<int>();
|
||||
List<int> iId = new List<int>();
|
||||
List<VehicleInventory> vehicleInventory = new List<VehicleInventory>();
|
||||
var inventoryWeight = 0;
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context);
|
||||
List<VehicleItem> vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id);
|
||||
foreach (var vehItem in vehicleItems)
|
||||
{
|
||||
IItem iItem = InventoryManager.GetItemById(vehItem.ItemId);
|
||||
var currentItemWeight = iItem.Gewicht * vehItem.Amount;
|
||||
inventoryWeight += currentItemWeight;
|
||||
|
||||
iName.Add(iItem.Name);
|
||||
iAmount.Add(vehItem.Amount);
|
||||
iId.Add(iItem.Id);
|
||||
|
||||
}
|
||||
var vehInv = new VehicleInventory
|
||||
{
|
||||
ID = serverVehicle.Id,
|
||||
currentWeight = inventoryWeight,
|
||||
totalWeight = 250,
|
||||
ivehName = iName.ToArray(),
|
||||
ivehAmount = iAmount.ToArray(),
|
||||
ivehId = iId.ToArray()
|
||||
};
|
||||
vehicleInventory.Add(vehInv);
|
||||
}
|
||||
return vehicleInventory;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,6 +229,8 @@ namespace ReallifeGamemode.Server.Events
|
||||
List<string> secondarys = new List<string>();
|
||||
List<string> melees = new List<string>();
|
||||
List<string> specials = new List<string>();
|
||||
List<string> timer = new List<string>();
|
||||
string dealTime = "Starten";
|
||||
primarys.Add("Keine");
|
||||
secondarys.Add("Keine");
|
||||
melees.Add("Keine");
|
||||
@@ -236,10 +238,16 @@ namespace ReallifeGamemode.Server.Events
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
List<FactionWeapon> weapons = context.FactionWeapons.Where(w => w.FactionId == user.FactionId).ToList();
|
||||
Database.Entities.Faction faction = context.Factions.Where(fac => fac.Id == user.FactionId).FirstOrDefault();
|
||||
|
||||
|
||||
if (faction.WeaponDealTime > 0)
|
||||
dealTime = "noch " + faction.WeaponDealTime.ToString()+" min. übrig";
|
||||
|
||||
timer.Add(dealTime);
|
||||
|
||||
foreach (var weapon in weapons)
|
||||
{
|
||||
|
||||
|
||||
switch (weapon.SlotID)
|
||||
{
|
||||
case 1:
|
||||
@@ -262,7 +270,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
}
|
||||
}
|
||||
|
||||
player.TriggerEvent("showWeaponMenu", primarys.ToArray(), secondarys.ToArray(), melees.ToArray(), specials.ToArray());
|
||||
player.TriggerEvent("showWeaponMenu", primarys.ToArray(), secondarys.ToArray(), melees.ToArray(), specials.ToArray(), JsonConvert.SerializeObject(timer.ToArray()));
|
||||
}
|
||||
if (nearestJailReleasePoint != null)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user