diff --git a/resources/[carscripts]/sn_vehicleKey/client.lua b/resources/[carscripts]/sn_vehicleKey/client.lua index d7cd609e6..a85e1267d 100644 --- a/resources/[carscripts]/sn_vehicleKey/client.lua +++ b/resources/[carscripts]/sn_vehicleKey/client.lua @@ -170,42 +170,58 @@ if (Config.useContextMenu) then local item = transferVehMenu:AddItem(model .. " " .. plate) item.closeMenuOnClick = true - item.OnClick = function() - local nearbyPlayers = GetNearbyPlayersWithNames(5.0) - - if #nearbyPlayers == 0 then - Notification("Keine Spieler in der Nähe gefunden") - return - end - - -- Spielerauswahl-Menü erstellen - local playerOptions = {} - for _, player in ipairs(nearbyPlayers) do - table.insert(playerOptions, { - title = player.name, - description = "Entfernung: " .. math.floor(player.distance * 10) / 10 .. "m", - serverPlayerId = player.serverId - }) - end - - lib.registerMenu({ - id = 'transfer_vehicle_menu', - title = 'Fahrzeug übergeben', - position = 'top-right', - options = playerOptions, - onSelect = function(selected) - local targetPlayer = playerOptions[selected].serverPlayerId - local success = CB:Trigger("VKC:transferVehicleOwnership", plate, targetPlayer) - - if success then - Notification("Du hast dein " .. model .. " an " .. playerOptions[selected].title .. " übergeben") - else - Notification("Übergabe fehlgeschlagen") - end - end - }) - - lib.showMenu('transfer_vehicle_menu') +item.OnClick = function() + local nearbyPlayers = GetNearbyPlayersWithNames(5.0) + + if #nearbyPlayers == 0 then + Notification("Keine Spieler in der Nähe gefunden") + return + end + + -- Spielerauswahl-Menü erstellen + local playerOptions = {} + for _, player in ipairs(nearbyPlayers) do + table.insert(playerOptions, { + title = player.name, + description = "Entfernung: " .. math.floor(player.distance * 10) / 10 .. "m", + metadata = { + ["Spieler ID"] = player.serverId + }, + args = { + serverId = player.serverId, + name = player.name + } + }) + end + + -- Stelle sicher, dass wir mindestens eine Option haben + if #playerOptions == 0 then + Notification("Keine Spieler in der Nähe gefunden") + return + end + + lib.registerMenu({ + id = 'transfer_vehicle_menu', + title = 'Fahrzeug übergeben', + position = 'top-right', + options = playerOptions, + onSelect = function(selected, scrollIndex, args) + if args and args.serverId then + local targetPlayer = args.serverId + local success = CB:Trigger("VKC:transferVehicleOwnership", plate, targetPlayer) + + if success then + Notification("Du hast dein " .. model .. " an " .. args.name .. " übergeben") + else + Notification("Übergabe fehlgeschlagen") + end + else + Notification("Fehler bei der Spielerauswahl") + end + end + }) + + lib.showMenu('transfer_vehicle_menu') end end @@ -484,55 +500,80 @@ function GenerateKeyInventoryNativeUI() submenuTransferVehicle:AddItem(vehItem) end - submenuTransferVehicle.OnItemSelect = function(menu, item, index) - local selectedVehicle = vehicleData[index] - local plate = selectedVehicle[1] - local model = GetLabelText(GetDisplayNameFromVehicleModel(selectedVehicle[2])) - if (model == "NULL") then - model = GetDisplayNameFromVehicleModel(selectedVehicle[2]) - end - - -- Menü schließen und Spielerauswahl anzeigen - menuPoolNativeUI:CloseAllMenus() - menuOpen = false - - -- Spieler in der Nähe abrufen - local nearbyPlayers = GetNearbyPlayersWithNames(5.0) - - if #nearbyPlayers == 0 then - lib.notify({ - title = "Fahrzeug übergeben", - description = "Keine Spieler in der Nähe gefunden", - position = "top", - type = "error", - icon = "car" - }) - return - end - - -- Spielerauswahl-Menü erstellen - local playerOptions = {} - for _, player in ipairs(nearbyPlayers) do - table.insert(playerOptions, { - title = player.name, - description = "Entfernung: " .. math.floor(player.distance * 10) / 10 .. "m", - serverPlayerId = player.serverId - }) - end - - lib.registerMenu({ - id = 'transfer_vehicle_menu', - title = 'Fahrzeug übergeben', - position = 'top-right', - options = playerOptions, - onSelect = function(selected) - local targetPlayer = playerOptions[selected].serverPlayerId +submenuTransferVehicle.OnItemSelect = function(menu, item, index) + local selectedVehicle = vehicleData[index] + local plate = selectedVehicle[1] + local model = GetLabelText(GetDisplayNameFromVehicleModel(selectedVehicle[2])) + if (model == "NULL") then + model = GetDisplayNameFromVehicleModel(selectedVehicle[2]) + end + + -- Menü schließen und Spielerauswahl anzeigen + menuPoolNativeUI:CloseAllMenus() + menuOpen = false + + -- Spieler in der Nähe abrufen + local nearbyPlayers = GetNearbyPlayersWithNames(5.0) + + if #nearbyPlayers == 0 then + lib.notify({ + title = "Fahrzeug übergeben", + description = "Keine Spieler in der Nähe gefunden", + position = "top", + type = "error", + icon = "car" + }) + return + end + + -- Spielerauswahl-Menü erstellen + local playerOptions = {} + for _, player in ipairs(nearbyPlayers) do + table.insert(playerOptions, { + title = player.name, + description = "Entfernung: " .. math.floor(player.distance * 10) / 10 .. "m", + metadata = { + ["Spieler ID"] = player.serverId + }, + args = { + serverId = player.serverId, + name = player.name + } + }) + end + + -- Stelle sicher, dass wir mindestens eine Option haben + if #playerOptions == 0 then + lib.notify({ + title = "Fahrzeug übergeben", + description = "Keine Spieler in der Nähe gefunden", + position = "top", + type = "error", + icon = "car" + }) + return + end + + lib.registerMenu({ + id = 'transfer_vehicle_menu', + title = 'Fahrzeug übergeben', + position = 'top-right', + options = playerOptions, + onClose = function() + -- Optional: Öffne das Hauptmenü wieder + GenerateKeyInventoryNativeUI() + keyInvMenuNativeUI:Visible(true) + menuOpen = true + end, + onSelect = function(selected, scrollIndex, args) + if args and args.serverId then + local targetPlayer = args.serverId local success = CB:Trigger("VKC:transferVehicleOwnership", plate, targetPlayer) if success then lib.notify({ title = "Fahrzeug übergeben", - description = "Du hast dein " .. model .. " an " .. playerOptions[selected].title .. " übergeben", + description = "Du hast dein " .. model .. " an " .. args.name .. " übergeben", position = "top", type = "success", icon = "car" @@ -546,11 +587,21 @@ function GenerateKeyInventoryNativeUI() icon = "car" }) end + else + lib.notify({ + title = "Fahrzeug übergeben", + description = "Fehler bei der Spielerauswahl", + position = "top", + type = "error", + icon = "car" + }) end - }) - - lib.showMenu('transfer_vehicle_menu') - end + end + }) + + lib.showMenu('transfer_vehicle_menu') +end + local submenuShowKeys = menuPoolNativeUI:AddSubMenu(keyInvMenuNativeUI, Config.Strings.NUI.keysTitle, Config.Strings.NUI.keysDesc) submenuShowKeys.ParentItem:RightLabel(">")