[BUG-93][BUG-49] Tuning Preise angepasst und Fehler behoben

This commit is contained in:
hydrant
2021-04-29 15:10:06 +02:00
parent 5387465945
commit 07c6da7031
2 changed files with 88 additions and 18 deletions

View File

@@ -1,4 +1,5 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
@@ -35,7 +36,7 @@ namespace ReallifeGamemode.Server.Managers
colShape.OnEntityEnterColShape += (cs, c) =>
{
using var dbContext = new DatabaseContext();
if (c.IsInVehicle && c.VehicleSeat == 0)
if (c.IsInVehicle && c.VehicleSeat == 0 && IsPlayerAllowedToTuneVehicle(c, c.Vehicle, dbContext))
{
c.TriggerEvent("showTuningInfo");
}
@@ -43,12 +44,42 @@ namespace ReallifeGamemode.Server.Managers
colShape.OnEntityExitColShape += (cs, c) =>
{
c.TriggerEvent("hideTuningInfo", true);
if(c.IsInVehicle)
{
c.TriggerEvent("hideTuningInfo", true);
}
};
tuningGarages.Add(colShape);
}
private static bool IsPlayerAllowedToTuneVehicle(Player c, Vehicle vehicle, DatabaseContext dbContext)
{
User user = c.GetUser();
if(user == null)
{
return false;
}
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
if(serverVehicle == null)
{
return false;
}
if(serverVehicle is UserVehicle userVehicle && userVehicle.UserId == user.Id)
{
return true;
}
if(serverVehicle is FactionVehicle factionVehicle && factionVehicle.GetOwners().Contains(user.FactionId ?? 0))
{
return true;
}
return false;
}
public static void ApplyTuningToServerVehicle(ServerVehicle sVeh)
{
Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh);
@@ -81,7 +112,33 @@ namespace ReallifeGamemode.Server.Managers
{
if (!player.IsInVehicle) return;
player.TriggerEvent("showTuningMenu");
player.TriggerEvent("showTuningMenu", false, GetVehicleBasePrice(player.Vehicle));
}
private int GetVehicleBasePrice(Vehicle vehicle)
{
if(vehicle == null)
{
return 0;
}
ServerVehicle serverVehicle = vehicle.GetServerVehicle();
if(serverVehicle == null)
{
return 0;
}
if(serverVehicle is UserVehicle userVehicle)
{
return userVehicle.Price ?? 0;
}
if(serverVehicle is FactionVehicle factionVehicle)
{
return factionVehicle.BuyPrice;
}
return 0;
}
[RemoteEvent("repairVehicle")]