vlt fix kfz id bug??
This commit is contained in:
@@ -1300,13 +1300,11 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
if (serverVehicle == null)
|
if (serverVehicle == null)
|
||||||
{
|
{
|
||||||
VehicleManager.DeleteVehicle(v);
|
VehicleManager.DeleteVehicle(v);
|
||||||
v.Trailer?.Delete();
|
VehicleManager.DeleteVehicle(v.Trailer);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vehicle newVeh = serverVehicle.Spawn(v);
|
Vehicle newVeh = serverVehicle.Spawn(v);
|
||||||
newVeh.Repair();
|
|
||||||
newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading);
|
|
||||||
|
|
||||||
respawnedVehicleCount++;
|
respawnedVehicleCount++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,19 +15,32 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
|
|
||||||
public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh);
|
public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh);
|
||||||
|
|
||||||
public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null)
|
public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh)
|
||||||
{
|
{
|
||||||
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh);
|
if (currentVeh == null)
|
||||||
|
{
|
||||||
|
currentVeh = VehicleManager.GetVehicleFromServerVehicle(veh);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(currentVeh != null)
|
||||||
|
{
|
||||||
|
VehicleManager.DeleteVehicle(currentVeh);
|
||||||
|
}
|
||||||
|
|
||||||
Vector3 position = veh.Position;
|
Vector3 position = veh.Position;
|
||||||
uint model = (uint)veh.Model;
|
uint model = (uint)veh.Model;
|
||||||
float heading = veh.Heading;
|
float heading = veh.Heading;
|
||||||
int c1 = veh.PrimaryColor;
|
int c1 = veh.PrimaryColor;
|
||||||
int c2 = veh.SecondaryColor;
|
int c2 = veh.SecondaryColor;
|
||||||
|
|
||||||
Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false);
|
Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false);
|
||||||
|
|
||||||
veh.Livery = veh.Livery;
|
veh.Livery = veh.Livery;
|
||||||
VehicleStreaming.SetEngineState(newVeh, false);
|
VehicleStreaming.SetEngineState(newVeh, false);
|
||||||
VehicleStreaming.SetLockStatus(newVeh, veh.Locked);
|
VehicleStreaming.SetLockStatus(newVeh, veh.Locked);
|
||||||
|
|
||||||
VehicleManager.AddVehicle(veh, newVeh);
|
VehicleManager.AddVehicle(veh, newVeh);
|
||||||
|
|
||||||
newVeh.Rotation = new Vector3(0, 0, heading);
|
newVeh.Rotation = new Vector3(0, 0, heading);
|
||||||
|
|
||||||
newVeh.SetSharedData("drivenDistance", veh.DistanceDriven);
|
newVeh.SetSharedData("drivenDistance", veh.DistanceDriven);
|
||||||
@@ -71,6 +84,7 @@ namespace ReallifeGamemode.Server.Extensions
|
|||||||
{
|
{
|
||||||
numberplate = "NV" + numberplate;
|
numberplate = "NV" + numberplate;
|
||||||
}
|
}
|
||||||
|
|
||||||
NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate);
|
NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate);
|
||||||
veh.NumberPlate = numberplate;
|
veh.NumberPlate = numberplate;
|
||||||
|
|
||||||
|
|||||||
@@ -168,13 +168,13 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
player.TriggerEvent("SERVER:Util_setWaypoint", spawnPos.X, spawnPos.Y);
|
player.TriggerEvent("SERVER:Util_setWaypoint", spawnPos.X, spawnPos.Y);
|
||||||
|
|
||||||
User u = player.GetUser(dbContext);
|
User user = player.GetUser(dbContext);
|
||||||
|
|
||||||
ServerVehicle newVeh = null;
|
ServerVehicle newVeh = null;
|
||||||
|
|
||||||
if (target == "Spieler")
|
if (target == "Spieler")
|
||||||
{
|
{
|
||||||
TransactionResult result = BankManager.TransferMoney(u, business, price, "Auto gekauft", dbContext);
|
TransactionResult result = BankManager.TransferMoney(user, business, price, "Auto gekauft", dbContext);
|
||||||
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||||
{
|
{
|
||||||
player.SendNotification("~r~Du hast nicht genug Geld: " + price.ToMoneyString());
|
player.SendNotification("~r~Du hast nicht genug Geld: " + price.ToMoneyString());
|
||||||
@@ -190,7 +190,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
PositionY = spawnPos.Y,
|
PositionY = spawnPos.Y,
|
||||||
PositionZ = spawnPos.Z,
|
PositionZ = spawnPos.Z,
|
||||||
Locked = false,
|
Locked = false,
|
||||||
UserId = player.GetUser().Id,
|
UserId = user.Id,
|
||||||
Model = shopVehicle.Model,
|
Model = shopVehicle.Model,
|
||||||
PrimaryColor = 111,
|
PrimaryColor = 111,
|
||||||
SecondaryColor = 111,
|
SecondaryColor = 111,
|
||||||
@@ -200,7 +200,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
else if (target == "Fraktion")
|
else if (target == "Fraktion")
|
||||||
{
|
{
|
||||||
var faction = dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == u.FactionId).First();
|
var faction = dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == user.FactionId).First();
|
||||||
TransactionResult result = BankManager.TransferMoney(faction, business, (int)(price * FACTION_CAR_MULTIPLIER), "Auto gekauft", dbContext);
|
TransactionResult result = BankManager.TransferMoney(faction, business, (int)(price * FACTION_CAR_MULTIPLIER), "Auto gekauft", dbContext);
|
||||||
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
|
||||||
{
|
{
|
||||||
@@ -216,7 +216,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
PositionY = spawnPos.Y,
|
PositionY = spawnPos.Y,
|
||||||
PositionZ = spawnPos.Z,
|
PositionZ = spawnPos.Z,
|
||||||
Locked = false,
|
Locked = false,
|
||||||
Owners = JsonConvert.SerializeObject(new int[] { player.GetUser(dbContext).FactionId.Value }),
|
Owners = JsonConvert.SerializeObject(new int[] { user.FactionId.Value }),
|
||||||
Model = shopVehicle.Model,
|
Model = shopVehicle.Model,
|
||||||
PrimaryColor = 111,
|
PrimaryColor = 111,
|
||||||
SecondaryColor = 111,
|
SecondaryColor = 111,
|
||||||
@@ -243,7 +243,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
dbContext.ServerVehicles.Add(newVeh);
|
dbContext.ServerVehicles.Add(newVeh);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
newVeh.Spawn();
|
newVeh.Spawn(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -491,10 +491,10 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
||||||
|
|
||||||
|
VehicleManager.DeleteVehicle(veh);
|
||||||
|
|
||||||
dbContext.UserVehicles.Remove(userVehicle);
|
dbContext.UserVehicles.Remove(userVehicle);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
veh?.Delete();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteraction")]
|
[RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteraction")]
|
||||||
@@ -552,10 +552,10 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
|
||||||
|
|
||||||
|
VehicleManager.DeleteVehicle(veh);
|
||||||
|
|
||||||
dbContext.FactionVehicles.Remove(factionVehicle);
|
dbContext.FactionVehicles.Remove(factionVehicle);
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
veh?.Delete();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,10 +29,12 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
foreach (ServerVehicle veh in dbContext.ServerVehicles)
|
foreach (ServerVehicle veh in dbContext.ServerVehicles)
|
||||||
{
|
{
|
||||||
if (!veh.Active) continue;
|
if (!veh.Active)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Vehicle current = veh.Spawn();
|
veh.Spawn(null);
|
||||||
TuningManager.ApplyTuningToServerVehicle(veh);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
using ReallifeGamemode.Database.Models;
|
using ReallifeGamemode.Database.Models;
|
||||||
using ReallifeGamemode.Server.Extensions;
|
using ReallifeGamemode.Server.Extensions;
|
||||||
|
using ReallifeGamemode.Server.Log;
|
||||||
using ReallifeGamemode.Server.Util;
|
using ReallifeGamemode.Server.Util;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -777,6 +779,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
private static readonly Dictionary<NetHandle, Vector3> lastPositions = new Dictionary<NetHandle, Vector3>();
|
private static readonly Dictionary<NetHandle, Vector3> lastPositions = new Dictionary<NetHandle, Vector3>();
|
||||||
private static DateTime lastSave = DateTime.UtcNow;
|
private static DateTime lastSave = DateTime.UtcNow;
|
||||||
|
|
||||||
|
private static ILogger<VehicleManager> logger = LogManager.GetLogger<VehicleManager>();
|
||||||
|
|
||||||
public static void CheckEnabledMods()
|
public static void CheckEnabledMods()
|
||||||
{
|
{
|
||||||
foreach (var name in _enabledMods)
|
foreach (var name in _enabledMods)
|
||||||
@@ -851,11 +855,13 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (_serverVehicles.ContainsKey(serverVehicle.Id))
|
if (_serverVehicles.ContainsKey(serverVehicle.Id))
|
||||||
{
|
{
|
||||||
return;
|
logger.LogCritical("Server Vehicle {Id} already has a spawned vehicle", serverVehicle.Id);
|
||||||
|
_serverVehicles[serverVehicle.Id].Entity<Vehicle>().Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_serverVehicles.ContainsValue(vehicle.Handle))
|
if (_serverVehicles.ContainsValue(vehicle.Handle))
|
||||||
{
|
{
|
||||||
|
logger.LogCritical("Vehicle handle {Handle} already belongs");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -870,7 +876,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
_serverVehicles.Remove(sVeh.Id);
|
_serverVehicles.Remove(sVeh.Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
veh.Delete();
|
veh?.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Vehicle GetVehicleFromHandle(NetHandle handle)
|
public static Vehicle GetVehicleFromHandle(NetHandle handle)
|
||||||
@@ -941,20 +947,15 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
public static void VehicleManagerVehicleDeath(Vehicle vehicle)
|
public static void VehicleManagerVehicleDeath(Vehicle vehicle)
|
||||||
{
|
{
|
||||||
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
||||||
NAPI.Util.ConsoleOutput("VehicleDeat: Debug 1");
|
|
||||||
|
|
||||||
if (serverVehicle == null)
|
if (serverVehicle == null)
|
||||||
{
|
{
|
||||||
NAPI.Util.ConsoleOutput("VehicleDeath: Debug 2");
|
|
||||||
vehicle.Delete();
|
vehicle.Delete();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
InventoryManager.RemoveAllItemsfromVehicleInventory(vehicle);
|
InventoryManager.RemoveAllItemsfromVehicleInventory(vehicle);
|
||||||
|
|
||||||
NAPI.Util.ConsoleOutput("VehicleDeath: Debug 3");
|
serverVehicle.Spawn(vehicle);
|
||||||
Vehicle newVeh = serverVehicle.Spawn(vehicle);
|
|
||||||
newVeh.Repair();
|
|
||||||
newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:setMarkerBehindVehicle")]
|
[RemoteEvent("CLIENT:setMarkerBehindVehicle")]
|
||||||
|
|||||||
Reference in New Issue
Block a user