diff --git a/resources/[tools]/nordi_billing/billing_client.lua b/resources/[tools]/nordi_billing/billing_client.lua index b5df43abf..a4ddbbd4b 100644 --- a/resources/[tools]/nordi_billing/billing_client.lua +++ b/resources/[tools]/nordi_billing/billing_client.lua @@ -1,3 +1,4 @@ +-- Initialize QBCore local QBCore = exports['qb-core']:GetCoreObject() local isUiOpen = false @@ -51,23 +52,32 @@ function OpenBillingMenu() }) end - -- Create player options for selection + -- Show the list of nearby players first local playerOptions = {} for _, player in ipairs(players) do table.insert(playerOptions, { - value = player.id, - label = player.name .. ' (ID: ' .. player.id .. ')' + title = player.name, + description = 'ID: ' .. player.id, + onSelect = function() + -- When a player is selected, show the billing form + ShowBillingForm(player, accountOptions) + end }) end - -- Create the input dialog - local input = lib.inputDialog('Create Bill', { - { - type = 'select', - label = 'Select Player', - options = playerOptions, - required = true - }, + -- Register and show the player selection menu + lib.registerContext({ + id = 'nearby_players_menu', + title = 'Select Player to Bill', + options = playerOptions + }) + + lib.showContext('nearby_players_menu') +end + +-- Function to show the billing form after selecting a player +function ShowBillingForm(selectedPlayer, accountOptions) + local input = lib.inputDialog('Create Bill for ' .. selectedPlayer.name, { { type = 'number', label = 'Amount ($)', @@ -99,16 +109,16 @@ function OpenBillingMenu() -- Send the bill local success = lib.callback.await('billing:server:sendBill', false, { - playerId = input[1], - amount = input[2], - reason = input[3], - account = input[4] + playerId = selectedPlayer.id, + amount = input[1], + reason = input[2], + account = input[3] }) if success then lib.notify({ title = 'Billing System', - description = 'Bill sent successfully', + description = 'Bill sent successfully to ' .. selectedPlayer.name, type = 'success' }) @@ -196,22 +206,25 @@ end, false) -- Helper function to get nearby players function GetNearbyPlayers() local playerPed = PlayerPedId() - local players = QBCore.Functions.GetPlayers() - local nearbyPlayers = {} + local playerCoords = GetEntityCoords(playerPed) + local players = {} - for _, player in ipairs(players) do + -- Get all players + local allPlayers = GetActivePlayers() + + for _, player in ipairs(allPlayers) do local targetPed = GetPlayerPed(player) local targetCoords = GetEntityCoords(targetPed) - local distance = #(GetEntityCoords(playerPed) - targetCoords) + local distance = #(playerCoords - targetCoords) if distance <= 5.0 and targetPed ~= playerPed then local targetId = GetPlayerServerId(player) local targetName = GetPlayerName(player) - table.insert(nearbyPlayers, {id = targetId, name = targetName}) + table.insert(players, {id = targetId, name = targetName}) end end - return nearbyPlayers + return players end -- Animation function