🔌 DEV PARTNERS

Dev Partner Integration

Are you building your own FiveM script and want to hook into our resources? This page lists every public export and event for all Agency scripts, with copy-pasteable Lua snippets so you can integrate them in seconds.

00 How exports work in FiveM

Exports let your own scripts call functions defined in Agency scripts, and events let you react to things that happen inside them. On the client side you use exports['script-name']:FunctionName(args); on the server side the same. Events are fired with TriggerEvent or TriggerServerEvent and listened to with RegisterNetEvent. Every example below is copy-pasteable into your own script.

01 Agency-Phone

Full multi-framework phone with SMS, calls, social feed, mail, camera, wallet and AgencyPay checkout.

Client exports

ExportDescription
IsPhoneOpen()Returns true if the phone UI is currently open.
IsPhonePoweredOn()Returns true if the phone is powered on.
GetPhoneData()Returns the raw phone data table.
GetPhonePropEntity()Returns the entity handle of the held phone prop, or 0 if not visible.
IsPhoneExpanded()Returns true if the phone is expanded on screen.
HasCarrierContract()Returns true when the player has an active carrier data plan.
GetPhoneState()Returns the complete phone state object.
HasPhone()Returns true if the player has a phone item.
RegisterAgencyPayPoint(id, data)Registers a recurring AgencyPay merchant terminal.
RemoveAgencyPayPoint(id)Removes a previously registered AgencyPay terminal.
StartAgencyPayCheckout(data)Opens the AgencyPay checkout sheet for secure card payment.
StartCall(contactData)Starts a pma-voice call using a contact table.
PhoneNotification(title, text, icon, color, timeout, acceptIcon, denyIcon)Shows a phone notification with optional accept/deny buttons.

Server exports

ExportDescription
SendMail(identifier, mailData)Sends mail to a player (online or offline).
AddChirp(chirpData)Posts a message to the Pulse (chirper) feed.
usePhone(event, item, inventory, slot, data)ox_inventory hook registered when ESX+ox_inventory is detected; opens the phone for the inventory holder.

Public events

EventSideDescription
agency-phone:client:notifyClientShows a phone notification (title, text, icon, color, timeout, silent).
agency-phone:client:usePhoneItemClientTriggers the phone open flow when the phone inventory item is used.
agency-phone:client:openAppClientAsks the phone to navigate to a custom app by id (used by app modules).
agency-phone:client:newMailNotifyClientNotifies the client of a freshly received mail.
agency-phone:server:requestPhoneDataServerRequests a fresh phone data sync for the calling player.
agency-phone:server:cancelCallServerCancels or ends an active call.
agency-phone:server:sendMessageServerSends an SMS message (newMsg, targetNumber).
agency-phone:server:saveSettingServerPersists a single phone setting key/value for the player.
agency-phone:server:airdropPayServerPerforms an Agency Airdrop pay-to-nearby-player transfer.
agency-phone:server:buyDataPlanServerBuys a carrier data plan for the player (price, planName).
agency-phone:dispatch:createServerCreates a phone dispatch from an emergency call/SMS.

Integration example

-- Send a payment request to the player and handle the result
RegisterCommand('buy_coffee', function()
    exports['agency-phone']:StartAgencyPayCheckout({
        merchant    = 'Joe\'s Corner Shop',
        title       = 'Agency Pay',
        subtitle    = 'Checkout ready',
        label       = 'Premium Coffee',
        amount      = 24.50,
        icon        = 'fa-solid fa-mug-hot',
        accent      = '#ff9f0a',
        clientEvent = 'mycoffee:client:paymentResult',
        serverEvent = 'mycoffee:server:paymentResult',
        metadata    = { orderId = 'order_2048' }
    })
end)

RegisterNetEvent('mycoffee:client:paymentResult', function(data)
    if data.status == 'success' then
        TriggerServerEvent('mycoffee:server:giveItem', 'coffee')
    end
end)
💡 How to integrate as a Dev Partner:

Use inside any shop/robbery/job script where you want a clean in-phone payment flow instead of instantly deducting money. Also ideal for in-game notifications with accept/deny flows (e.g. taxi ride requests, dispatch calls).

02 Agency-Pad

AgencyOS tablet with a full app ecosystem. Register your own apps via config.lua.

Client exports

