using System.Collections.Generic; using GTANetworkAPI; 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 * @author VegaZ * @copyright (c) 2008 - 2018 Life of German */ namespace ReallifeGamemode.Server.Factions.Medic { public class Medic : Script { 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) { if (task == null) { return; } switch (task.Type) { case MedicTaskType.REVIVE: ReviveTasks.Add(task); break; case MedicTaskType.HEAL: HealTasks.Add(task); break; case MedicTaskType.FIRE: FireTasks.Add(task); break; } } public static void RemoveTaskFromList(MedicTask task) { if (task == null) { return; } switch (task.Type) { case MedicTaskType.REVIVE: ReviveTasks.Remove(task); break; case MedicTaskType.HEAL: HealTasks.Remove(task); break; case MedicTaskType.FIRE: FireTasks.Remove(task); break; } } [RemoteEvent("loadMedicTasks")] public void LoadMedicTasks(Player player, int type) { switch (type) { case 0: player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); break; case 1: player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); break; case 2: player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); break; } } [RemoteEvent("updateMedicTask")] public void UpdateMedicTasks(Player player, int type, int index, string medicName) { Player target = PlayerService.GetPlayerByNameOrId(medicName); switch (type) { case 0: ReviveTasks[index].MedicName = medicName; ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat den Reviveauftrag von " + medicName + " angenommen.", new List() { 2 }); target.SendNotification("~w~Sanitäter~g~ " + player.Name + "~w~ hat dein Auftrag angenommen."); break; case 1: HealTasks[index].MedicName = medicName; ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat den Healauftrag von " + medicName + " angenommen.", new List() { 2 }); target.SendNotification("~w~Sanitäter~g~ " + player.Name + "~w~ hat dein Auftrag angenommen."); break; case 2: FireTasks[index].MedicName = medicName; break; } } [RemoteEvent("delHealTask")] public void delHealTask(Player player) { MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name); RemoveTaskFromList(task); player.SetData("healauftrag", false); } [RemoteEvent("delReviveTask")] public static void delReviveTasks(Player player) { MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); RemoveTaskFromList(task); } public static void delHealTasks(Player player) { MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name); RemoveTaskFromList(task); player.SetData("healauftrag", false); } [RemoteEvent("RemoveMedicCheckpoint")] public void RemoveMedicCheckpoint(Player player) { MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); 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(); } } }