vlt fix kfz id bug??

This commit is contained in:
hydrant
2021-04-22 01:15:38 +02:00
parent 57e7455abf
commit 3546ba7f99
6 changed files with 42 additions and 27 deletions

View File

@@ -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++;
} }

View File

@@ -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;

View File

@@ -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);
} }
} }

View File

@@ -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();
} }
} }

View File

@@ -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);
} }
} }
} }

View File

@@ -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")]