diff --git a/ReallifeGamemode.Client/Gui/deathscreen.ts b/ReallifeGamemode.Client/Gui/deathscreen.ts index 58045ef2..57537db8 100644 --- a/ReallifeGamemode.Client/Gui/deathscreen.ts +++ b/ReallifeGamemode.Client/Gui/deathscreen.ts @@ -19,6 +19,7 @@ export default function deathScreen() { var deathDate: Date; const maxDeathTime = 30; + const medicJobTime = maxDeathTime * 2; mp.game.gameplay.setFadeOutAfterDeath(false); @@ -104,6 +105,12 @@ export default function deathScreen() { } else { mp.events.call("respawnDeathPlayer"); + mp.events.callRemote("CutMedicEarnings"); + } + } else { + if (deathSeconds > medicJobTime) { + mp.events.callRemote("MedicTaskTimeout"); + mp.events.callRemote("RemoveMedicCheckpoint"); } } }); diff --git a/ReallifeGamemode.Client/Interaction/factioninteraction.ts b/ReallifeGamemode.Client/Interaction/factioninteraction.ts index ce529d9c..cf8db984 100644 --- a/ReallifeGamemode.Client/Interaction/factioninteraction.ts +++ b/ReallifeGamemode.Client/Interaction/factioninteraction.ts @@ -25,6 +25,7 @@ export default function factionInteraction(globalData: IGlobalData) { var ambulanceImagePos; var rangeLeft; var sortText; + var deadRespawned = false; var ticketName: string; var pointsName: string; @@ -462,6 +463,22 @@ export default function factionInteraction(globalData: IGlobalData) { function getDistance2(index) { return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); } + mp.events.add("checkPointTimeout", () => { + activeTask = false; + activeCheckpoint.destroy(); + }); + mp.events.add("cutMedicEarnings", () => { + deadRespawned = true; + }); + + mp.events.add('playerEnterColshape', (activeCheckpoint) => { + if (deadRespawned == true) { + activeTask = false; + activeCheckpoint.destroy(); + mp.events.callRemote("delReviveTask"); + mp.events.callRemote("payCutMedicEarnings"); + } + }); mp.events.add('render', () => { if (activeTask) { @@ -486,7 +503,6 @@ export default function factionInteraction(globalData: IGlobalData) { } else { activeTask = false; activeCheckpoint.destroy(); - mp.events.callRemote("delHealTask"); } } }); diff --git a/ReallifeGamemode.DataService/ReallifeGamemode - Backup.DataService.csproj b/ReallifeGamemode.DataService/ReallifeGamemode - Backup.DataService.csproj new file mode 100644 index 00000000..cf7aeab3 --- /dev/null +++ b/ReallifeGamemode.DataService/ReallifeGamemode - Backup.DataService.csproj @@ -0,0 +1,39 @@ + + + + netcoreapp3.1 + true + true + true + true + AnyCPU;x64 + 8.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Database/ReallifeGamemode - Backup.Database.csproj b/ReallifeGamemode.Database/ReallifeGamemode - Backup.Database.csproj new file mode 100644 index 00000000..54ccec63 --- /dev/null +++ b/ReallifeGamemode.Database/ReallifeGamemode - Backup.Database.csproj @@ -0,0 +1,34 @@ + + + + netstandard2.1 + AnyCPU;x64 + 8.0 + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + + ..\Import\Bootstrapper.dll + + + ..\Import\Newtonsoft.Json.dll + + + diff --git a/ReallifeGamemode.Server.Common/ReallifeGamemode - Backup.Server.Common.csproj b/ReallifeGamemode.Server.Common/ReallifeGamemode - Backup.Server.Common.csproj new file mode 100644 index 00000000..b7ed3b62 --- /dev/null +++ b/ReallifeGamemode.Server.Common/ReallifeGamemode - Backup.Server.Common.csproj @@ -0,0 +1,22 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + + + + + + + + + + ..\Import\Newtonsoft.Json.dll + + + + diff --git a/ReallifeGamemode.Server.Core.API/ReallifeGamemode - Backup.Server.Core.API.csproj b/ReallifeGamemode.Server.Core.API/ReallifeGamemode - Backup.Server.Core.API.csproj new file mode 100644 index 00000000..46036f5a --- /dev/null +++ b/ReallifeGamemode.Server.Core.API/ReallifeGamemode - Backup.Server.Core.API.csproj @@ -0,0 +1,13 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + + + + + diff --git a/ReallifeGamemode.Server.Core.Events/ReallifeGamemode - Backup.Server.Core.Events.csproj b/ReallifeGamemode.Server.Core.Events/ReallifeGamemode - Backup.Server.Core.Events.csproj new file mode 100644 index 00000000..08a8b3d5 --- /dev/null +++ b/ReallifeGamemode.Server.Core.Events/ReallifeGamemode - Backup.Server.Core.Events.csproj @@ -0,0 +1,18 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + + + + + + + + + + diff --git a/ReallifeGamemode.Server.Core.Extensions/ReallifeGamemode - Backup.Server.Core.Extensions.csproj b/ReallifeGamemode.Server.Core.Extensions/ReallifeGamemode - Backup.Server.Core.Extensions.csproj new file mode 100644 index 00000000..3908706e --- /dev/null +++ b/ReallifeGamemode.Server.Core.Extensions/ReallifeGamemode - Backup.Server.Core.Extensions.csproj @@ -0,0 +1,14 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + + + + + + diff --git a/ReallifeGamemode.Server.Core.RageMP/ReallifeGamemode - Backup.Server.Core.RageMP.csproj b/ReallifeGamemode.Server.Core.RageMP/ReallifeGamemode - Backup.Server.Core.RageMP.csproj new file mode 100644 index 00000000..57514be0 --- /dev/null +++ b/ReallifeGamemode.Server.Core.RageMP/ReallifeGamemode - Backup.Server.Core.RageMP.csproj @@ -0,0 +1,27 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + x64 + + + + x64 + + + + + + + + + + ..\Import\Bootstrapper.dll + + + + diff --git a/ReallifeGamemode.Server.Log/ReallifeGamemode - Backup.Server.Log.csproj b/ReallifeGamemode.Server.Log/ReallifeGamemode - Backup.Server.Log.csproj new file mode 100644 index 00000000..e02b8de4 --- /dev/null +++ b/ReallifeGamemode.Server.Log/ReallifeGamemode - Backup.Server.Log.csproj @@ -0,0 +1,14 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + + + + + + + diff --git a/ReallifeGamemode.Server.Types/ReallifeGamemode - Backup.Server.Types.csproj b/ReallifeGamemode.Server.Types/ReallifeGamemode - Backup.Server.Types.csproj new file mode 100644 index 00000000..7eab3e0e --- /dev/null +++ b/ReallifeGamemode.Server.Types/ReallifeGamemode - Backup.Server.Types.csproj @@ -0,0 +1,8 @@ + + + + netstandard2.1 + AnyCPU;x64 + + + diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 11179a8a..42cbf167 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -284,15 +284,15 @@ namespace ReallifeGamemode.Server.Commands deadPlayerUser.BankAccount.Balance -= bankMoney; } - dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += 100; - + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome; + dbContext.SaveChanges(); player.PlayAnimation("amb@medic@standing@kneel@enter", "enter", 0); deadPlayer.TriggerEvent("onPlayerRevived"); deadPlayer.SendNotification($"Du wurdest von ~y~{player.Name}~s~ für ~g~{100.ToMoneyString()} ~s~wiederbelebt."); - player.SendNotification($"Du hast ~y~{deadPlayer.Name}~s~ wiederbelebt."); + player.SendNotification($"Du hast ~y~{deadPlayer.Name}~s~ wiederbelebt und ~g~{Medic.ReviveIncome}$ ~s~für die Fraktion verdient."); deadPlayer.SetData("isDead", false); using (var dbContext1 = new DatabaseContext()) { diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index 1b4063f5..5bcab3fc 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -232,8 +232,13 @@ namespace ReallifeGamemode.Server.Events dbContext.SaveChanges(); } player.RemoveAllWeapons(); - Medic.delReviveTasks(player); + //Medic.delReviveTasks(player); NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f); } + [RemoteEvent("MedicTaskTimeout")] + public void RemoveMedicTask(Player player) + { + Medic.delReviveTasks(player); + } } } diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 3d28e22f..02b06248 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -4,6 +4,9 @@ using Newtonsoft.Json; using ReallifeGamemode.Server.Services; using System.Linq; using ReallifeGamemode.Services; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using Microsoft.EntityFrameworkCore; /** * @overview Life of German Reallife - Server Factions Medic Medic.cs @@ -18,6 +21,7 @@ namespace ReallifeGamemode.Server.Factions.Medic public static List ReviveTasks = new List(); public static List HealTasks = new List(); public static List FireTasks = new List(); + public static int ReviveIncome = 500; public static void AddTaskToList(MedicTask task) { @@ -119,7 +123,7 @@ namespace ReallifeGamemode.Server.Factions.Medic } [RemoteEvent("delReviveTask")] - public void delReviveTask(Player player) + public static void delReviveTasks(Player player) { MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); RemoveTaskFromList(task); @@ -131,11 +135,31 @@ namespace ReallifeGamemode.Server.Factions.Medic RemoveTaskFromList(task); player.SetData("healauftrag", false); } - public static void delReviveTasks(Player player) + + [RemoteEvent("RemoveMedicCheckpoint")] + public void RemoveMedicCheckpoint(Player player) { MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); - RemoveTaskFromList(task); + var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); + medic.TriggerEvent("checkPointTimeout"); + medic.SendNotification("Der Auftrag wurde abgebrochen da du nicht innerhalb der vogegebenen Zeit am Einsatzort warst!"); + + } + [RemoteEvent("CutMedicEarnings")] + public void CutMedicEarnings(Player player) + { + MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); + var medic = PlayerService.GetPlayerByNameOrId(task.MedicName); + medic.TriggerEvent("cutMedicEarnings"); + } + [RemoteEvent("payCutMedicEarnings")] + public void PayCutMedicEarnings(Player player) + { + using var dbContext = new DatabaseContext(); + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 2; + player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 2}$ ~s~für die Fraktion verdient, da der Spieler bereits aus dem Krankenhaus entlassen wurde."); + dbContext.SaveChanges(); } - } + } }