ExportDescription
IsPadOpen()Returns true if the tablet UI is open (check tablet state before showing UIs).
IsPadPoweredOn()Returns true if the tablet is powered on.
GetPadData()Returns the full client-side PadData table.
GetPadPropEntity()Returns the entity handle of the held tablet prop, or 0 if not visible.
IsPadExpanded()Alias of IsPadOpen() kept for backward compatibility.
HasCarrierContract()Returns true when the player has an active carrier data plan on the tablet.
GetPadState()Returns table { isOpen, poweredOn, syncEnabled } summarising current tablet status.
HasPad()Returns true if the player has the configured tablet item in their inventory.
RegisterAgencyPayPoint(id, data)Registers a runtime Agency Pay terminal at a coordinate (markers, blip, checkout payload).
RemoveAgencyPayPoint(id)Removes a previously registered Agency Pay terminal by id.
StartAgencyPayCheckout(data)Opens the tablet (if needed) and launches an Agency Pay checkout flow with the given payment payload.
StartCall(contactData)Starts an outgoing tablet call to the supplied contact ({ name, number, ... }).
PhoneNotification(title, text, icon, color, timeout, acceptIcon, denyIcon)Shows an action notification with accept/deny buttons; blocks until the user responds and returns true/false.

Server exports

ExportDescription
SendMail(identifier, mailData)Sends a mail to the player's primary mailbox by identifier (returns success).
usePad(event, item, inventory, slot, data)ox_inventory hook registered when ESX+ox_inventory is detected; opens the tablet for the inventory holder.
usePhone(event, item, inventory, slot, data)ox_inventory hook for the legacy phone item id; opens the tablet for the inventory holder.

Public events

EventSideDescription
agency-pad:client:notifyClientShows a tablet notification (title, text, icon, color, timeout, silent).
agency-pad:client:usePadItemClientOpens the tablet when the inventory item is used.
agency-pad:client:openAppClientTrigger on the client to open a specific app inside the tablet.
agency-pad:client:newMailNotifyClientNotifies the client of a freshly received mail.
agency-pad:client:hourlyPaycheckClientNotifies the client of an hourly business paycheck event.
agency-pad:server:requestPadDataServerRequests a fresh tablet data sync for the calling player.
agency-pad:server:sendMessageServerSends an SMS message (newMsg, targetNumber).
agency-pad:server:airdropPayServerPerforms an Agency Airdrop pay-to-nearby-player transfer.
agency-pad:server:buyDataPlanServerBuys a carrier data plan for the player.
agency-pad:dispatch:createServerCreates a tablet dispatch from an emergency call/SMS.
agency-pad:server:biz:createServerCreates a new business/organisation for the player.
agency-pad:server:biz:adminCreateServerAdmin creates a business on behalf of another player.
agency-pad:server:biz:startMissionServerStarts a configured business mission for the player.
agency-pad:server:applyToListingServerSubmits a job application to a business listing.
agency-pad:server:createMechanicInvoiceServerCreates a mechanic invoice draft.
agency-pad:server:sendMechanicInvoicePayServerSends a mechanic invoice to a customer for payment.
agency-pad:server:mdtCreateInvoiceServerMDT creates a fine/invoice for a citizen.

Integration example

-- Register your own tablet app in Agency-Pad config.lua
Config.Apps['myapp'] = {
    name   = 'My Dashboard',
    icon   = 'fa-solid fa-chart-line',
    color  = '#ff9f0a',
    nui    = 'html/myapp.html',
    resource = 'myapp-tablet',
    storeDesc = 'A custom dashboard for my server.'
}

-- Then open it from any of your scripts:
TriggerEvent('agency-pad:client:openApp', 'myapp')
💡 How to integrate as a Dev Partner:

Perfect for admin dashboards, business management apps, gang territory maps, or any custom UI your players need inside GTA — it lives inside a beautiful tablet shell with no extra work.

03 Agency-LifeinvaderV3

Modern advertisement system with tiered pricing, ad queue, and admin approval.

Public events

EventSideDescription
agency_lifeinvader:showAdClientShows an ad to the player (broadcast helper).
agency_lifeinvader:openMenuClientOpens the "create ad" menu.
agency_lifeinvader:openRecentMenuClientOpens the "recent ads" feed.
agency_lifeinvader:notifyClientShows a framework notification on the player's screen (message, type).
agency_lifeinvader:submitAdServerSubmit a new ad from code (used by UI, can be re-used).

