diff --git a/ReallifeGamemode.Client/admin/aspeed.ts b/ReallifeGamemode.Client/admin/aspeed.ts index a7295b61..673af7ba 100644 --- a/ReallifeGamemode.Client/admin/aspeed.ts +++ b/ReallifeGamemode.Client/admin/aspeed.ts @@ -4,16 +4,12 @@ export default function () { mp.events.addDataHandler("vehicleAdminSpeed", (entity, newValue) => { if (!entity.isAVehicle()) return; entity.setEnginePowerMultiplier(newValue); + mp.gui.chat.push("Debug0"); }); - mp.events.add("CLIENT:SetDoorOpen", (door, lose, permanent) => { - mp.players.local.vehicle.setDoorOpen(door, lose, permanent); - }); - mp.events.add("CLIENT:SetDoorShut", (door, permanent) => { - mp.players.local.vehicle.setDoorShut(door, permanent); - }); - mp.events.add("CLIENT:SetDoorShutDelayed", (door, permanent, time) => { - setTimeout(function () { - mp.players.local.vehicle.setDoorShut(door, permanent); - }, time) + mp.events.addDataHandler("vehicleAdminSpeed2", (entity, newValue2) => { + if (!entity.isAVehicle()) return; + mp.gui.chat.push("Debug1"); + entity.setEngineTorqueMultiplier(newValue2); + mp.gui.chat.push("Debug2"); }); } \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/sound/music/login.mp3 b/ReallifeGamemode.Client/assets/sound/music/login.mp3 new file mode 100644 index 00000000..724d2fb2 Binary files /dev/null and b/ReallifeGamemode.Client/assets/sound/music/login.mp3 differ diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts index 30471741..76f3092d 100644 --- a/ReallifeGamemode.Client/index.ts +++ b/ReallifeGamemode.Client/index.ts @@ -164,6 +164,8 @@ waypointUtil(); require('./vehiclesync/vehiclesync'); +require('./vehiclesync/door'); + import smoothThrottle from './vehiclesync/smoothtrottle'; smoothThrottle(); diff --git a/ReallifeGamemode.Client/vehiclesync/door.ts b/ReallifeGamemode.Client/vehiclesync/door.ts new file mode 100644 index 00000000..9db5da9d --- /dev/null +++ b/ReallifeGamemode.Client/vehiclesync/door.ts @@ -0,0 +1,13 @@ +export default function door() { + mp.events.add("CLIENT:SetDoorOpen", (door, lose, permanent) => { + mp.players.local.vehicle.setDoorOpen(door, lose, permanent); + }); + mp.events.add("CLIENT:SetDoorShut", (door, permanent) => { + mp.players.local.vehicle.setDoorShut(door, permanent); + }); + mp.events.add("CLIENT:SetDoorShutDelayed", (door, permanent, time) => { + setTimeout(function () { + mp.players.local.vehicle.setDoorShut(door, permanent); + }, time) + }); +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index e4392dcd..bccdfd4e 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -834,7 +834,7 @@ namespace ReallifeGamemode.Server.Commands } [Command("setskill", "~m~Benutzung: ~s~/setskill [Playerid] [Bus/Pilot] [Menge]")] - public void CmdAdminGotoPoint(Player player, string name, string Skill, int SkillLevel) + public void CmdAdminSetSkill(Player player, string name, string Skill, int SkillLevel) { if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) { @@ -876,6 +876,33 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(player, $"~w~Du hast den ~y~{Skill}-Skill ~w~von ~y~{target.Name} ~w~auf ~g~{SkillLevel} ~w~gesetzt."); ChatService.SendMessage(target, $"~w~{player.Name} hat deinen ~y~{Skill}-Skill ~w~auf ~g~{SkillLevel} ~w~gesetzt."); } + [Command("setjob", "~m~Benutzung: ~s~/setjob [Playerid] [JobID 1=Taxifahrer, 2=Müllmann, 3=Pilot, 4=Busfahrer]")] + public void CmdAdminSetJob(Player player, string name, int JobID) + { + if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) + { + ChatService.NotAuthorized(player); + return; + } + Player target = PlayerService.GetPlayerByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + if (JobID < 0) + { + ChatService.SendMessage(player, "~r~JobID kann nicht unter 0 sein"); + return; + } + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).JobId = JobID; + dbContext.SaveChanges(); + } + ChatService.SendMessage(player, $"~w~Du hast die ~y~JobID ~w~von ~y~{target.Name} ~w~auf ~g~{JobID} ~w~gesetzt."); + ChatService.SendMessage(target, $"~w~{player.Name} hat deine ~y~JobID ~w~auf ~g~{JobID} ~w~gesetzt."); + } [Command("gotox", "~m~Benutzung: ~s~/gotox [X] [Y] [Z]")] public void CmdAdminGotoxyz(Player player, float x, float y, float z) @@ -2642,8 +2669,8 @@ namespace ReallifeGamemode.Server.Commands } player.TriggerEvent("CLIENT:StopSound"); } - [Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ?? - public void CmdAdminAspeed(Player player, int modifier) + [Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier1] [Modifier2]")] //TODO: Überarbeiten ?? SetPlayerVelocity ?? + public void CmdAdminAspeed(Player player, int modifier, int modifier2 = 1) { if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) { @@ -2664,6 +2691,7 @@ namespace ReallifeGamemode.Server.Commands } player.Vehicle.SetSharedData("vehicleAdminSpeed", modifier); + player.Vehicle.SetSharedData("vehicleAdminSpeed2", modifier2); } [Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")] diff --git a/ReallifeGamemode.Server/Events/Connect.cs b/ReallifeGamemode.Server/Events/Connect.cs index 5ee084ad..ad6f258c 100644 --- a/ReallifeGamemode.Server/Events/Connect.cs +++ b/ReallifeGamemode.Server/Events/Connect.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Database; @@ -43,6 +43,7 @@ namespace ReallifeGamemode.Server.Events if (IsPlayerBanned(player)) return; + player.TriggerEvent("CLIENT:PlaySound", "music/login", "mp3", 25); player.TriggerEvent("SERVER:Login_ShowBrowser"); string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID: " + player.Handle.Value + "] (" + player.Address + ")"; ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN); diff --git a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs index 83d47267..b949b242 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs @@ -42,6 +42,33 @@ namespace ReallifeGamemode.Server.Events player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); return; } + } + if (vehicle.GetServerVehicle() is JobVehicle jveh) + { + if (jveh.JobId != player.GetUser().JobId && !(u.IsAdmin(AdminLevel.HEADADMIN) && !player.IsAdminDuty())) + { + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + else + { + if ((VehicleHash)vehicle.Model == VehicleHash.Velum || (VehicleHash)vehicle.Model == VehicleHash.Velum2 && player.GetUser().PilotSkill < 300) + { + player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); + return; + } + if ((VehicleHash)vehicle.Model == VehicleHash.Coach && player.GetUser().BusSkill < 300) + { + player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); + return; + } + if ((VehicleHash)vehicle.Model == VehicleHash.Tourbus && player.GetUser().BusSkill < 800) + { + player.SendNotification("~r~Dein Skilllevel(3) ist nicht hoch genug!"); + return; + } + } } if (vehicle.GetServerVehicle() is SchoolVehicle sVeh) diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index f71591b4..5b50fdca 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -180,7 +180,10 @@ namespace ReallifeGamemode.Server.Events JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData("duty")); ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3)); ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData("duty"))); + ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5); + JobPoint nearestJobPoint = PositionManager.JobPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5); + if (nearestDuty != null)// Duty Point { @@ -259,6 +262,62 @@ namespace ReallifeGamemode.Server.Events UpdateCharacterCloth.LoadCharacterDefaults(player); } } + if (nearestJobPoint != null) + { + Job.JobBase job = JobManager.GetJob(player.GetUser().JobId.Value); + JobManager jobb = new JobManager(); + if (nearestJobPoint.jobId != 3 && nearestJobPoint.jobId == player.GetUser().JobId) + { + if (job.GetUsersInJob().Contains(player)) + { + jobb.StopJob(player); + return; + } + if (!job.GetUsersInJob().Contains(player)) + { + jobb.StartJobEvent(player); + return; + } + } + if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3) + { + if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill < 300) + { + if (job.GetUsersInJob().Contains(player)) + { + jobb.StopJob(player); + user.SetData("PilotenBase2", false); + return; + } + if (!job.GetUsersInJob().Contains(player)) + { + jobb.StartJobEvent(player); + user.SetData("PilotenBase2", false); + return; + } + } + if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300) + { + if (job.GetUsersInJob().Contains(player)) + { + jobb.StopJob(player); + user.SetData("PilotenBase2", false); + return; + } + if (!job.GetUsersInJob().Contains(player)) + { + jobb.StartJobEvent(player); + user.SetData("PilotenBase2", true); + return; + } + } + else + { + player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig."); + return; + } + } + } if (nearestWeapon != null) // Weapon Point { @@ -505,55 +564,12 @@ namespace ReallifeGamemode.Server.Events } else if (sV is JobVehicle jV) { - //if (jV.GetJob().GetUsersInJob().Contains(player)) - if (u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty()) - { - } - else if (jV.GetJob().Id == u.JobId) + if (jV.JobId == player.GetUser().JobId) { + if (!jV.GetJob().GetUsersInJob().Contains(player)) { - if (u.JobId == 3) - { - if (v.Model == (uint)Types.VehicleModel.Cuban800) - { - } - if (v.Model == (uint)Types.VehicleModel.Velum || v.Model == (uint)Types.VehicleModel.Velum2) - { - if (u.PilotSkill < 300) - { - player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); - return; - } - else - { - } - } - } - if (u.JobId == 4) - { - if (v.Model == (uint)Types.VehicleModel.Coach) - { - if (u.BusSkill < 300) - { - player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!"); - return; - } - else - { - } - } - if (v.Model == (uint)Types.VehicleModel.Tourbus) - { - if (u.BusSkill < 800) - { - player.SendNotification("~r~Dein Skilllevel(3) ist nicht hoch genug!"); - return; - } - else - { - } - } - } + player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!"); + return; } } else diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 045fb465..97c7ed3a 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -52,6 +52,7 @@ namespace ReallifeGamemode.Server.Events { player.Name = username; player.TriggerEvent("SERVER:Login_Success"); + player.TriggerEvent("CLIENT:StopSound"); player.SetData("isLoggedIn", true); player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); player.SetData("spec", true); diff --git a/ReallifeGamemode.Server/Events/Register.cs b/ReallifeGamemode.Server/Events/Register.cs index 1a0b461f..60489099 100644 --- a/ReallifeGamemode.Server/Events/Register.cs +++ b/ReallifeGamemode.Server/Events/Register.cs @@ -43,6 +43,7 @@ namespace ReallifeGamemode.Server.Events dbContext.SaveChanges(); player.TriggerEvent("SERVER:Login_Success"); + player.TriggerEvent("CLIENT:StopSound"); player.SetData("isLoggedIn", true); player.SetSharedData("isLoggedIn", true); player.SetData("isDead", false); diff --git a/ReallifeGamemode.Server/Events/ResourceStop.cs b/ReallifeGamemode.Server/Events/ResourceStop.cs index 3eced20a..48a24641 100644 --- a/ReallifeGamemode.Server/Events/ResourceStop.cs +++ b/ReallifeGamemode.Server/Events/ResourceStop.cs @@ -19,6 +19,7 @@ namespace ReallifeGamemode.Server.Events foreach (Player user in users) { + user.TriggerEvent("CLIENT:StopSound"); using (var saveUsers = new DatabaseContext()) { var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name); diff --git a/ReallifeGamemode.Server/Job/BusDriverJob.cs b/ReallifeGamemode.Server/Job/BusDriverJob.cs index 5052ec57..d2eaea1a 100644 --- a/ReallifeGamemode.Server/Job/BusDriverJob.cs +++ b/ReallifeGamemode.Server/Job/BusDriverJob.cs @@ -17,7 +17,7 @@ namespace ReallifeGamemode.Server.Job public override string Name => "Busfahrer"; - public override bool NeedVehicleToStart => true; + public override bool NeedVehicleToStart => false; private readonly IReadOnlyCollection Route1 = new List { @@ -104,7 +104,7 @@ namespace ReallifeGamemode.Server.Job private void BusDriverJob_JobStart(Player player) { - List listRouteTexts = new List(); + /*List listRouteTexts = new List(); List listRouteTexts2 = new List(); List listRouteTexts3 = new List(); @@ -128,36 +128,106 @@ namespace ReallifeGamemode.Server.Job listRouteTexts.Add("Lang 2"); player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts)); + }*/ + /*Random rnd = new Random(); + int rroute = rnd.Next(1, 6); + switch (rroute) + { + case 1: + { + StartBusRoute(player, "Route1"); + break; + } + case 2: + { + StartBusRoute(player, "Route2"); + break; + } + case 3: + { + StartBusRoute(player, "Route3"); + break; + } + case 4: + { + StartBusRoute(player, "Route4"); + break; + } + case 5: + { + StartBusRoute(player, "Route5"); + break; + } + }*/ + if (player.GetUser().BusSkill < 300) + { + Random rnd = new Random(); + int rroute = rnd.Next(1, 3); + switch (rroute) + { + case 1: + { + StartBusRoute(player, "Route1"); + break; + } + case 2: + { + StartBusRoute(player, "Route2"); + 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"); + break; + } + case 2: + { + StartBusRoute(player, "Route4"); + break; + } + } + } + if (player.GetUser().BusSkill >= 800) + { + StartBusRoute(player, "Route5"); } } [RemoteEvent("startBusRoute")] public void StartBusRoute(Player player, string type) { - if (player.VehicleSeat == 0) - { - if (type == "Kurz 1") + //if (player.VehicleSeat == 0) + //{ + if (type == "Route1") { - CheckPointHandle.StartCheckPointRoute(player, Route1, 4000, 1, 7, 5, "busDriverJob"); + CheckPointHandle.StartCheckPointRoute(player, Route1, 5000, 1, 7, 5, "busDriverJob"); } - else if (type == "Kurz 2") + else if (type == "Route2") { - CheckPointHandle.StartCheckPointRoute(player, Route2, 4000, 1, 7, 5, "busDriverJob"); + CheckPointHandle.StartCheckPointRoute(player, Route2, 5000, 1, 7, 5, "busDriverJob"); } - else if (type == "Mittel 1") + else if (type == "Route3") { - CheckPointHandle.StartCheckPointRoute(player, Route3, 4000, 1, 7, 5, "busDriverJob"); + CheckPointHandle.StartCheckPointRoute(player, Route3, 5000, 1, 7, 5, "busDriverJob"); } - else if (type == "Lang 1") + else if (type == "Route4") { - CheckPointHandle.StartCheckPointRoute(player, RouteLong, 4000, 1, 7, 5, "busDriverJob"); + CheckPointHandle.StartCheckPointRoute(player, RouteLong, 5000, 1, 7, 5, "busDriverJob"); } - else if (type == "Lang 2") + else if (type == "Route5") { - CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 4000, 1, 7, 5, "busDriverJob"); + CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 5000, 1, 7, 5, "busDriverJob"); } player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 50); - } + //} } public static void payWage(Player jobber, int wage) @@ -166,8 +236,8 @@ namespace ReallifeGamemode.Server.Job { if (jobber.VehicleSeat == 0) { - jobber.GetUser(dbContext).BankAccount.Balance += wage; - jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen."); + jobber.GetUser(dbContext).Wage += wage; + jobber.SendNotification($"~y~[JOB] ~g~+{wage}$"); jobber.GetUser(dbContext).BusSkill++; dbContext.SaveChanges(); if (jobber.GetUser(dbContext).BusSkill == 300) @@ -206,14 +276,24 @@ namespace ReallifeGamemode.Server.Job { case 1: { - c.StartBusRoute(player, "Kurz 1"); - player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 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: { - c.StartBusRoute(player, "Kurz 2"); - player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 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; } } @@ -226,22 +306,37 @@ namespace ReallifeGamemode.Server.Job { case 1: { - c.StartBusRoute(player, "Lang 1"); - player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 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: { - c.StartBusRoute(player, "Lang 2"); - player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 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) { - c.StartBusRoute(player, "Mittel 1"); - player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Mittel 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, "Route5"); + player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 5"); + }, delayTime: 30000); } } } diff --git a/ReallifeGamemode.Server/Job/PilotJob.cs b/ReallifeGamemode.Server/Job/PilotJob.cs index b3551994..bc1b7226 100644 --- a/ReallifeGamemode.Server/Job/PilotJob.cs +++ b/ReallifeGamemode.Server/Job/PilotJob.cs @@ -16,7 +16,7 @@ namespace ReallifeGamemode.Server.Job public override string Name => "Pilot"; - public override bool NeedVehicleToStart => true; + public override bool NeedVehicleToStart => false; private readonly IReadOnlyCollection Route1 = new List { @@ -115,7 +115,7 @@ namespace ReallifeGamemode.Server.Job private void PilotJob_JobStart(Player player) { - List listRouteTexts = new List(); + /*List listRouteTexts = new List(); List listRouteTexts2 = new List(); Vehicle veh = player.Vehicle; @@ -136,14 +136,89 @@ namespace ReallifeGamemode.Server.Job listRouteTexts.Add("Route 3"); player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts)); + }*/ + /*Random rnd = new Random(); + int rroute = rnd.Next(1, 6); + switch (rroute) + { + case 1: + { + StartPilotRoute(player, "Route 1"); + break; + } + case 2: + { + StartPilotRoute(player, "Route 2"); + break; + } + case 3: + { + StartPilotRoute(player, "Route 3"); + break; + } + case 4: + { + StartPilotRoute(player, "Route 4"); + break; + } + case 5: + { + StartPilotRoute(player, "Route 5"); + break; + } + }*/ + if (player.GetUser().PilotSkill < 300) + { + Random rnd = new Random(); + int rroute = rnd.Next(1, 4); + switch (rroute) + { + case 1: + { + StartPilotRoute(player, "Route1"); + break; + } + case 2: + { + StartPilotRoute(player, "Route2"); + break; + } + case 3: + { + StartPilotRoute(player, "Route3"); + break; + } + } + } + if (player.GetUser().PilotSkill >= 300) + { + Random rnd = new Random(); + int rroute = rnd.Next(1, 4); + switch (rroute) + { + case 1: + { + StartPilotRoute(player, "Route4"); + break; + } + case 2: + { + StartPilotRoute(player, "Route5"); + break; + } + case 3: + { + StartPilotRoute(player, "Route6"); + break; + } + } } - } [RemoteEvent("startPilotRoute")] public void StartPilotRoute(Player player, string type) { - if (player.VehicleSeat == 0) - { + //if (player.VehicleSeat == 0) + //{ if (type == "Route 1") { CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 30, "pilotJob"); //6, 23, 25, 26, 27, 28 @@ -168,7 +243,7 @@ namespace ReallifeGamemode.Server.Job { CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 30, "pilotJob"); } - } + //} } public static void payWage(Player jobber, int wage) { @@ -176,8 +251,8 @@ namespace ReallifeGamemode.Server.Job { if (jobber.VehicleSeat == 0) { - jobber.GetUser(dbContext).BankAccount.Balance += wage; - jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen."); + jobber.GetUser(dbContext).Wage += wage; + jobber.SendNotification($"~y~[JOB] ~g~+{wage}$"); jobber.GetUser(dbContext).PilotSkill++; dbContext.SaveChanges(); if (jobber.GetUser(dbContext).PilotSkill == 300) diff --git a/ReallifeGamemode.Server/Managers/JobManager.cs b/ReallifeGamemode.Server/Managers/JobManager.cs index 371dabb0..8c663d5a 100644 --- a/ReallifeGamemode.Server/Managers/JobManager.cs +++ b/ReallifeGamemode.Server/Managers/JobManager.cs @@ -148,10 +148,11 @@ namespace ReallifeGamemode.Server.Managers } } - JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); - if (nearJobPoint == null && u.JobId == 2) return; - - + //JobPoint nearJobPoint = PositionManager.JobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); + if(u.JobId == 2 || u.JobId == 3 || u.JobId == 4) + { + return; + } var json = JsonConvert.SerializeObject(data); @@ -181,7 +182,34 @@ namespace ReallifeGamemode.Server.Managers job.StartJob(player); } + Vehicle LastVehicle; + [ServerEvent(Event.PlayerExitVehicle)] + public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) + { + User u = player.GetUser(); + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + if (veh.GetServerVehicle() is JobVehicle vehJ && player.VehicleSeat == 0) + { + if (vehJ.GetJob().GetUsersInJob().Contains(player)) + { + if (u.JobId != 2) + { + timerJobVehicleRespawn.Start(); + veh.SetData("timerJobVehicleRespawn", true); + LastVehicle = veh; + timerJobVehicleRespawn.AutoReset = false; + timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed; + player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,"); + player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!"); + //job.StopJob(player); + return; + } + } + } + } [RemoteEvent("CLIENT:Job_StopJob")] public void StopJob(Player player) { @@ -205,11 +233,11 @@ namespace ReallifeGamemode.Server.Managers //if (LastVehicle.GetData("timerJobVehicleRespawn") == true) //Vehicle v = player.Vehicle; job.StopJob(player); - if (player.GetUser().JobId == 1)//Taxifahrer + /*if (player.GetUser().JobId == 1)//Taxifahrer { player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471); player.Heading = (-171.50303649902344f); - } + }*/ if (player.GetUser().JobId == 2)//Müllmann { player.Position = new Vector3(-428.9902038574219, -1726.5357666015625, 19.783836364746094); @@ -217,101 +245,59 @@ namespace ReallifeGamemode.Server.Managers } if (player.GetUser().JobId == 3)//Pilot { - if (player.IsInVehicle) + /*if (LastVehicle != null) { - if ((VehicleHash)player.Vehicle.Model == VehicleHash.Cuban800) + if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800) { player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406); player.Heading = (-154.65234375f); } - if ((VehicleHash)player.Vehicle.Model == VehicleHash.Velum || (VehicleHash)player.Vehicle.Model == VehicleHash.Velum2) + if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2) { player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457); player.Heading = (60.65372848510742f); } - } - else + }*/ + if (!player.HasData("PilotenBase2") || player.GetData("PilotenBase2") == false) //Sandyshores { - if (LastVehicle != null) - { - if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800) - { - player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406); - player.Heading = (-154.65234375f); - } - if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2) - { - player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457); - player.Heading = (60.65372848510742f); - } - } + player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406); + player.Heading = (-154.65234375f); + } + if (player.HasData("PilotenBase2") && player.GetData("PilotenBase2") == true) //LS Airport + { + player.Position = new Vector3(-1622.48, -3151.58, 13); + player.Heading = (48.44f); } } if (player.GetUser().JobId == 4)//Busfahrer { - if (player.IsInVehicle) + /*if (LastVehicle != null) { - if ((VehicleHash)player.Vehicle.Model == VehicleHash.Bus || (VehicleHash)player.Vehicle.Model == VehicleHash.Coach) + if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach) { player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373); player.Heading = (17.64179039001465f); } - if ((VehicleHash)player.Vehicle.Model == VehicleHash.Tourbus) + if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus) { player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332); player.Heading = (-8.147048950195312f); } - } - else - { - if (LastVehicle != null) - { - if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach) - { - player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373); - player.Heading = (17.64179039001465f); - } - if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus) - { - player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332); - player.Heading = (-8.147048950195312f); - } - } - } + }*/ + player.Position = new Vector3(-535.46, -2144.97, 5.95); + player.Heading = (57.03f); } - ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle); - ServerVehicleExtensions.Spawn(sVeh, LastVehicle); + if (LastVehicle != null) + { + LastVehicle.ResetData("timerJobVehicleRespawn"); + ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle); + ServerVehicleExtensions.Spawn(sVeh, LastVehicle); + ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle1: {LastVehicle}"); + } + ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle2: {LastVehicle}"); CheckPointHandle.DeleteCheckpoints(player); ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet."); } - Vehicle LastVehicle; - [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - if (veh.GetServerVehicle() is JobVehicle vehJ) - { - if (vehJ.GetJob().GetUsersInJob().Contains(player) && job.NeedVehicleToStart) - { - if (u.JobId != 2) - { - timerJobVehicleRespawn.Start(); - veh.SetData("timerJobVehicleRespawn", true); - LastVehicle = veh; - timerJobVehicleRespawn.AutoReset = false; - timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed; - player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,"); - player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!"); - //job.StopJob(player); - return; - } - } - } - } public void Timer30000_Elapsed(object sender, ElapsedEventArgs e) { NAPI.Task.Run(() => @@ -335,7 +321,7 @@ namespace ReallifeGamemode.Server.Managers LastVehicle.ResetData("timerJobVehicleRespawn"); CheckPointHandle.DeleteCheckpoints(p); ServerVehicleExtensions.Spawn(sVeh, LastVehicle); - if (p.GetData("isDead") == true) + if (p.GetData("isDead") == false) { if (p.GetUser().JobId == 1)//Taxifahrer { @@ -347,31 +333,21 @@ namespace ReallifeGamemode.Server.Managers } if (p.GetUser().JobId == 3)//Pilot { - if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800) + if (!p.HasData("PilotenBase2") || p.GetData("PilotenBase2") == false) //Sandyshores { p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406); p.Heading = (-154.65234375f); } - if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2) + if (p.HasData("PilotenBase2") && p.GetData("PilotenBase2") == true) //LS Airport { - p.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457); - p.Heading = (60.65372848510742f); + p.Position = new Vector3(-1622.48, -3151.58, 13); + p.Heading = (48.44f); } - //VehicleManager.DeleteVehicle(v); } - if (p.GetUser().JobId == 4) //Busfahrer + if (p.GetUser().JobId == 4)//Busfahrer { - if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach) - { - p.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373); - p.Heading = (17.64179039001465f); - } - if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus) - { - p.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332); - p.Heading = (-8.147048950195312f); - } - //VehicleManager.DeleteVehicle(v); + p.Position = new Vector3(-535.46, -2144.97, 5.95); + p.Heading = (57.03f); } } } @@ -431,15 +407,19 @@ namespace ReallifeGamemode.Server.Managers { if (sVeh is JobVehicle JV) { - JobVehicle c = new JobVehicle(); - if (JV.GetJob().GetUsersInJob().Contains(player)) + if (seat == 0) { - timerJobVehicleRespawn.Stop(); - veh.SetData("timerJobVehicleRespawn", false); + JobVehicle c = new JobVehicle(); + if (JV.GetJob().GetUsersInJob().Contains(player)) + { + timerJobVehicleRespawn.Stop(); + veh.SetData("timerJobVehicleRespawn", false); + } } else return; } - } + else return; + } return; } } @@ -463,7 +443,7 @@ namespace ReallifeGamemode.Server.Managers } [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh) + public void JobManagerPlayerExitVehicle2(Player player, Vehicle veh) { ServerVehicle sVeh = veh.GetServerVehicle(); if (sVeh == null) return; diff --git a/ReallifeGamemode.Server/Managers/PositionManager.cs b/ReallifeGamemode.Server/Managers/PositionManager.cs index 43f4e249..4e51e9e8 100644 --- a/ReallifeGamemode.Server/Managers/PositionManager.cs +++ b/ReallifeGamemode.Server/Managers/PositionManager.cs @@ -20,7 +20,7 @@ namespace ReallifeGamemode.Server.Managers public static List itemshopPoints = new List(); - public static List jobPoints = new List(); + public static List JobPoints = new List(); [ServerEvent(Event.ResourceStart)] public void OnResourceStart() @@ -117,7 +117,7 @@ namespace ReallifeGamemode.Server.Managers #endregion JailReleasePoints - #region ElevetaorPoints + #region ElevatorPoints ElevatorPoint FibElevatorPointEG = new ElevatorPoint() { @@ -149,24 +149,69 @@ namespace ReallifeGamemode.Server.Managers NAPI.TextLabel.CreateTextLabel("Aufzug - Dr\u00fccke ~y~E", j.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } - #endregion ElevetaorPoints + #endregion ElevatorPoints + + #region JobPoints JobPoint jobPointRefuseCollector = new JobPoint() { Position = new Vector3(-429.237, -1727.9839, 19.73836), - jobId = 2 + jobId = 2, + Skill = 0 + }; + JobPoint jobPointPilot = new JobPoint() + { + Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406), + jobId = 3, + Skill = 0 + }; + JobPoint jobPointPilot2 = new JobPoint() + { + Position = new Vector3(-1622.48, -3151.58, 13), + jobId = 3, + Skill = 300 + }; + JobPoint jobPointBusDriver = new JobPoint() + { + Position = new Vector3(-535.46, -2144.97, 5.95), + jobId = 4, + Skill = 0 }; - jobPoints.Add(jobPointRefuseCollector); + JobPoints.Add(jobPointRefuseCollector); + JobPoints.Add(jobPointPilot); + JobPoints.Add(jobPointBusDriver); - foreach(JobPoint p in jobPoints) + foreach (JobPoint p in JobPoints) { NAPI.Marker.CreateMarker(1, new Vector3(p.Position.X, p.Position.Y, p.Position.Z - 2), new Vector3(p.Position.X, p.Position.Y, p.Position.Z + 1), new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0); - NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~J~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); - NAPI.Blip.CreateBlip(318, p.Position, 1f, 0, "Müllmann", 255, 0,true); + if (p.jobId == 2) + { + NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); + NAPI.Blip.CreateBlip(318, p.Position, 1f, 16, "Müllmann", 255, 0, true); + } + if (p.jobId == 3) + { + if (p.Skill < 2) + { + NAPI.TextLabel.CreateTextLabel("Pilot Anf\u00E4nger - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); + NAPI.Blip.CreateBlip(251, p.Position, 1f, 16, "Pilot Anfänger", 255, 0, true); + } + if (p.Skill >= 2) + { + NAPI.TextLabel.CreateTextLabel("Pilot Fortgeschritten - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); + NAPI.Blip.CreateBlip(251, p.Position, 1f, 16, "Pilot Fortgeschritten", 255, 0, true); + } + } + if (p.jobId == 4) + { + NAPI.TextLabel.CreateTextLabel("Busfahrer - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); + NAPI.Blip.CreateBlip(513, p.Position, 1f, 16, "Busfahrer", 255, 0, true); + } } - + #endregion JobPoints + #region Shops foreach (var shop in ShopManager.clotheStores) { @@ -251,6 +296,7 @@ public class JobPoint { public Vector3 Position { get; set; } public int jobId { get; set; } + public int Skill { get; set; } } diff --git a/ReallifeGamemode.Server/Util/CheckPointHandle.cs b/ReallifeGamemode.Server/Util/CheckPointHandle.cs index 934c5b91..c1d27065 100644 --- a/ReallifeGamemode.Server/Util/CheckPointHandle.cs +++ b/ReallifeGamemode.Server/Util/CheckPointHandle.cs @@ -76,7 +76,35 @@ namespace ReallifeGamemode.Server.Util NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); } } - + public static void BusCheckpoint(Player user) + { + if (!user.IsInVehicle || user.VehicleSeat != 0) return; + Vehicle veh = user.Vehicle; + if ((VehicleHash)veh.Model == VehicleHash.Bus) + { + user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleBus", "wav", 25); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 1, false, 1850); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 1850); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 1850); + } + if ((VehicleHash)veh.Model == VehicleHash.Coach) + { + user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 600); + } + if ((VehicleHash)veh.Model == VehicleHash.Tourbus) + { + user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100); + user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100); + } + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + data.Left = false; + data.Right = false; + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } [RemoteEvent("playerInCheckpoint")] public void PlayerInCheckpoint(Player user) { @@ -97,33 +125,8 @@ namespace ReallifeGamemode.Server.Util } if (user.GetUser().JobId == 4) { - if (!user.IsInVehicle || user.VehicleSeat != 0) return; - Vehicle veh = user.Vehicle; BusDriverJob.payWage(user, 100); - if ((VehicleHash)veh.Model == VehicleHash.Bus) - { - user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleBus", "wav", 25); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 1, false, 1850); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 1850); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 1850); - } - if ((VehicleHash)veh.Model == VehicleHash.Coach) - { - user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 600); - } - if ((VehicleHash)veh.Model == VehicleHash.Tourbus) - { - user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100); - user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100); - } - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - data.Left = false; - data.Right = false; - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + BusCheckpoint(user); } } else @@ -188,6 +191,7 @@ namespace ReallifeGamemode.Server.Util if (player.GetUser().JobId == 4) { BusDriverJob.payWage(player, 200); + CheckPointHandle.BusCheckpoint(player); BusDriverJob.BusLetzterCheckpoint(player); } }