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 Skill1Route1 = new List//Bus_Skill_1_Route_1 { new Vector3(-1018.1577758789062, -2732.403564453125, 13.658967971801758), new Vector3(-153.04013061523438, -2033.8385009765625, 22.712543487548828), new Vector3(50.42457580566406, -1536.9090576171875, 29.184476852416992), new Vector3(361.1451721191406, -1064.6044921875, 29.36113166809082), new Vector3(119.01465606689453, -785.609619140625, 31.267763137817383), new Vector3(-172.00689697265625, -815.9910888671875, 31.13607406616211), new Vector3(-707.7088623046875, -826.9969482421875, 23.451000213623047), new Vector3(-658.1038818359375, -1393.321533203125, 10.509778022766113), new Vector3(-1018.1826171875, -2732.371826171875, 13.656649589538574), new Vector3(-647.2696533203125, -2215.64501953125, 5.989798069000244), }.AsReadOnly(); private readonly IReadOnlyCollection Skill1Route2 = new List//Bus_Skill_1_Route_2 { new Vector3(-567.6445922851562, -1233.4453125, 15.050300598144531), new Vector3(-509.224609375, -668.373291015625, 33.02402877807617), new Vector3(55.00559997558594, -749.8328247070312, 44.11421203613281), new Vector3(-173.65509033203125, -152.5533905029297, 43.615516662597656), new Vector3(-523.8310546875, -266.884033203125, 35.291507720947266), new Vector3(-1167.646728515625, -400.75, 35.39745330810547), new Vector3(-1408.329345703125, -567.8721923828125, 30.22767448425293), new Vector3(-1213.3565673828125, -1214.755859375, 7.5853986740112305), new Vector3(-746.8554077148438, -2372.227783203125, 14.740862846374512), new Vector3(-660.7366333007812, -2206.03662109375, 5.988998889923096), }.AsReadOnly(); private readonly IReadOnlyCollection Skill1Route3 = new List//Bus_Skill_1_Route_3 { new Vector3(423.4793395996094, -2143.4169921875, 18.23659896850586), new Vector3(875.1618041992188, -1766.7913818359375, 29.780052185058594), new Vector3(1166.110107421875, -1422.72265625, 34.477935791015625), new Vector3(807.715087890625, -1356.7987060546875, 26.29298210144043), new Vector3(785.9387817382812, -780.5958251953125, 26.333005905151367), new Vector3(895.2793579101562, 55.24346923828125, 78.82550048828125), new Vector3(775.8052368164062, 596.2352905273438, 125.77734375), new Vector3(307.64422607421875, -762.0469360351562, 29.197702407836914), new Vector3(-105.66091918945312, -1683.9630126953125, 29.190542221069336), new Vector3(-644.0516967773438, -2218.673828125, 5.991928577423096), }.AsReadOnly(); private readonly IReadOnlyCollection Skill1Route4 = new List//Bus_Skill_1_Route_4 { new Vector3(-694.1781616210938, -1199.3873291015625, 10.50633716583252), new Vector3(-1408.264892578125, -567.5278930664062, 30.21875), new Vector3(-1681.6112060546875, -503.3702392578125, 37.79117965698242), new Vector3(-1427.05712890625, -90.17198181152344, 52.015113830566406), new Vector3(-686.4015502929688, -374.3297424316406, 34.17094802856445), new Vector3(-509.60107421875, -668.41796875, 33.02873229980469), new Vector3(234.6927032470703, -857.5449829101562, 29.747934341430664), new Vector3(787.8258666992188, -1364.9345703125, 26.424083709716797), new Vector3(825.1477661132812, -1634.5733642578125, 30.521774291992188), new Vector3(-105.38816833496094, -1683.646728515625, 29.19083023071289), new Vector3(-655.6530151367188, -2209.579345703125, 5.98785924911499), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route1 = new List//Bus_Skill_2_Route_1 { new Vector3(-1042.6405029296875, -2718.244384765625, 14.493847846984863), new Vector3(832.205322265625, -11.559977531433105, 79.72754669189453), new Vector3(2563.96826171875, 2633.976806640625, 37.279945373535156), new Vector3(1684.845947265625, 6402.1533203125, 30.877294540405273), new Vector3(-170.82965087890625, 6374.9560546875, 30.695466995239258), new Vector3(-1524.5302734375, 4998.1220703125, 62.54846954345703), new Vector3(-3234.168701171875, 974.0481567382812, 12.890801429748535), new Vector3(-1331.8995361328125, -1052.2794189453125, 7.4408793449401855), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route2 = new List//Bus_Skill_2_Route_2 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route3 = new List//Bus_Skill_2_Route_3 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill2Route4 = new List//Bus_Skill_2_Route_4 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route1 = new List//Bus_Skill_3_Route_1 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route2 = new List//Bus_Skill_3_Route_2 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route3 = new List//Bus_Skill_3_Route_3 { new Vector3(-562.68, -2203.85, 5.5), }.AsReadOnly(); private readonly IReadOnlyCollection Skill3Route4 = new List//Bus_Skill_3_Route_4 { new Vector3(-562.68, -2203.85, 5.5), }.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, 5); switch (rroute) { case 1: { CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1"); player.SetData("Route", "Skill1Route1"); break; } case 2: { CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2"); player.SetData("Route", "Skill1Route2"); break; } case 3: { CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3"); player.SetData("Route", "Skill1Route3"); break; } case 4: { CheckPointHandle.StartCheckPointRoute(player, Skill1Route4, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4"); player.SetData("Route", "Skill1Route4"); 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, 5); switch (rroute) { case 1: { CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1"); player.SetData("Route", "Skill2Route1"); break; } case 2: { CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2"); player.SetData("Route", "Skill2Route2"); break; } case 3: { CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3"); player.SetData("Route", "Skill2Route3"); break; } case 4: { CheckPointHandle.StartCheckPointRoute(player, Skill2Route4, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4"); player.SetData("Route", "Skill2Route3"); break; } } player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false); player.TriggerEvent("CLIENT:SetDoorShut", 0, false); } if ((VehicleHash)veh.Model == VehicleHash.Tourbus) { Random rnd = new Random(); int rroute = rnd.Next(1, 5); switch (rroute) { case 1: { CheckPointHandle.StartCheckPointRoute(player, Skill3Route1, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1"); player.SetData("Route", "Skill3Route1"); break; } case 2: { CheckPointHandle.StartCheckPointRoute(player, Skill3Route2, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2"); player.SetData("Route", "Skill3Route2"); break; } case 3: { CheckPointHandle.StartCheckPointRoute(player, Skill3Route3, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3"); player.SetData("Route", "Skill3Route3"); break; } case 4: { CheckPointHandle.StartCheckPointRoute(player, Skill3Route4, 4000, 1, 7, 3, true, "busDriverJob"); player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4"); player.SetData("Route", "Skill3Route4"); break; } } 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 == "Skill1Route1") { CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill1Route2") { CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill1Route3") { CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill1Route4") { CheckPointHandle.StartCheckPointRoute(player, Skill1Route4, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill2Route1") { CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill2Route2") { CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill2Route3") { CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill2Route4") { CheckPointHandle.StartCheckPointRoute(player, Skill2Route4, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill3Route1") { CheckPointHandle.StartCheckPointRoute(player, Skill3Route1, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill3Route2") { CheckPointHandle.StartCheckPointRoute(player, Skill3Route2, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill3Route3") { CheckPointHandle.StartCheckPointRoute(player, Skill3Route3, 4000, 1, 7, 4, true, "busDriverJob"); } if (type == "Skill3Route4") { CheckPointHandle.StartCheckPointRoute(player, Skill3Route4, 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??-1); 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; 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, "RouteStart"); /*if (v.Model == (uint)Types.VehicleModel.Bus) { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); Random rnd = new Random(); int rroute = rnd.Next(1, 5); switch (rroute) { case 1: { c.StartBusRoute(player, "Skill1Route1"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1"); break; } case 2: { c.StartBusRoute(player, "Skill1Route2"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2"); break; } case 3: { c.StartBusRoute(player, "Skill1Route3"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3"); break; } case 4: { c.StartBusRoute(player, "Skill1Route4"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4"); break; } } } if (v.Model == (uint)Types.VehicleModel.Coach) { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); Random rnd = new Random(); int rroute = rnd.Next(1, 5); switch (rroute) { case 1: { c.StartBusRoute(player, "Skill2Route1"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1"); break; } case 2: { c.StartBusRoute(player, "Skill2Route2"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2"); break; } case 3: { c.StartBusRoute(player, "Skill2Route3"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3"); break; } case 4: { c.StartBusRoute(player, "Skill2Route4"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4"); break; } } } if (v.Model == (uint)Types.VehicleModel.Tourbus) { player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); Random rnd = new Random(); int rroute = rnd.Next(1, 5); switch (rroute) { case 1: { c.StartBusRoute(player, "Skill3Route1"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1"); break; } case 2: { c.StartBusRoute(player, "Skill3Route2"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2"); break; } case 3: { c.StartBusRoute(player, "Skill3Route3"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3"); break; } case 4: { c.StartBusRoute(player, "Skill3Route4"); player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4"); break; } } }*/ }, delayTime: 30000); } } }