Integration example

-- Let a player open the LifeInvader app from a radio click
RegisterCommand('openradio', function()
    TriggerEvent('agency_lifeinvader:openMenu')
end)
💡 How to integrate as a Dev Partner:

Use as the in-game replacement for Twitter/Instagram. Perfect for businesses advertising new products, gangs announcing territory, or the admin team posting server news.

04 Agency-Blackmarket

Reputation-based black market with hacking, flash sales, vehicle trading, and money laundering.

Public events

EventSideDescription
blackmarket:client:openMenuClientOpens the main black market menu.
blackmarket:client:closeMenuClientCloses any open black market menus for the player.
blackmarket:client:openLaunderingMenuClientOpens the money laundering submenu.
blackmarket:client:showNotificationClientDisplays a styled black market notification (title, message, type, duration).
blackmarket:server:checkAccessServerChecks the player's current access level.
blackmarket:server:completeBuyServerFinalises a purchase after the client minigame succeeds.
blackmarket:server:sellItemServerProcesses an item sale.
blackmarket:server:completeSellServerFinalises a sale after the client minigame succeeds.
blackmarket:server:launderMoneyServerHandles a money-laundering transaction.

Integration example

-- Hook an illegal NPC dealer to the black market menu
exports.qtarget:AddBoxZone('dealer_zone', vector3(100,200,30), 1.5, 1.5, {
    options = {{
        event = 'blackmarket:client:openMenu',
        label = 'Talk to dealer',
        icon  = 'fa-solid fa-user-secret'
    }},
    distance = 2.0
})
💡 How to integrate as a Dev Partner:

Plug into your own robbery, heist or drug-dealing scripts — let the player sell stolen items here or launder their dirty cash before it becomes clean money.

05 Agency-Minerjob

Multi-framework mining job with 100-level skill progression, ox_lib skill checks and 6 ore types.

Public events

EventSideDescription
agency_minerJob:openSellMenuClientOpens the sell menu at the ore refinery.
agency_minerJob:sellItemsServerSells all ores at once at current market price.
agency_minerJob:requestPlayerItemsServerReturns the player's sellable mining items via receivePlayerItems.
agency_minerJob:requestPlayerSkillServerReturns a quick mining skill summary via receiveSkillInfo.
agency_minerJob:requestDetailedStatsServerReturns the detailed mining stats payload via receiveDetailedStats.

Integration example

-- Tie a "sell ores here" zone on your map to the minerjob sell menu
local zone = CreateThread(function()
    while true do
        Wait(500)
        if #(GetEntityCoords(PlayerPedId()) - vector3(2954.5, 2750.2, 43.3)) < 2.0 then
            TriggerEvent('agency_minerJob:openSellMenu')
            Wait(3000)
        end
    end
end)
💡 How to integrate as a Dev Partner:

Great as a low-entry job for fresh players. Tie its XP progression to gang reputation, whitelist jobs, or use it as a sink for unemployed players.

06 Agency-Repairkits

Vehicle repair kit with progressive damage mechanics and modern UI.

Public events

EventSideDescription
agencyrepairkit:client:startRepairClientStarts the repair animation & progress bar on the target vehicle.
esx-agencyrepairkit:client:useRepairKitClientESX-specific alias that starts the repair-kit progress flow.
qb-agencyrepairkit:client:useRepairKitClientQBCore-specific alias that starts the repair-kit progress flow.

Integration example

-- Trigger a repair from your own mechanic job script when a player
-- has the "mechanic_kit" item equipped:
TriggerEvent('agencyrepairkit:client:startRepair', vehicleHandle, 'medium')
💡 How to integrate as a Dev Partner:

Perfect inside mechanic jobs, tow-truck jobs, or as a consumable item in a general inventory. The progressive damage system pairs beautifully with a chop-shop or insurance script.

07 Agency-Vehiclekeys

Vehicle keys with lock/unlock, remote engine start, blinkers and key sharing.

Public events

