using System; using System.Collections.Generic; using GTANetworkAPI; using ReallifeGamemode.Server.Util; using Newtonsoft.Json; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; using Microsoft.CodeAnalysis.CSharp.Syntax; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Job { public class BusDriverJob : JobBase { public override int Id => 4; public override string Name => "Busfahrer"; public override bool NeedVehicleToStart => false; private readonly IReadOnlyCollection Route1 = new List { new Vector3(-105.5951, -1684.548, 28.23948), new Vector3(-1056.246, -2552.576, 12.66063), new Vector3(200.3088, -1978.828, 18.3329), new Vector3(358.6138, -1785.821, 27.92113), new Vector3(281.8594, -1462.503, 28.13148), new Vector3(77.72239, -1212.086, 28.12294), new Vector3(218.1398, -850.9549, 29.16619) }.AsReadOnly(); private readonly IReadOnlyCollection Route2 = new List { new Vector3(403.4488, -786.5514, 28.2046), new Vector3(787.6898, -1364.566, 25.41318), new Vector3(942.0541, -1447.974, 30.14204), new Vector3(866.8322, -997.5225, 29.48207), new Vector3(785.4254, -781.3905, 25.33277), new Vector3(351.5793, -1064.582, 28.40059), new Vector3(235.0964, -857.1152, 28.74256), }.AsReadOnly(); private readonly IReadOnlyCollection Route3 = new List { new Vector3(313.7626,-647.1252,27.6658), new Vector3(28.84793,-543.386,34.42649), new Vector3(120.2759,-195.0664,52.98029), new Vector3(291.5339,-257.244,52.89333), new Vector3(459.6921,116.3203,97.18157), new Vector3(173.9451,220.1987,104.4178), new Vector3(-327.3175,261.2248,84.86708), new Vector3(-764.2745,294.4415,84.00808), new Vector3(-980.486,275.0842,67.26749), new Vector3(-1031.586,107.9002,51.30307), new Vector3(-489.973,-195.4356,35.59651), new Vector3(-312.2727,-367.7886,28.93641), new Vector3(-224.4042,-528.0254,33.08064), new Vector3(-245.7707,-714.5482,31.90899), new Vector3(-248.9475,-883.7717,29.00919), }.AsReadOnly(); private readonly IReadOnlyCollection Route4 = new List { new Vector3(403.8605,-597.0284,27.1788), new Vector3(953.7955,140.8976,79.34214), new Vector3(1531.374,832.1884,75.94727), new Vector3(1972.424,2643.501,44.62299), new Vector3(1812.351,3318.685,40.64569), new Vector3(1820.982,3700.176,32.31515), new Vector3(2599.954,4264.15,40.87192), new Vector3(2705.722,3308.447,54.2841), new Vector3(355.8403,-634.835,27.56906), }.AsReadOnly(); private readonly IReadOnlyCollection Route5 = new List { new Vector3(-562.68, -2203.85, 5.5), new Vector3(-889.0892, -2190.34, 8.100273), new Vector3(-695.8978, -1197.1, 10.07723), new Vector3(-1025.791, -788.746, 16.95118), new Vector3(-1411.543, -569.5651, 29.83663), new Vector3(-1863.717, -355.0997, 48.79111), new Vector3(-2171.938, -299.1247, 12.24473), new Vector3(-2973.008, 506.4566, 14.99877), new Vector3(-2738.997, 2239.153, 21.54851), new Vector3(-2448.411, 3736.997, 16.20646), new Vector3(-2206.853, 4257.991, 47.13944), new Vector3(-1545.054, 4934.076, 61.29264), new Vector3(-152.66, 6209.62, 32.03), new Vector3(2707.136, 3309.894, 55.37453), new Vector3(2554.981, 292.5191, 108.036), new Vector3(-740.3124, -1645.125, 26.10983), new Vector3(-756.3812, -2295.088, 12.43381), }.AsReadOnly(); public BusDriverJob() { JobStart += BusDriverJob_JobStart; } private void BusDriverJob_JobStart(Player player) { /*List listRouteTexts = new List(); List listRouteTexts2 = new List(); List listRouteTexts3 = new List(); Vehicle veh = player.Vehicle; if ((VehicleHash)veh.Model == VehicleHash.Bus) { listRouteTexts2.Add("Kurz 1"); listRouteTexts2.Add("Kurz 2"); ; player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts2)); } else if ((VehicleHash)veh.Model == VehicleHash.Tourbus) { listRouteTexts3.Add("Mittel 1"); player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts3)); } else { listRouteTexts.Add("Lang 1"); listRouteTexts.Add("Lang 2"); player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts)); }*/ /*if (player.GetUser().BusSkill < 300) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 1: { StartBusRoute(player, "Route1"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1"); break; } case 2: { StartBusRoute(player, "Route2"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2"); break; } } } if (player.GetUser().BusSkill > 300 && player.GetUser().BusSkill < 300) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 1: { StartBusRoute(player, "Route3"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3"); break; } case 2: { StartBusRoute(player, "Route4"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4"); break; } } } if (player.GetUser().BusSkill >= 800) { StartBusRoute(player, "Route5"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 5"); }*/ } [RemoteEvent("startBusRoute")] public void StartBusRoute(Player player, string type) { Vehicle veh = player.Vehicle; if (player.VehicleSeat == 0) { if (type == "RouteStart") { if ((VehicleHash)veh.Model == VehicleHash.Bus) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 0: { player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Case0"); break; } case 1: { CheckPointHandle.StartCheckPointRoute(player, Route1, 5000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1"); break; } case 2: { CheckPointHandle.StartCheckPointRoute(player, Route2, 5000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2"); break; } case 3: { player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Case0"); break; } } player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false); player.TriggerEvent("CLIENT:SetDoorOpen", 1, false, false); player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false); player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false); player.TriggerEvent("CLIENT:SetDoorShut", 0, false); player.TriggerEvent("CLIENT:SetDoorShut", 1, false); player.TriggerEvent("CLIENT:SetDoorShut", 2, false); player.TriggerEvent("CLIENT:SetDoorShut", 3, false); } if ((VehicleHash)veh.Model == VehicleHash.Coach) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 1: { CheckPointHandle.StartCheckPointRoute(player, Route3, 5000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3"); break; } case 2: { CheckPointHandle.StartCheckPointRoute(player, Route4, 5000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4"); break; } } player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false); player.TriggerEvent("CLIENT:SetDoorShut", 0, false); } if ((VehicleHash)veh.Model == VehicleHash.Tourbus) { CheckPointHandle.StartCheckPointRoute(player, Route5, 5000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 5"); player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false); player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false); player.TriggerEvent("CLIENT:SetDoorShut", 2, false); player.TriggerEvent("CLIENT:SetDoorShut", 3, false); } } if (type == "Route1") { CheckPointHandle.StartCheckPointRoute(player, Route1, 4000, 1, 7, 4, true, "busDriverJob"); } else if (type == "Route2") { CheckPointHandle.StartCheckPointRoute(player, Route2, 4000, 1, 7, 4, true, "busDriverJob"); } else if (type == "Route3") { CheckPointHandle.StartCheckPointRoute(player, Route3, 4000, 1, 7, 4, true, "busDriverJob"); } else if (type == "Route4") { CheckPointHandle.StartCheckPointRoute(player, Route4, 4000, 1, 7, 4, true, "busDriverJob"); } else if (type == "Route5") { CheckPointHandle.StartCheckPointRoute(player, Route5, 4000, 1, 7, 4, true, "busDriverJob"); } player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 50); } } public static void payWage(Player jobber, int wage) { using (var dbContext = new DatabaseContext()) { if (jobber.VehicleSeat == 0) { jobber.GetUser(dbContext).Wage += wage; //jobber.SendNotification($"~y~[JOB] ~g~+{wage}$"); jobber.GetUser(dbContext).BusSkill++; dbContext.SaveChanges(); if (jobber.GetUser(dbContext).BusSkill == 300) { jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 2 ~w~erreicht!"); jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Coach-Bus fahren!"); } if (jobber.GetUser(dbContext).BusSkill == 800) { jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 3 ~w~erreicht!"); jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt mit dem Coach, und dem Tourbus fahren!"); } } else { JobBase job = JobManager.GetJob(jobber.GetUser().JobId.Value); job.StopJob(jobber); CheckPointHandle.DeleteCheckpoints(jobber); ChatService.SendMessage(jobber, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); } //BusLetzterCheckpoint(jobber); //BusDriverJob rt = null; //rt.BusLetzterCheckpoint() } } [RemoteEvent("BusLetzterCheckpoint")] public static void BusLetzterCheckpoint(Player player) { BusDriverJob c = new BusDriverJob(); Vehicle v = player.Vehicle; if (v.Model == (uint)Types.VehicleModel.Bus) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 1: { player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten..."); NAPI.Task.Run(() => { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); c.StartBusRoute(player, "Route1"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1"); }, delayTime: 30000); break; } case 2: { player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten..."); NAPI.Task.Run(() => { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); c.StartBusRoute(player, "Route2"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2"); }, delayTime: 30000); break; } } } if (v.Model == (uint)Types.VehicleModel.Coach) { Random rnd = new Random(); int rroute = rnd.Next(1, 3); switch (rroute) { case 1: { player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten..."); NAPI.Task.Run(() => { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); c.StartBusRoute(player, "Route3"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3"); }, delayTime: 30000); break; } case 2: { player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten..."); NAPI.Task.Run(() => { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); c.StartBusRoute(player, "Route4"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4"); }, delayTime: 30000); break; } } } if (v.Model == (uint)Types.VehicleModel.Tourbus) { player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten..."); NAPI.Task.Run(() => { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); c.StartBusRoute(player, "Route5"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 5"); }, delayTime: 30000); } } } }