diff --git a/ReallifeGamemode.Client/Player/freecam.ts b/ReallifeGamemode.Client/Player/freecam.ts index 2dbe1fbe..b21748d1 100644 --- a/ReallifeGamemode.Client/Player/freecam.ts +++ b/ReallifeGamemode.Client/Player/freecam.ts @@ -24,7 +24,7 @@ LCtrl: 17, Shift: 16 }; - mp.game.graphics.notify('~r~NoClip ~w~by ~b~Morbo'); + //mp.game.graphics.notify('~r~NoClip ~w~by ~b~Morbo'); var isNoClip = false; var noClipCamera; var shiftModifier = false; diff --git a/ReallifeGamemode.Client/util/weapondamage.ts b/ReallifeGamemode.Client/util/weapondamage.ts index 0838a977..1907a03a 100644 --- a/ReallifeGamemode.Client/util/weapondamage.ts +++ b/ReallifeGamemode.Client/util/weapondamage.ts @@ -93,6 +93,11 @@ meelemodifier = 0.1; modifier = 1; + break; + case 0xEFE7E2DF: // Assault SMG + meelemodifier = 1; + modifier = 0.259 + break; default: modifier = 1; diff --git a/ReallifeGamemode.Client/vehiclesync/door.ts b/ReallifeGamemode.Client/vehiclesync/door.ts index 9db5da9d..0470c118 100644 --- a/ReallifeGamemode.Client/vehiclesync/door.ts +++ b/ReallifeGamemode.Client/vehiclesync/door.ts @@ -1,13 +1,22 @@ export default function door() { mp.events.add("CLIENT:SetDoorOpen", (door, lose, permanent) => { - mp.players.local.vehicle.setDoorOpen(door, lose, permanent); + var vehicle = mp.players.local.vehicle; + if (vehicle && mp.vehicles.exists(vehicle)) { + vehicle.setDoorOpen(door, lose, permanent); + } }); mp.events.add("CLIENT:SetDoorShut", (door, permanent) => { - mp.players.local.vehicle.setDoorShut(door, permanent); + var vehicle = mp.players.local.vehicle; + if (vehicle && mp.vehicles.exists(vehicle)) { + mp.players.local.vehicle.setDoorShut(door, permanent); + } }); mp.events.add("CLIENT:SetDoorShutDelayed", (door, permanent, time) => { setTimeout(function () { - mp.players.local.vehicle.setDoorShut(door, permanent); + var vehicle = mp.players.local.vehicle; + if (vehicle && mp.vehicles.exists(vehicle)) { + vehicle.setDoorShut(door, permanent); + } }, time) }); } \ No newline at end of file diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 92737c1e..84f8acc2 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -497,7 +497,7 @@ namespace ReallifeGamemode.Server.Events List stages = new List(); foreach (var e in PositionManager.ElevatorPoints) { - if (e.Position.DistanceTo2D(player.Position) <= 25 && e.Position.DistanceTo(player.Position) > 1.5) + if (e.Position.DistanceTo2D(player.Position) <= 30 && e.Position.DistanceTo(player.Position) > 1.5) { stages.Add(e.Stage); } diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 9fac5d0f..7bb2fd2d 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -182,6 +182,12 @@ namespace ReallifeGamemode.Server.Factions.Medic { var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); var victim = PlayerService.GetPlayerByNameOrId(task.Victim); + + if(medic == null || victim == null) + { + continue; + } + task.Position = victim.Position; medic.TriggerEvent("updateHealCheckpoint", victim.Position.X, victim.Position.Y, victim.Position.Z); } diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 12a751f7..b682e78e 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -180,6 +180,11 @@ namespace ReallifeGamemode.Server.Job public void MuellmannJobBeenden(Player player) { + if(player == null || !player.IsLoggedIn()) + { + return; + } + player.TriggerEvent("SERVER:MuellmannStatusFalse"); player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 7906e1f2..b8012632 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -260,13 +260,13 @@ namespace ReallifeGamemode.Server.Managers UpdateCharacterCloth.LoadCharacterDefaults(targetPlayer); ChatService.SendMessage(targetPlayer, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); FactionHelper.ResetPlayer(targetPlayer, targetUser, dbContext); - } + } Medic.UpdateDutyMedics(); targetUser.FactionRankId = null; targetUser.FactionId = null; targetUser.SetBlipAndNametagColor(); - - ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetUser.Name + " aus der Fraktion geworfen."); + + ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetUser.Name + " aus der Fraktion geworfen."); dbContext.SaveChanges(); } @@ -449,7 +449,7 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_PlayerVehicleInteraction")] public void PlayerVehicleInteraction(Player player, int id, string selection) { - using var dbContext = new DatabaseContext(true); + using var dbContext = new DatabaseContext(); var user = player.GetUser(dbContext); var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); @@ -467,7 +467,7 @@ namespace ReallifeGamemode.Server.Managers else if (selection == "Verkaufen") { var vehPrice = userVehicle.Price; - var backPrice = (int)(vehPrice * 0.6); + var backPrice = (int)(vehPrice * 0.4); user.BankAccount.Balance += backPrice; @@ -483,9 +483,14 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteraction")] public void FactionVehicleInteraction(Player player, int id, string selection) { - using var dbContext = new DatabaseContext(true); + using var dbContext = new DatabaseContext(); var user = player.GetUser(dbContext); + if(user.FactionId == null) + { + return; + } + var factionVehicle = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).FirstOrDefault(); if (factionVehicle == null) { @@ -498,46 +503,42 @@ namespace ReallifeGamemode.Server.Managers { player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y); } - } - - [RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteractionSell")] - public void FactionVehicleInteractionSell(Player player, int id, string selection) - { - using var dbContext = new DatabaseContext(true); - var user = player.GetUser(dbContext); - - var factionVehicle = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).FirstOrDefault(); - if (factionVehicle == null) + else if (selection == "Verkaufen") { - ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden"); - } - - GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); - - if (selection == "Verkaufen") - { - if (dbContext.FactionVehicles.ToList().Where(f => f.GetOwners().Contains(user.FactionId.Value)).Count() <= 6) + if (!user.FactionLeader) { - ChatService.ErrorMessage(player, "Die Fraktion muss mindestens 6 Fahrzeuge besitzen"); return; } - if (factionVehicle.Model == VehicleHash.Policet || factionVehicle.Model == VehicleHash.Burrito3) + if (user.Faction.StateOwned) { - ChatService.ErrorMessage(player, "Der WT kann nicht verkauft werden"); + ChatService.ErrorMessage(player, "Der Fuhrpark der Staatsfraktionen kann über die Leaderverwaltung geändert werden"); return; } - var backPrice = factionVehicle.BuyPrice; + var factionVehicleCount = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).Count(); + if(factionVehicleCount <= 6) + { + ChatService.ErrorMessage(player, "Die Fraktion braucht mindestens 6 Fahrzeuge"); + return; + } + + var price = dbContext.ShopVehicles.Where(v => v.Model == factionVehicle.Model && v.Active).Select(s => new { s.Price }).FirstOrDefault(); + if (price == null) + { + 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~ Deine Fraktion hat durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten."); + ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse ~g~{backPrice.ToMoneyString()}~s~ erhalten."); dbContext.FactionVehicles.Remove(factionVehicle); dbContext.SaveChanges(); - veh.Delete(); + veh?.Delete(); } } diff --git a/ReallifeGamemode.Server/Report/Report.cs b/ReallifeGamemode.Server/Report/Report.cs index 3c0ba2c7..344da53a 100644 --- a/ReallifeGamemode.Server/Report/Report.cs +++ b/ReallifeGamemode.Server/Report/Report.cs @@ -33,11 +33,12 @@ namespace ReallifeGamemode.Server.Report return; } - if (listReports.Count == 0) + if (listReports.FindAll(e => (e.isAssigned() == false)).Count == 0) { ChatService.ErrorMessage(client, "Im Moment gibt es keine Tickets."); return; } + User user = client.GetUser(); List listPlayers = new List(); List listTicketnames = new List(); diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs index e2aa0781..692f018e 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs @@ -17,18 +17,13 @@ namespace ReallifeGamemode.Server.WeaponDeal private const int WEAPON_AMOUNT_COP_STUNGUN = 4; public static bool checkWeaponDbyVehicle(Vehicle vehicle) { - if (!vehicle.HasData("WeaponDealLoad") || vehicle.GetData("WeaponDealLoad") == false) + if ((vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) || + (vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true)) { - return false; - } - - - if(!vehicle.HasData("weaponDeal") || vehicle.GetData("weapionDeal") == false) - { - return false; + return true; } - return true; + return false; } [RemoteEvent("startWeaponDeal")] @@ -48,7 +43,7 @@ namespace ReallifeGamemode.Server.WeaponDeal Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); - if (fVeh.HasData("weaponDeal") && fVeh.GetData("weaponDeal") == true) + if (checkWeaponDbyVehicle(fVeh)) { ChatService.ErrorMessage(client, "Es läuft aktuell schon ein Waffentransport"); return;