EventSideDescription
simple_carkeys:client:toggleLockClientToggles lock state of the vehicle (respecting ownership).
simple_carkeys:client:toggleEngineClientRemote-starts or stops the targeted vehicle's engine.
simple_carkeys:client:showErrorClientShows a generic 'not your car' error notification on the client.
simple_carkeys:client:showNotificationTextClientShows a success notification with arbitrary text on the client.
simple_carkeys:client:showErrorTextClientShows an error notification with arbitrary text on the client.
simple_carkeys:server:forceToggleLockServerJob/admin path: broadcasts a lock toggle for a vehicle without ownership checks.
simple_carkeys:server:forceToggleEngineServerJob/admin path: broadcasts an engine toggle for a vehicle without ownership checks.
simple_carkeys:server:checkOwnershipAndLockServerValidates ownership/shared keys for the plate then broadcasts a lock toggle on success.
simple_carkeys:server:checkOwnershipAndStartServerValidates ownership/shared keys for the plate then broadcasts an engine toggle on success.
simple_carkeys:server:universalEngineStartServerAllows any player to start any engine when Config.AllowUniversalEngineStart is enabled.

Integration example

-- In your own garage-out script, grant keys to the player before spawn
local plate = GetVehicleNumberPlateText(spawnedVeh)
TriggerServerEvent('simple_carkeys:server:giveKeys', plate)
💡 How to integrate as a Dev Partner:

Works as the "owns this vehicle" check for every other script — tow trucks, impound lots, valet parking, carjacking minigames. The validate export is safe to call from any other resource.

08 Agency-Vending

Vending machines with player ownership, cash or AgencyPay card payment.

Public events

EventSideDescription
agency-vending:notifyClientGeneric server-driven notification dispatcher for the vending resource.
agency-vending:startAgencyPayClientInitiates an Agency Pay checkout via the agency-phone integration with merchant metadata.
agency-vending:buyMachineResultClientResult of a buy-machine purchase, forwarded to the NUI for feedback.
agency-vending:machineCreatedClientBroadcast that a new player-owned machine was created; updates local cache and notifies owner.
agency-vending:openManagementVerifiedClientServer-verified open of the owner management menu with items, earnings and label.
agency-vending:openOwnedListClientOpens the owner overview NUI listing all of the player's machines with street names.
agency-vending:spawnMachineCreatedClientAdmin-spawner broadcast that a new spawned machine entity was created.
agency-vending:spawnMachineDeletedClientAdmin-spawner broadcast that a spawned machine entity was deleted.
agency-vending:openSpawnerUIClientOpens the admin spawner NUI after server-side permission check passes.
agency-vending:buyMachineServerPlayer buys a vending machine of a given type at the supplied coords/heading.
agency-vending:requestOwnedListServerCaller requests the list of their owned machines for the owner overview UI.
agency-vending:requestMachinesServerCaller requests a full sync of all player-owned machines from the server.
agency-vending:requestManagementServerServer-verified open of the management UI for an owned machine.
agency-vending:requestSpawnedMachinesServerCaller requests the list of admin-spawned machines for the spawner UI.
agency-vending:adminSpawnMachineServerAdmin places a new vending machine prop server-side after permission check.
agency-vending:adminDeleteSpawnedServerAdmin deletes a previously spawned vending machine prop server-side.

Integration example

-- Check nearby vending machines from your own "quick-buy" keybind
RegisterKeyMapping('+buyvending', 'Buy from nearby vending machine', 'keyboard', 'E')
RegisterCommand('+buyvending', function()
    TriggerEvent('agency-vending:client:openMenu')
end, false)
💡 How to integrate as a Dev Partner:

Pair with Agency-Phone's AgencyPay export for card-based purchases. Use in jobs where players own vending locations (gas stations, offices, apartments) to generate passive income.

09 Agency-Admin

Full-featured admin panel with glass UI, AgencyAI chat, and 60+ admin tools.

Public events

