From b2e8f8941557e9b427cfb144cceb846d5e2181bd Mon Sep 17 00:00:00 2001 From: root Date: Wed, 15 Apr 2026 21:50:01 +0200 Subject: [PATCH] Auto-sync 2026-04-15 21:50 --- [core]/mercyv-garage/client/main.lua | 9 ++++++++- [core]/mercyv-garage/nui/script.js | 8 ++++++-- [core]/mercyv-garage/server/main.lua | 27 +++++++++++++++++++++------ 3 files changed, 35 insertions(+), 9 deletions(-) diff --git a/[core]/mercyv-garage/client/main.lua b/[core]/mercyv-garage/client/main.lua index 0f893934..e80a9d38 100644 --- a/[core]/mercyv-garage/client/main.lua +++ b/[core]/mercyv-garage/client/main.lua @@ -597,6 +597,12 @@ function SpawnVehicle(data, closeGarageAfter) SetVehicleEngineOn(vehicle, true, true, false) GiveVehicleKeys(data.plate, model, vehicle) + -- NUI wurde schon durch close() geschlossen - nur Fokus sicherstellen + SetNuiFocus(false, false) + exports['hex_4_hud']:HideHud(false) + GarageIsOpen = false + CurrentGarage = nil + -- Job-Fahrzeug: allen Spielern mit gleichem Job Schlüssel geben if data.isJobVehicle and data.jobAccess then TriggerServerEvent('mercyv-garage:giveJobKeys', data.plate, data.jobAccess) @@ -848,7 +854,8 @@ end) RegisterNUICallback('takeOut', function(data, cb) if not CurrentGarage then cb({}); return end - TriggerServerEvent('mercyv-garage:takeOut', data.plate, CurrentGarage, data.vehClass or 0) + local garageId = CurrentGarage -- Garage-ID sichern bevor CloseGarage nil setzt + TriggerServerEvent('mercyv-garage:takeOut', data.plate, garageId, data.vehClass or 0) cb({}) end) diff --git a/[core]/mercyv-garage/nui/script.js b/[core]/mercyv-garage/nui/script.js index 4f1e861c..cd98b75b 100644 --- a/[core]/mercyv-garage/nui/script.js +++ b/[core]/mercyv-garage/nui/script.js @@ -59,8 +59,12 @@ const app = new Vue({ }, takeOut() { if (!this.selectedVehicle) return; - $.post(`https://${GetParentResourceName()}/takeOut`, JSON.stringify({ plate: this.selectedVehicle.plate, vehClass: this.selectedVehicle.vehClass || 0 })); - this.show = false; this.showAdminPanel = false; + $.post(`https://${GetParentResourceName()}/takeOut`, JSON.stringify({ + plate: this.selectedVehicle.plate, + vehClass: this.selectedVehicle.vehClass || 0, + })); + // close() aufrufen damit SetNuiFocus(false) auf Lua-Seite läuft + this.close(); }, parkFromPanel() { diff --git a/[core]/mercyv-garage/server/main.lua b/[core]/mercyv-garage/server/main.lua index 559f944d..33a34251 100644 --- a/[core]/mercyv-garage/server/main.lua +++ b/[core]/mercyv-garage/server/main.lua @@ -5,9 +5,24 @@ local ESX = nil local GaragesData = {} local SpawnedPlates = {} -local ActiveJobPlates = {} -- [plate] = jobName, aktive Job-Fahrzeuge in der Welt -local PersistSentTo = {} -- [src] = true -local PersistDone = false -- true sobald erster Spieler alle Fahrzeuge gespawnt hat +local ActiveJobPlates = {} -- [plate] = jobName +local PersistSentTo = {} +local PersistDone = false + +-- Zufälliges Kennzeichen für Job-Fahrzeuge (ABC 123 Format) +local function GenerateJobPlate() + local chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ' + local plate = '' + for i = 1, 3 do + local idx = math.random(1, #chars) + plate = plate .. chars:sub(idx, idx) + end + plate = plate .. ' ' + for i = 1, 3 do + plate = plate .. tostring(math.random(0, 9)) + end + return plate +end -- ────────────────────────────────────────────────────────────── -- Framework @@ -707,7 +722,6 @@ end RegisterNetEvent('mercyv-garage:giveJobKeys', function(plate, jobName) if not plate or not jobName then return end - -- Plate tracken damit nachträgliche Einlogger auch Schlüssel bekommen ActiveJobPlates[plate] = jobName local players = GetPlayers() @@ -718,6 +732,8 @@ RegisterNetEvent('mercyv-garage:giveJobKeys', function(plate, jobName) if xp and xp.job and xp.job.name == jobName then local ks = Config.VehicleKeySystem if ks == 'jaksam' then + -- jaksam erwartet das Kennzeichen ohne Leerzeichen und uppercase + TriggerEvent('vehicles_keys:addKey', plate, src) TriggerClientEvent('vehicles_keys:selfGiveVehicleKeys', src, plate) elseif ks == 'qs-vehiclekeys' then TriggerClientEvent('qs-vehiclekeys:client:GiveKeys', src, plate) @@ -729,8 +745,7 @@ RegisterNetEvent('mercyv-garage:giveJobKeys', function(plate, jobName) count = count + 1 end end - print(string.format('[mercyv-garage] Job-Schlüssel für %s an %d %s-Spieler verteilt.', - plate, count, jobName)) + print(string.format('[mercyv-garage] Job-Schlüssel für %s an %d %s-Spieler verteilt.', plate, count, jobName)) end) -- ──────────────────────────────────────────────────────────────