diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 581db2c8..f15ad483 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -628,10 +628,9 @@ namespace ReallifeGamemode.Server.Events if(player.GetData("SellVehicleDecision") == true && player.HasData("VehicleToSell")) { - InteractionManager.SellPlayerVehicle(player, player.GetData("VehicleToSell")); + InteractionManager.SellServerVehicle(player, player.GetData("VehicleToSell")); player.ResetData("SellVehicleDecision"); - player.ResetData("VehicleToSell"); - player.SendNotification("~g~Du hast dein Fahrzeug verkauft"); + player.ResetData("VehicleToSell"); return; } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 6bff91b8..8edca1f7 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -479,21 +479,39 @@ namespace ReallifeGamemode.Server.Managers } } - public static void SellPlayerVehicle(Player player, int id) + public static void SellServerVehicle(Player player, int id) { using var dbContext = new DatabaseContext(); var user = player.GetUser(dbContext); - var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); - var vehPrice = userVehicle.Price; - var backPrice = (int)(vehPrice * 0.4); - GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle); - user.BankAccount.Balance += backPrice; + ServerVehicle serverVehicle = dbContext.ServerVehicles.FirstOrDefault(v => v.Id == id); + + if(serverVehicle is UserVehicle) + { + UserVehicle userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); + var vehPrice = userVehicle.Price; + var backPrice = (int)(vehPrice * 0.4); + GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle); + user.BankAccount.Balance += backPrice; - 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); + VehicleManager.DeleteVehicle(veh); + dbContext.UserVehicles.Remove(userVehicle); + player.SendNotification("~g~Du hast dein Fahrzeug verkauft"); + } + else if(serverVehicle is FactionVehicle) + { + FactionVehicle factionVehicle = dbContext.FactionVehicles.FirstOrDefault(v => v.Id == id); + var backPrice = (int)(factionVehicle.BuyPrice * 1.5 * 0.4); + user.Faction.BankAccount.Balance += backPrice; - dbContext.UserVehicles.Remove(userVehicle); + ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse hat ~g~{backPrice.ToMoneyString()}~s~ erhalten."); + + VehicleManager.DeleteVehicle(VehicleManager.GetVehicleFromServerVehicle(factionVehicle)); + + dbContext.FactionVehicles.Remove(factionVehicle); + player.SendNotification("~g~Du hast dein Fraktionsfahrzeug verkauft"); + } dbContext.SaveChanges(); } @@ -546,16 +564,13 @@ namespace ReallifeGamemode.Server.Managers ChatService.ErrorMessage(player, "Das Fahrzeug konnte nicht verkauft werden. Bitte melde dich bei der Leaderverwaltung"); return; } + + var backPrice = (int)(price.Price * 1.5 * 0.4); - user.Faction.BankAccount.Balance += backPrice; - - ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse ~g~{backPrice.ToMoneyString()}~s~ erhalten."); - - VehicleManager.DeleteVehicle(veh); - - dbContext.FactionVehicles.Remove(factionVehicle); - dbContext.SaveChanges(); + player.SetData("SellVehicleDecision", true); + player.SetData("VehicleToSell", id); + ChatService.SendMessage(player, "~s~Möchtes du das Fahrzeug ~y~" + veh.DisplayName + " ~s~wirklich für ~g~$" + backPrice + " ~s~verkaufen? Drücke ~g~J~s~ zum Bestätigen oder ~r~N ~s~zum Abbrechen"); } }