EventSideDescription
agency-admin:client:refreshStaffRanksClientTriggers the client to re-pull staff ranks data.
agency-admin:client:freezeTimeClientFreezes / unfreezes the world time on the client at the given hour/minute.
agency-admin:client:dashboardValueClientPushes a single dashboard card value (e.g. live counter) to the panel UI.
agency-admin:client:teleportToCoordsClientTeleports the caller to the supplied world coordinates.
agency-admin:client:announceClientShows a server-wide announcement banner.
agency-admin:client:notifyClientPushes a notification to a specific admin.
agency-admin:client:freezeClientFreezes the target player in place.
agency-admin:client:healClientRestores target's HP/armor.
agency-admin:client:reviveClientRevives the target player.
agency-admin:client:teleportClientTeleports the local player to the supplied coords vector.
agency-admin:client:openMenuClientOpens the admin panel UI (requires ACE permission).
agency-admin:client:openToolsMenuClientServer-driven trigger to open the admin tools sub-menu.
agency-admin:client:closeMenuClientServer-driven trigger to close the admin panel UI.
agency-admin:client:openClothingMenuClientServer-driven trigger to open the in-game clothing menu for the player.
agency-admin:server:requestPlayersServerRequests the current online players list for the admin panel.
agency-admin:server:requestPanelPermissionsServerRequests the panel permission table for the rank editor.
agency-admin:server:requestStaffRanksServerRequests the staff ranks dataset for the panel.
agency-admin:server:createRankServerCreates a new staff rank with metadata and permissions.
agency-admin:server:requestMyPermissionsServerCaller requests their own resolved panel permission set.
agency-admin:server:requestSyncServerCaller asks the server to push the standard sync payload (duty/perms/etc.).
agency-admin:server:requestDutyRankServerCaller requests their current admin-duty rank info.
agency-admin:server:requestSpawnedObjectsServerCaller requests the list of admin-spawned world objects.

Integration example

-- In your own anti-cheat script, call the admin panel's freeze event
-- when you detect a cheater:
if detected_cheater then
    TriggerClientEvent('agency-admin:client:freeze', suspectSource, true)
    TriggerClientEvent('agency-admin:client:notify', -1, 'Cheater detected: ' .. GetPlayerName(suspectSource))
end
💡 How to integrate as a Dev Partner:

The events are perfect as "primitives" for anti-cheat, moderation bots, or automated enforcement tools — call them from your server script to freeze/kick/notify without writing your own UI.

10 Agency-Reports V2

Modern report system with live chat per report and AI-assisted replies.

Public events

EventSideDescription
agency-reports:client:notifyClientFires a "new report" notification to a specific admin.
agency-reports:client:openPlayerUIClientOpens the player-side report UI.
agency-reports:client:openAdminUIClientOpens the admin-side report list.
agency-reports:client:teleportClientTeleports the calling admin to the supplied coordinates (for goto actions).
agency-reports:client:healSelfClientFully heals the calling admin's ped.
agency-reports:server:submitReportServerSubmits a new report from outside the UI.
agency-reports:server:requestPlayerDataServerCaller requests their own report payload; optionally opens the player UI on response.
agency-reports:server:requestAdminDataServerAdmin requests the full reports dataset and opens the admin dashboard if permitted.
agency-reports:server:sendChatMessageServerSends a chat message to an open report.

Integration example

-- Auto-create a report when your anti-cheat catches suspicious behavior
if suspicious then
    TriggerServerEvent('agency-reports:server:submitReport', {
        title = 'Auto: Speedhack detected',
        body  = 'Player reached 420 km/h on foot at ' .. os.date(),
        category = 'cheating'
    })
end
💡 How to integrate as a Dev Partner:

Use as a "support ticket" backbone for your whole server. Your custom scripts can auto-open reports when things go wrong (stuck vehicles, duped items, failed SQL saves) for admin review.

11 Agency-Hud

Animated HUD with vehicle dashboard, status bars, speedometer and seatbelt integration.

Client exports

ExportDescription
GetVehicleSettings()Returns the current vehicle settings table.
SetSpeedUnit(unit: string)Switches speedometer between 'mph' and 'kmh'.
SetHunger(value: number)Sets the hunger bar value (0-100).
SetThirst(value: number)Sets the thirst bar value (0-100).
SetStress(value: number)Sets the stress bar value (0-100).
SetMoney(value: number)Sets the displayed cash balance.
SetBank(value: number)Sets the displayed bank balance (for custom economy scripts).
SetJob(label: string)Sets the displayed job label.
SetRank(rank: string)Sets the displayed job rank/grade.
GetDetectedFramework()Returns the framework string ("qb", "esx", "standalone") the HUD auto-detected.

Public events

