diff --git a/Client/Tuning/main.js b/Client/Tuning/main.js index 14530ee3..21cc5530 100644 --- a/Client/Tuning/main.js +++ b/Client/Tuning/main.js @@ -6,6 +6,8 @@ var keyBound = false; +var disableInput = [75, 278, 279, 280, 281, 23, 59, 60, 71, 72, 74]; + var carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 18, 22, 25, 27, 28, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 46, 48, 69]; var carModSlotName = [ @@ -119,6 +121,10 @@ mp.events.add('hideTuningInfo', (unbind) => { mp.game.ui.clearHelp(true); mp.gui.chat.show(true); + if (mp.players.local.vehicle) { + mp.players.local.vehicle.setLights(0); + } + if (typeof mainMenu !== "undefined" && unbind) { mainMenu.Close(); globalData.InTuning = false; @@ -140,6 +146,14 @@ function keyPressHandler() { mp.events.callRemote("startPlayerTuning"); } +mp.events.add("render", () => { + if (globalData.InTuning) { + disableInput.forEach((input) => { + mp.game.controls.disableControlAction(1, input, true); + }); + } +}); + mp.events.add("showTuningMenu", () => { mp.events.call("hideTuningInfo" , false); mp.gui.chat.show(false); @@ -147,6 +161,8 @@ mp.events.add("showTuningMenu", () => { var localPlayer = mp.players.local; var localVehicle = localPlayer.vehicle; + localVehicle.setLights(1); + if (typeof mainMenu !== "undefined" && mainMenu.Visible) { return; } @@ -231,6 +247,7 @@ mp.events.add("showTuningMenu", () => { } if (modSlot === 22) { + localVehicle.setLights(2); var hlColor = localVehicle.getVariable("headlightColor"); if (typeof hlColor !== "number" || isNaN(hlColor) || hlColor < 0 || hlColor === 255) { currentMod = -1; @@ -318,6 +335,7 @@ mp.events.add("showTuningMenu", () => { if (modSlot === 18) return; else if (modSlot === 22) { + localVehicle.setLights(1); setHeadlightsColor(localVehicle, currentMod); return; } @@ -329,6 +347,7 @@ mp.events.add("showTuningMenu", () => { }); mainMenu.MenuClose.on(() => { + localVehicle.setLights(0); globalData.InTuning = false; mp.events.call("hideTuningInfo", false); }); diff --git a/Server/Commands/Admin.cs b/Server/Commands/Admin.cs index f8c5ddb2..a17fac1a 100644 --- a/Server/Commands/Admin.cs +++ b/Server/Commands/Admin.cs @@ -1302,7 +1302,7 @@ namespace reallife_gamemode.Server.Commands } [Command("time", "~m~Benutzung: ~s~/time [Stunde] (Minuten) (Sekunden)")] - public void CmdAdminSetTime(Client player, int hour, int min = 0, int sec = 0) + public void CmdAdminTime(Client player, int hour, int min = 0, int sec = 0) { if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) { @@ -1310,8 +1310,22 @@ namespace reallife_gamemode.Server.Commands return; } + if(hour > 23 || min > 59 || sec > 59) + { + player.SendChatMessage("~r~[FEHLER]~s~ Es wurde eine ungültige Zeit eingegeben."); + return; + } + + if(hour == -1) + { + player.SendChatMessage("Es wird nun wieder die Echtzeit genutzt."); + TimeManager.StartTimeManager(); + return; + } + string broadcastMsg = $"Serverzeit wurde auf {hour:D2}:{min:D2}:{sec:D2} gesetzt!"; NAPI.Notification.SendNotificationToAll(broadcastMsg); + TimeManager.PauseTimeManager(); NAPI.World.SetTime(hour, min, sec); return; diff --git a/Server/Managers/TimeManager.cs b/Server/Managers/TimeManager.cs index 43f2a843..9020c2f5 100644 --- a/Server/Managers/TimeManager.cs +++ b/Server/Managers/TimeManager.cs @@ -8,12 +8,22 @@ namespace reallife_gamemode.Server.Managers { public class TimeManager { + private static Timer realTimeTimer; + public static void StartTimeManager() { - Timer t = new Timer(1000); - t.Elapsed += SetTime; + if(realTimeTimer == null) + { + realTimeTimer = new Timer(1000); + realTimeTimer.Elapsed += SetTime; + } - t.Start(); + realTimeTimer.Start(); + } + + public static void PauseTimeManager() + { + realTimeTimer.Stop(); } private static void SetTime(object sender, ElapsedEventArgs args)