EventSideDescription
Agency-HUD:client:applyVehicleSettingsPatchClientApplies a partial vehicle-settings patch to local vehicle HUD.
Agency-HUD:client:openAdminMenuClientOpens the HUD admin menu (requires permission).
Agency-HUD:server:checkAdminPermissionServerVerifies caller's admin rights and opens the admin menu on success.
Agency-HUD:server:saveGlobalSettingsServerAdmin-only persistence of global HUD settings; broadcasts sync.
Agency-HUD:server:requestGlobalSettingsServerReturns current global settings to the requesting client.
Agency-HUD:server:requestTimeServerReturns current server time to the caller for the HUD clock.

Integration example

-- Use SetMoney/SetBank from your custom economy script instead of re-rolling your own HUD:
RegisterNetEvent('myEconomy:sync', function(cash, bank)
    exports['Agency-Hud']:SetMoney(cash)
    exports['Agency-Hud']:SetBank(bank)
end)
💡 How to integrate as a Dev Partner:

If you have a custom economy or needs-system, drive the HUD from your own script with these setters instead of hacking around it. The HUD handles animation and persistence for you.

12 Agency-Progressbar

Animated progress bar with glass UI, 4 themes, cancellable actions and client/server exports.

Client exports

ExportDescription
StartProgress(data: table)Starts a progress bar with a full options table. Returns immediately; callbacks fire on completion/cancel.
StopProgress(completed: boolean)Stops the currently running progress bar. Pass true to mark as cancelled.
IsProgressActive()Returns true if a progress bar is currently shown.
GetProgressPercentage()Returns the current fill percentage (0-100).
SetProgressTheme(theme: string)Switches theme at runtime: 'modern', 'neon', 'minimal' or 'classic'.
SetProgressPosition(position: string)Changes position: 'top', 'bottom', 'center'.
TryReload(usedItem?: string)Plays the ESX-style reload sequence.
UseConsumable(itemName: string, isDrink: boolean)Plays the eat/drink animation with progress bar.

Server exports

ExportDescription
StartProgressForPlayer(playerId: number, data: table)Trigger a progress bar on a specific client from the server.
StopProgressForPlayer(playerId: number, completed?: boolean)Cancels a specific player's progress bar remotely.
StartProgressForAllPlayers(data: table)Broadcasts a progress bar to every connected client.
StopProgressForAllPlayers(completed?: boolean)Cancels every player's progress bar (e.g. round end).

Public events

EventSideDescription
Agency:Progressbar:LoadSettingsClientLoads per-player UI settings (position, color, scale, style) from DB into the client.
agency-progressbar:client:startClientStarts the progress bar on the receiving client with the supplied data.
agency-progressbar:client:stopClientStops the active progress bar with a completion flag.
agency:consumables:useFoodClientInventory bridge to consume a food item (animation + secured server apply).
agency:consumables:useDrinkClientInventory bridge to consume a drink item (animation + secured server apply).
Agency:Progressbar:SaveSettingsServerValidates and persists the player's progress bar UI settings to the DB.
agency-progressbar:server:startServerServer-side trigger to start a progress bar on a target (or self).
agency-progressbar:server:stopServerServer-side trigger to stop a progress bar on a target (or self).
agency:reload:requestServerValidates ammo/weapon/item before granting a reload to the requesting player.
agency:consumables:applyServerValidates inventory, removes one item and applies hunger/thirst gains.

Integration example

-- Generic "picking a lock" progress, with full control over styling
exports['Agency-Progressbar']:StartProgress({
    label    = 'Picking lock...',
    duration = 6000,
    icon     = 'fa-solid fa-key',
    theme    = 'neon',
    cancellable = true,
    onComplete = function() TriggerServerEvent('myheist:server:lockpicked', doorId) end,
    onCancel   = function() print('Player cancelled') end
})
💡 How to integrate as a Dev Partner:

Use anywhere you would normally show "doing thing X for Y seconds". Replaces multiple legacy progress-bar resources with a single consistent UI across your whole server.

13 Agency-Notify

Notification system with V1/V2 styles, AgencyAI smart priority, spam protection and database persistence.

Client exports

ExportDescription
Notify(data: { title, text, type, duration, ... })Shows a notification. Accepts { type, title, text, duration, icon, color }.

Public events

EventSideDescription
Agency:Notify:SendClientSame as the export — lets you use the legacy Trigger-based pattern.
Agency:Notify:LoadSettingsClientApplies per-player saved UI settings (position, color, scale, style) from the server.
Agency:Notify:SaveSettingsServerValidates and persists the player's notify settings (position, accent, scale, style).

Integration example

-- From anywhere in your code, show a toast:
exports['Agency-Notify']:Notify({
    type     = 'success',
    title    = 'Item received',
    text     = 'You picked up 5x cola',
    duration = 3000
})

-- Server-side push to one player:
TriggerClientEvent('Agency:Notify:Send', targetSource, {
    type = 'error', title = 'Action failed', text = 'Not enough money'
})
💡 How to integrate as a Dev Partner:

Replace every other notification resource on your server (qb-notify, esx_notify, mythic_notify, okok-notify, etc.) with one consistent look. The AgencyAI priority system auto-rate-limits spammy notifications.

14 Agency-Seatbelt

Seatbelt with ejection physics, 3D sounds, multi-occupant support and HUD integration.

Client exports

ExportDescription
enableSeatbelt()Forces the seatbelt on (use e.g. on police arrest).
disableSeatbelt()Forces the seatbelt off (cutscenes, rp scenarios).
toggleSeatbelt()Toggles the seatbelt (what the default keybind does).
isSeatbeltOn()Returns true if the player currently has their seatbelt on.

Integration example

-- In your custom HUD (or any script), drive the seatbelt icon from the export:
CreateThread(function()
    while true do
        Wait(500)
        local on = exports['Agency-Seatbelt']:isSeatbeltOn()
        SendNUIMessage({ action = 'seatbelt', state = on })
    end
end)
💡 How to integrate as a Dev Partner:

Plug the state into your own HUD, or force-enable at the start of a police chase / heist escape. The force-enable/disable exports are great for RP moments.

15 Agency-Elevator

Realistic elevator system with Liquid Glass UI and a configurator.

Public events

EventSideDescription
Agency-Elevator:server:requestTravelServerServer-validated request to travel between floors.
Agency-Elevator:server:travelCompleteServerAcknowledges client arrival and pushes the 'arrived at floor' notification.
Agency-Elevator:server:requestElevatorsServerSyncs the loaded elevator list from the database to the requesting client.
Agency-Elevator:server:saveElevatorServerPermission-gated upsert of an elevator (id/label/floors) into MySQL.
Agency-Elevator:server:loadElevatorServerSpawns/loads a saved elevator from the database.
Agency-Elevator:server:saveSettingsServerPersists UI settings (position/scale/accent color) to MySQL and re-syncs all clients.
Agency-Elevator:client:startTravelClientStarts an elevator travel cutscene for the player.
Agency-Elevator:client:applySettingsClientPushes UI settings (accent/scale/position) into the NUI.
Agency-Elevator:client:openConfiguratorClientOpens the in-game elevator configurator (admin only).
Agency-Elevator:client:refreshConfiguratorClientRefreshes the open configurator after a save/delete without closing it.

Integration example

-- In your house/apartment script, start an elevator travel when player reaches the "go to penthouse" zone
TriggerEvent('Agency-Elevator:client:startTravel', {
    from = 'lobby',
    to   = 'penthouse_42'
})
💡 How to integrate as a Dev Partner:

Perfect inside apartment/housing scripts, police HQ, hospital, or any multi-floor interior. Use the configurator to place elevators visually without touching config files.

16 Agency-Loadingscreen

Glassmorphism loading screen with YouTube/MP4 video, tips, progress animations and framework detection.

Integration example

-- Customize dynamically: set the logo and video via config.lua
-- Override tips translation via the translations.lua file
-- No code events needed — it's a drop-in resource
ensure Agency-Loadingscreen
💡 How to integrate as a Dev Partner:

Replace any existing loading screen resource. Point config.lua to your own MP4 or a YouTube video ID and you're done — the "waits for player-loaded event" feature means the loading screen disappears exactly when the server is ready.

17 Agency-Sit

Sit on any chair in the GTA world with automatic prop detection and smart angle matching.

Integration example

-- Bind "sit down" to a roleplay-command or menu entry
RegisterCommand('sit', function() TriggerEvent('agency-sit:client:sitDown') end, false)
RegisterCommand('stand', function() TriggerEvent('agency-sit:client:standUp') end, false)
💡 How to integrate as a Dev Partner:

Tie sit/stand into your RP menu, police interrogation script, or restaurant/bar job for seated animations with zero configuration.

Need help? Join our Discord community for support!

Join Discord