Agency Docs

Partenaires dev

S'intégrer aux scripts Agency

Vous développez votre propre script FiveM et voulez le relier aux nôtres ? Chaque export et chaque événement public est listé ici, avec un extrait Lua à copier.

Les exports permettent à votre script d'appeler une fonction dans le nôtre : exports['script-name']:FunctionName(args), côté client comme côté serveur. Les événements font l'inverse : déclenchés avec TriggerEvent ou TriggerServerEvent, écoutés avec RegisterNetEvent.

01Agency-Phone

Téléphone multi-framework complet avec SMS, appels, fil social, mail, caméra, wallet et paiement AgencyPay.

À utiliser dans tout script de shop/braquage/job pour un flux de paiement propre dans le téléphone au lieu de débiter l'argent directement. Idéal aussi pour les notifications en jeu avec accept/deny (p. ex. demandes de taxi, appels dispatch).

Documentation complète

Exports client

IsPhoneOpen()

Renvoie true si l'UI du téléphone est actuellement ouverte.

Voir l'exemple

Ignore l'ouverture d'un menu si le téléphone est déjà affiché.

RegisterCommand('openmymenu', function() if exports['agency-phone']:IsPhoneOpen() then return end TriggerEvent('myresource:openMenu') end)
IsPhonePoweredOn()

Renvoie true si le téléphone est allumé.

Voir l'exemple

Met en pause la synchro tant que le téléphone est éteint par le joueur.

CreateThread(function() while true do Wait(2000) if not exports['agency-phone']:IsPhonePoweredOn() then print('Phone off, pausing background sync') end end end)
GetPhoneData()

Renvoie la table brute des données du téléphone.

Voir l'exemple

Affiche toute la table de données du téléphone pour le debug.

RegisterCommand('phonedebug', function() local data = exports['agency-phone']:GetPhoneData() print(json.encode(data, { indent = true })) end)
GetPhonePropEntity()

Renvoie le handle de l'entité du prop de téléphone tenu, ou 0 si invisible.

Voir l'exemple

Masque brièvement l'entité du téléphone sans toucher à la logique.

CreateThread(function() Wait(500) local prop = exports['agency-phone']:GetPhonePropEntity() if prop ~= 0 and DoesEntityExist(prop) then SetEntityVisible(prop, false, false) end end)
IsPhoneExpanded()

Renvoie true si le téléphone est agrandi à l'écran.

Voir l'exemple

Ancien alias qui bloque un mini-jeu tant que le téléphone est ouvert.

AddEventHandler('myresource:beforeMinigame', function() if exports['agency-phone']:IsPhoneExpanded() then TriggerEvent('chat:addMessage', { args = { 'Close phone first' } }) return end end)
HasCarrierContract()

Renvoie true si le joueur dispose d'un data plan opérateur actif.

Voir l'exemple

Avertit le joueur quand aucun forfait data n'est actif.

RegisterCommand('checkdata', function() if not exports['agency-phone']:HasCarrierContract() then TriggerEvent('chat:addMessage', { args = { 'No data plan, buy one in the store app' } }) end end)
GetPhoneState()

Renvoie l'objet complet de l'état du téléphone.

Voir l'exemple

Met l'état du téléphone en cache seulement si ouvert, allumé et synchronisé.

AddEventHandler('myresource:saveProfile', function() local state = exports['agency-phone']:GetPhoneState() if state.isOpen and state.poweredOn and state.syncEnabled then TriggerServerEvent('myresource:server:cachePhoneState', state) end end)
HasPhone()

Renvoie true si le joueur possède un item téléphone.

Voir l'exemple

Bloque la commande d'appel d'urgence sans téléphone dans l'inventaire.

RegisterCommand('callemergency', function() if not exports['agency-phone']:HasPhone() then TriggerEvent('chat:addMessage', { args = { 'You need a phone first' } }) return end TriggerEvent('myresource:client:openEmergency') end)
RegisterAgencyPayPoint(id, data)

Enregistre un terminal marchand AgencyPay récurrent.

Voir l'exemple

Crée un terminal Agency Pay au runtime pour la caisse du garage.

CreateThread(function() exports['agency-phone']:RegisterAgencyPayPoint('mechanic_main', { coords = vector3(-211.74, -1314.59, 31.29), label = 'Mechanic Pay Point', amount = 250, receiver = 'mechanic' }) end)
RemoveAgencyPayPoint(id)

Supprime un terminal AgencyPay précédemment enregistré.

Voir l'exemple

Retire le point de paiement enregistré quand la boutique ferme.

AddEventHandler('myresource:onShopClosed', function(shopId) exports['agency-phone']:RemoveAgencyPayPoint('mechanic_main') print('Removed pay point for shop ' .. shopId) end)
StartAgencyPayCheckout(data)

Ouvre la fiche de paiement AgencyPay pour un paiement carte sécurisé.

Voir l'exemple

Ouvre le téléphone et lance un petit paiement de pourboire Agency Pay.

RegisterCommand('paytip', function() exports['agency-phone']:StartAgencyPayCheckout({ amount = 25, receiver = 'staff_tip_jar', label = 'Staff tip', memo = 'Thanks for great service' }) end)
StartCall(contactData)

Démarre un appel pma-voice à partir d'une table de contact.

Voir l'exemple

Lance un appel sortant au contact reçu par dispatch.

RegisterNetEvent('myresource:client:incomingDispatch', function(payload) exports['agency-phone']:StartCall({ name = payload.callerName or 'Dispatch', number = payload.callerNumber or '911', anonymous = false }) end)
PhoneNotification(title, text, icon, color, timeout, acceptIcon, denyIcon)

Affiche une notification téléphone avec boutons accept/deny optionnels.

Voir l'exemple

Affiche une notif bloquante d'acceptation/refus pour un contrat de remorquage.

CreateThread(function() local accepted = exports['agency-phone']:PhoneNotification( 'Tow request', 'Accept the contract?', 'truck', '#FF8800', 15000, 'check', 'x' ) if accepted then TriggerServerEvent('myresource:server:acceptTow') end end)
RegisterApp(config)

Ajoute une app de votre propre resource à l'écran d'accueil du téléphone et au Store. Renvoie true, ou false et une erreur. Voir Apps Personnalisées.

UnregisterApp(id)

Retire une app ajoutée avec RegisterApp. Se fait tout seul quand la resource qui l'a enregistrée s'arrête.

GetRegisteredApps()

Renvoie la table de toutes les apps enregistrées par d'autres resources, indexée par id.

ClosePhone()

Ferme le téléphone, par exemple avant l'ouverture de votre propre interface.

IsPhoneRadioActive()

Renvoie deux valeurs : true tant que la radio du téléphone joue, et la station en cours.

StopPhoneRadio()

Arrête la radio du téléphone.

Exports serveur

SendMail(identifier, mailData)

Envoie un mail à un joueur (en ligne ou hors ligne).

Voir l'exemple

Envoie un mail de reçu à un joueur via son identifiant principal.

RegisterNetEvent('myresource:server:sendReceipt', function(targetId) local identifier = GetPlayerIdentifier(targetId, 0) exports['agency-phone']:SendMail(identifier, { sender = '[email protected]', subject = 'Your receipt', body = 'Thanks for your purchase!' }) end)
AddChirp(chirpData)

Publie un message dans le feed Pulse (chirper).

Voir l'exemple

Publie une annonce de prime sur Chirper côté serveur.

RegisterNetEvent('myresource:server:postBounty', function(targetName) local src = source exports['agency-phone']:AddChirp({ identifier = GetPlayerIdentifier(src, 0), firstName = 'Bounty', lastName = 'Office', message = 'Wanted: ' .. targetName, postId = ('bounty_%s'):format(GetGameTimer()) }) end)
usePhone(event, item, inventory, slot, data)

Hook ox_inventory enregistré quand ESX+ox_inventory est détecté ; ouvre le phone pour le porteur.

Voir l'exemple

S'accroche à usingItem d'ox_inventory pour ouvrir le téléphone.

exports.ox_inventory:registerHook('usingItem', function(payload) if payload.item.name ~= 'phone' then return end return exports['agency-phone']:usePhone('inventory', payload.item, payload.inventory, payload.slot) end, { itemFilter = { phone = true } })
VerifyAgencyPayCharge(source, requestId, minAmount)

Confirme côté serveur que ce joueur a payé le paiement Agency Pay portant cet id dans les 60 dernières secondes, pour au moins minAmount, puis consomme le paiement pour qu'il ne compte qu'une fois. requestId est l'id passé à StartAgencyPayCheckout. Renvoie true et le montant, ou false. À appeler avant de remettre la marchandise.

Événements

agency-phone:client:notify

Affiche une notification phone (title, text, icon, color, timeout, silent).

Voir l'exemple

Envoie un toast non bloquant : le véhicule est prêt.

TriggerEvent('agency-phone:client:notify', 'Heads up', 'Vehicle ready for pickup', 'car', '#22cc88', 5000, false)
agency-phone:client:usePhoneItem

Déclenche l'ouverture du phone quand l'item d'inventaire phone est utilisé.

Voir l'exemple

Transmet un event d'utilisation d'item à l'ouverture du téléphone.

AddEventHandler('myresource:client:onItemUsed', function(itemName) if itemName == 'phone' then TriggerEvent('agency-phone:client:usePhoneItem') end end)
agency-phone:client:openApp

Demande au phone de naviguer vers une app personnalisée par id (utilisé par les modules d'apps).

Voir l'exemple

Ouvre directement l'app bancaire personnalisée via son id.

RegisterCommand('openbank', function() TriggerEvent('agency-phone:client:openApp', 'banking') end)
agency-phone:client:newMailNotify

Notifie le client d'un mail fraîchement reçu.

Voir l'exemple

Écoute les notifs de nouveau mail et les log pour le debug.

AddEventHandler('agency-phone:client:newMailNotify', function(mail) print(('New mail from %s: %s'):format(mail.sender, mail.subject)) end)
agency-phone:server:requestPhoneData

Demande une synchronisation fraîche des données phone pour le joueur appelant.

Voir l'exemple

Demande au serveur une nouvelle synchro complète des données du téléphone.

RegisterCommand('refreshphone', function() TriggerServerEvent('agency-phone:server:requestPhoneData') end)
agency-phone:server:cancelCall

Annule ou termine un appel actif.

Voir l'exemple

Raccroche l'appel actif via une touche ou commande chat personnalisée.

RegisterCommand('hangup', function() TriggerServerEvent('agency-phone:server:cancelCall') end)
agency-phone:server:sendMessage

Envoie un SMS (newMsg, targetNumber).

Voir l'exemple

Envoie rapidement un SMS à un numéro cible depuis le chat.

RegisterCommand('quicksms', function(_, args) local target, msg = args[1], table.concat(args, ' ', 2) TriggerServerEvent('agency-phone:server:sendMessage', { message = msg }, target) end)
agency-phone:server:saveSetting

Persiste une seule paire clé/valeur de réglage phone pour le joueur.

Voir l'exemple

Sauvegarde un paramètre du téléphone dès que le joueur le change.

AddEventHandler('myresource:client:onSettingChanged', function(key, value) TriggerServerEvent('agency-phone:server:saveSetting', key, value) end)
agency-phone:server:airdropPay

Effectue un transfert Agency Airdrop vers un joueur proche.

Voir l'exemple

Déclenche un Agency Airdrop vers les joueurs proches avec le montant saisi.

RegisterCommand('airdrop', function(_, args) local amount = tonumber(args[1]) or 0 TriggerServerEvent('agency-phone:server:airdropPay', amount, 'Tip via airdrop') end)
agency-phone:server:buyDataPlan

Achète un data plan opérateur pour le joueur (price, planName).

Voir l'exemple

Achète un forfait data quand le joueur le sélectionne dans un menu custom.

AddEventHandler('myresource:client:onPlanSelected', function(plan) TriggerServerEvent('agency-phone:server:buyDataPlan', plan.price, plan.name) end)
agency-phone:dispatch:create

Crée un dispatch phone à partir d'un appel/SMS d'urgence.

Voir l'exemple

Crée une entrée dispatch téléphone à partir d'un appel d'urgence entrant.

RegisterNetEvent('myresource:server:dispatchFromCall', function(payload) TriggerEvent('agency-phone:dispatch:create', { source = source, coords = payload.coords, type = 'robbery', title = '24/7 Robbery' }) end)

02Agency-Pad

Tablette AgencyOS avec un écosystème d'apps complet. Enregistre tes propres apps via config.lua.

Parfait pour les dashboards admin, les apps de gestion d'entreprise, les cartes de territoire de gang ou toute UI custom dont tes joueurs ont besoin dans GTA, le tout dans un beau shell de tablette sans travail supplémentaire.

Documentation complète

Exports client

IsPadOpen()

Renvoie true si l'UI de la tablette est ouverte (vérifier l'état de la tablette avant d'afficher des UI).

Voir l'exemple

Évite de rouvrir l'UI tablette si la tablette est déjà ouverte.

RegisterCommand('opentablet', function() if exports['agency-pad']:IsPadOpen() then return end TriggerEvent('myresource:openTablet') end)
IsPadPoweredOn()

Renvoie true si la tablette est allumée.

Voir l'exemple

Met en pause le polling de la flotte si la tablette est éteinte.

CreateThread(function() while true do Wait(3000) if not exports['agency-pad']:IsPadPoweredOn() then print('Tablet powered down, pausing fleet poll') end end end)
GetPadData()

Renvoie la table PadData côté client complète.

Voir l'exemple

Affiche toute la table de données tablette côté client.

RegisterCommand('paddebug', function() local data = exports['agency-pad']:GetPadData() print(json.encode(data, { indent = true })) end)
GetPadPropEntity()

Renvoie le handle de l'entité du prop tablette tenu, ou 0 si invisible.

Voir l'exemple

Masque brièvement le prop tablette pendant une cinématique personnalisée.

CreateThread(function() Wait(750) local prop = exports['agency-pad']:GetPadPropEntity() if prop ~= 0 and DoesEntityExist(prop) then SetEntityVisible(prop, false, false) end end)
IsPadExpanded()

Alias de IsPadOpen() conservé pour la compatibilité ascendante.

Voir l'exemple

Ancien alias qui bloque un mini-jeu tant que la tablette est ouverte.

AddEventHandler('myresource:client:beforeMinigame', function() if exports['agency-pad']:IsPadExpanded() then return end TriggerEvent('myresource:client:startMinigame') end)
HasCarrierContract()

Renvoie true si le joueur a un data plan opérateur actif sur la tablette.

Voir l'exemple

Avertit le joueur si aucun forfait data n'est actif sur la tablette.

RegisterCommand('checkpaddata', function() if not exports['agency-pad']:HasCarrierContract() then TriggerEvent('chat:addMessage', { args = { 'No tablet data plan, buy one in Settings' } }) end end)
GetPadState()

Renvoie la table { isOpen, poweredOn, syncEnabled } résumant l'état actuel de la tablette.

Voir l'exemple

Met l'état tablette en cache uniquement si ouverte et allumée.

AddEventHandler('myresource:saveSession', function() local state = exports['agency-pad']:GetPadState() if state.isOpen and state.poweredOn then TriggerServerEvent('myresource:server:cachePadState', state) end end)
HasPad()

Renvoie true si le joueur possède l'item tablette configuré dans son inventaire.

Voir l'exemple

Bloque la commande UI dispatch sans tablette dans l'inventaire.

RegisterCommand('opendispatch', function() if not exports['agency-pad']:HasPad() then TriggerEvent('chat:addMessage', { args = { 'You need a tablet first' } }) return end TriggerEvent('myresource:client:openDispatch') end)
RegisterAgencyPayPoint(id, data)

Enregistre un terminal Agency Pay au runtime à des coordonnées (markers, blip, checkout payload).

Voir l'exemple

Crée un terminal Agency Pay au runtime dans le hall de l'hôpital.

CreateThread(function() exports['agency-pad']:RegisterAgencyPayPoint('hospital_lobby', { coords = vector3(307.7, -1433.4, 30.0), label = 'Hospital Bill', amount = 500, receiver = 'medical' }) end)
RemoveAgencyPayPoint(id)

Supprime un terminal Agency Pay précédemment enregistré par id.

Voir l'exemple

Retire un point de paiement tablette quand son lieu ferme.

AddEventHandler('myresource:onLocationClosed', function(locationId) exports['agency-pad']:RemoveAgencyPayPoint(locationId) end)
StartAgencyPayCheckout(data)

Ouvre la tablette (si besoin) et lance un checkout Agency Pay avec le payload de paiement fourni.

Voir l'exemple

Ouvre la tablette et lance un paiement Agency Pay pour la taxe foncière.

RegisterCommand('paybill', function() exports['agency-pad']:StartAgencyPayCheckout({ amount = 1500, receiver = 'gov_taxes', label = 'Property tax', memo = 'Quarterly tax' }) end)
StartCall(contactData)

Démarre un appel sortant tablette vers le contact fourni ({ name, number, ... }).

Voir l'exemple

Lance un appel sortant sur la tablette à la réception d'un dispatch.

RegisterNetEvent('myresource:client:dispatchOnTablet', function(payload) exports['agency-pad']:StartCall({ name = payload.name or 'Field Agent', number = payload.number, anonymous = false }) end)
PhoneNotification(title, text, icon, color, timeout, acceptIcon, denyIcon)

Affiche une notification d'action avec boutons accept/deny ; bloque jusqu'à la réponse et renvoie true/false.

Voir l'exemple

Affiche une notif tablette bloquante d'accept/refus pour une livraison.

CreateThread(function() local accepted = exports['agency-pad']:PhoneNotification( 'Mission ready', 'Start the delivery now?', 'box', '#3399ff', 12000, 'check', 'x' ) if accepted then TriggerServerEvent('myresource:server:startDelivery') end end)
RegisterApp(config)

Ajoute une app de votre propre resource à l'écran d'accueil du pad et au Store. Renvoie true, ou false et une erreur.

UnregisterApp(id)

Retire une app ajoutée avec RegisterApp.

GetRegisteredApps()

Renvoie la table de toutes les apps enregistrées par d'autres resources, indexée par id.

ClosePad()

Ferme le pad, par exemple avant l'ouverture de votre propre interface.

ClosePhone()

Identique à ClosePad(), sous le nom qu'utilise l'Agency Phone, pour que le même code d'intégration fonctionne avec les deux.

IsPhoneRadioActive()

Renvoie deux valeurs : true tant que la radio du pad joue, et la station en cours.

StopPhoneRadio()

Arrête la radio du pad.

Exports serveur

SendMail(identifier, mailData)

Envoie un mail à la boîte principale du joueur via identifier (renvoie le succès).

Voir l'exemple

Envoie un mail de notification de facture via l'identifiant du joueur.

RegisterNetEvent('myresource:server:sendInvoiceMail', function(targetId) local identifier = GetPlayerIdentifier(targetId, 0) exports['agency-pad']:SendMail(identifier, { sender = '[email protected]', subject = 'New invoice available', body = 'Open the tablet to review your invoice.' }) end)
usePad(event, item, inventory, slot, data)

Hook ox_inventory enregistré quand ESX+ox_inventory est détecté ; ouvre la tablette pour le porteur.

Voir l'exemple

S'accroche à ox_inventory pour ouvrir la tablette via le helper.

exports.ox_inventory:registerHook('usingItem', function(payload) if payload.item.name ~= 'tablet' then return end return exports['agency-pad']:usePad('inventory', payload.item, payload.inventory, payload.slot) end, { itemFilter = { tablet = true } })
usePhone(event, item, inventory, slot, data)

Hook ox_inventory pour l'id legacy de l'item phone ; ouvre la tablette pour le porteur.

Voir l'exemple

Redirige l'ancien item phone pour ouvrir l'UI tablette à la place.

exports.ox_inventory:registerHook('usingItem', function(payload) if payload.item.name ~= 'phone' then return end return exports['agency-pad']:usePhone('inventory', payload.item, payload.inventory, payload.slot) end, { itemFilter = { phone = true } })
GetMarketPrices()

Renvoie les cours actuels des actions et des cryptos, indexés par identifiant de marché.

PushPadData(source)

Envoie une copie à jour des données de la tablette au pad de ce joueur. Renvoie false si elle n'a pas pu être construite.

Événements

agency-pad:client:notify

Affiche une notification tablette (title, text, icon, color, timeout, silent).

Voir l'exemple

Affiche un toast tablette non bloquant pour une mission débloquée.

TriggerEvent('agency-pad:client:notify', 'Job update', 'New mission unlocked', 'briefcase', '#22cc88', 5000, false)
agency-pad:client:usePadItem

Ouvre la tablette quand l'item d'inventaire est utilisé.

Voir l'exemple

Transmet un event d'utilisation d'item à l'ouverture de la tablette.

AddEventHandler('myresource:client:onItemUsed', function(itemName) if itemName == 'tablet' then TriggerEvent('agency-pad:client:usePadItem') end end)
agency-pad:client:openApp

À déclencher côté client pour ouvrir une app spécifique dans la tablette.

Voir l'exemple

Ouvre directement l'app de gestion de flotte personnalisée.

RegisterCommand('openfleet', function() TriggerEvent('agency-pad:client:openApp', 'fleet') end)
agency-pad:client:newMailNotify

Notifie le client d'un mail fraîchement reçu.

Voir l'exemple

Écoute les notifs de nouveau mail tablette et les log localement.

AddEventHandler('agency-pad:client:newMailNotify', function(mail) print(('Tablet mail from %s: %s'):format(mail.sender, mail.subject)) end)
agency-pad:client:hourlyPaycheck

Notifie le client d'un événement de paye business horaire.

Voir l'exemple

Réagit à un paycheck horaire d'entreprise déclenché par la tablette.

AddEventHandler('agency-pad:client:hourlyPaycheck', function(payload) print(('Hourly paycheck: $%s from %s'):format(payload.amount, payload.businessName)) end)
agency-pad:server:requestPadData

Demande une synchronisation fraîche des données tablette pour le joueur appelant.

Voir l'exemple

Demande au serveur une nouvelle synchro complète des données tablette.

RegisterCommand('refreshpad', function() TriggerServerEvent('agency-pad:server:requestPadData') end)
agency-pad:server:sendMessage

Envoie un SMS (newMsg, targetNumber).

Voir l'exemple

Envoie un SMS depuis la tablette via une commande et un numéro cible.

RegisterCommand('quicksmsTab', function(_, args) local target, msg = args[1], table.concat(args, ' ', 2) TriggerServerEvent('agency-pad:server:sendMessage', { message = msg }, target) end)
agency-pad:server:airdropPay

Effectue un transfert Agency Airdrop vers un joueur proche.

Voir l'exemple

Déclenche un Agency Airdrop vers les joueurs proches via la tablette.

RegisterCommand('airdroppad', function(_, args) local amount = tonumber(args[1]) or 0 TriggerServerEvent('agency-pad:server:airdropPay', amount, 'Tablet airdrop') end)
agency-pad:server:buyDataPlan

Achète un data plan opérateur pour le joueur.

Voir l'exemple

Achète un forfait data tablette quand le joueur le choisit dans un UI custom.

AddEventHandler('myresource:client:padPlanSelected', function(plan) TriggerServerEvent('agency-pad:server:buyDataPlan', plan.price, plan.name) end)
agency-pad:dispatch:create

Crée un dispatch tablette à partir d'un appel/SMS d'urgence.

Voir l'exemple

Crée une entrée dispatch tablette à partir d'un appel d'urgence entrant.

RegisterNetEvent('myresource:server:padDispatchFromCall', function(payload) TriggerEvent('agency-pad:dispatch:create', { source = source, coords = payload.coords, type = 'medical', title = 'Medical assistance' }) end)
agency-pad:server:biz:create

Crée un nouveau business/organisation pour le joueur.

Voir l'exemple

Crée une nouvelle entreprise via une commande in-game personnalisée.

RegisterCommand('startbiz', function() TriggerServerEvent('agency-pad:server:biz:create', { name = 'Bennys Repair', type = 'mechanic', location = 'sandy_shores' }) end)
agency-pad:server:biz:adminCreate

L'admin crée un business pour le compte d'un autre joueur.

Voir l'exemple

Transmet une commande admin pour créer une entreprise pour un autre joueur.

RegisterNetEvent('myresource:server:adminCreateBiz', function(targetSrc, payload) TriggerEvent('agency-pad:server:biz:adminCreate', targetSrc, payload) end)
agency-pad:server:biz:startMission

Lance une mission business configurée pour le joueur.

Voir l'exemple

Lance une mission d'entreprise configurée pour le joueur appelant.

RegisterCommand('bizmission', function() TriggerServerEvent('agency-pad:server:biz:startMission', { bizId = 12, missionId = 'delivery_route_a' }) end)
agency-pad:server:applyToListing

Envoie une candidature à une annonce business.

Voir l'exemple

Postule à une annonce d'emploi tablette via son id.

RegisterCommand('apply', function(_, args) local listingId = tonumber(args[1]) TriggerServerEvent('agency-pad:server:applyToListing', listingId, { coverNote = 'Available immediately' }) end)
agency-pad:server:createMechanicInvoice

Crée un brouillon de facture mécanicien.

Voir l'exemple

Crée un brouillon de facture mécanicien pour une plaque et un montant.

RegisterCommand('mechinvoice', function(_, args) TriggerServerEvent('agency-pad:server:createMechanicInvoice', { plate = args[1], amount = tonumber(args[2]) or 250, notes = 'Brake replacement' }) end)
agency-pad:server:sendMechanicInvoicePay

Envoie une facture mécanicien à un client pour paiement.

Voir l'exemple

Envoie une facture mécanicien finalisée au client pour paiement.

AddEventHandler('myresource:client:onInvoiceConfirmed', function(invoice) TriggerServerEvent('agency-pad:server:sendMechanicInvoicePay', invoice.id, invoice.targetSrc) end)
agency-pad:server:mdtCreateInvoice

Le MDT crée une amende/facture pour un citoyen.

Voir l'exemple

Crée une amende MDT pour un citoyen via un net event personnalisé.

RegisterNetEvent('myresource:server:mdtFine', function(targetSrc, amount, reason) TriggerEvent('agency-pad:server:mdtCreateInvoice', { target = targetSrc, amount = amount, reason = reason, officer = source }) end)

03Agency-Watch

Désormais avec AgencyOS27 : une mise à jour gratuite pour tous ceux qui ont déjà la montre. Une vraie montre connectée pour FiveM, pas un HUD. Dix cadrans, un Studio pour le boîtier, le bracelet et les couleurs, anneaux d'activité, chronomètre, minuteur, réveil, météo, boussole, compteur, quatre jeux, un centre de contrôle et un app store, le tout sans aucune autre resource. Angy se trouve sur la couronne et pilote la montre à la demande, avec des règles fixes et sans IA. Un Agency Phone détecté débloque appels, messages, mail, contacts et Agency Pay au poignet, et ouvre la montre à vos propres apps. Gratuit, QBCore / Qbox / ESX / standalone, dix langues.

Documentation complète

Exports client

OpenWatch(mitte)

Ouvre la montre. Passez true pour l'ouvrir au centre de l'écran plutôt que dans son coin configuré.

CloseWatch()

Ferme la montre et libère le focus NUI.

ToggleWatch()

Ferme la montre si elle est ouverte, sinon l'ouvre.

IsWatchOpen()

Renvoie true tant que l'interface de la montre est à l'écran.

IsWatchLinked()

Renvoie false si le joueur a désactivé la liaison avec l'Agency Phone dans le centre de contrôle.

RunWatchAction()

Déclenche l'action associée au bouton d'action orange (Config.ActionButton).

GetWatchSettings()

Renvoie la table complète des réglages à partir de laquelle l'interface de la montre est construite (thème, cadran, taille, apps, langue).

SetWatchSetting(key, value)

Définit un réglage, l'enregistre par personnage et l'applique immédiatement.

SetWatchSettings(table)

Définit plusieurs réglages à la fois et reconstruit l'interface une seule fois au lieu d'une fois par valeur.

RequestWatchPairing()

Demande au serveur un code d'appairage pour l'app Companion. La réponse arrive sous forme d'événement, pas de valeur de retour.

ShowUpdate()

Ouvre l'écran de mise à jour logicielle d'AgencyOS.

HandlesDeath()

Renvoie true si la montre affiche l'écran d'urgence à la mort. L'Agency Phone le vérifie pour que les deux appareils ne l'affichent jamais en même temps.

GetFitness()

Renvoie les valeurs d'activité actuelles de la journée : pas, distance, minutes actives et calories.

SetWatchAppInstalled(id, on)

Installe ou supprime une app pour ce joueur. Comme l'App Store, pour qu'un serveur puisse offrir une app en récompense.

FindWatch()

Fait sonner et s'allumer la montre, comme la fonction de localisation de l'app Companion.

StopFindWatch()

Arrête la sonnerie avant qu'elle ne s'arrête d'elle-même.

IsWatchRinging()

Renvoie true tant que la montre sonne.

Exports serveur

IsPremium(src)

Renvoie true si la montre de ce joueur tourne en version Pro. Le verdict vient de la poignée de main avec l'Agency Phone authentique, jamais du client.

04Agency-Zero

Une quatre places électrique autonome pour FiveM, gratuite. Le Project 0 est un véhicule à part entière, construit de zéro dans Blender avec Sollumz : pas de poignées de porte, des portes qui s'ouvrent en vague, un vrai volant et des pédales pour reprendre la main. Les joueurs l'appellent depuis l'Agency Phone, l'Agency Pad ou l'app Agency Companion sur leur vrai téléphone, et elle vient jusqu'à eux et se gare le long du trottoir à côté d'eux au lieu de partir chercher une place. À l'intérieur, AgencyOS27 tourne sur la tablette du tableau de bord et dans le menu Z : une carte à toucher, Angy, l'assistant intégré, avec des règles fixes et sans IA, à qui l'on parle avec des mots simples, six aides à la conduite avec un interrupteur principal, une reprogrammation par paliers, des puces sonores et des statistiques par voiture et par propriétaire. Chaque voiture porte son propre numéro, lié à son propriétaire dans la base de données, si bien que la propriété, la préparation et chaque réglage survivent à un redémarrage. QBCore, Qbox et ESX sont détectés automatiquement, elle fonctionne aussi en standalone, et tous les textes sont livrés en 27 langues avec l'anglais en base.

Documentation complète

Exports client

ZeroStatus()

Renvoie l'état du Project 0 du joueur : s'il existe, où il se trouve, batterie, autonomie et si un trajet est en cours.

ZeroCall()

Appelle la voiture vers le joueur. Elle s'y rend et se gare le long du trottoir à côté de lui.

ZeroDeliver()

Fait livrer la voiture si elle n'est pas sur la carte. Coûte Config.Remote.deliveryFee, gratuit sans framework.

ZeroGarage()

Renvoie la voiture dans son garage.

ZeroCancel()

Annule un appel ou un trajet en cours.

ZeroFind()

Affiche en bas de l'écran la direction de la voiture pendant Config.Remote.findRadarSeconds secondes.

ZeroDoors(on)

Ouvre les portes avec true, les ferme avec false. Elles bougent en vague, pas toutes en même temps.

ZeroLock(on)

Verrouille la voiture avec true, la déverrouille avec false.

ZeroLights(on)

Allume et éteint les feux.

ZeroBuyInfo()

Indique si le joueur peut acheter un Project 0 et son prix. Celui qui en possède déjà un ne reçoit rien.

ZeroBuy()

Achète un Project 0 pour ce joueur. La voiture lui est liée dans la même étape.

ZeroRefresh()

Relit l'état, pour une interface qui veut des valeurs fraîches sans attendre le prochain tick.

IsRideActive()

Renvoie true tant qu'un trajet autonome est en cours.

CallProjectZero()

Démarre un trajet vers la destination actuelle. Sans destination, le point de passage de la carte est utilisé.

CancelProjectZero()

Termine le trajet. La voiture se range sur le côté et s'arrête.

IsCockpitOpen()

Renvoie true tant que la tablette du tableau de bord est à l'écran.

IsManualOverride()

Renvoie true si le conducteur a pris le volant. Sans cette reprise en main, le Zero ne roule qu'en autonome.

AnyDoorOpen(veh)

Renvoie true si au moins une porte de ce véhicule est ouverte.

OpenDoors(veh, opts)

Ouvre les portes d'un véhicule avec l'animation en vague.

CloseDoors(veh, opts)

Les referme.

AnimateDoors(veh, open, opts)

Ouvre ou ferme selon le second argument, pour du code qui décide à l'exécution.

SoundChipOf(veh)

Renvoie la puce sonore montée sur cette voiture. Changer de puce change le moteur, jamais la radio.

Exports serveur

IsPro(src)

Renvoie true si le Zero de ce joueur tourne en version Pro. Le verdict vient de la poignée de main HMAC avec l'Agency Phone authentique, jamais du client.

ZeroVin(plate)

Renvoie le numéro de véhicule associé à une plaque. Chaque Project 0 en reçoit un à sa remise et le garde pour toujours.

ZeroCarsOf(src)

Renvoie tous les Project 0 que possède ce joueur, avec numéro, plaque, palier de préparation et statistiques.

ZeroSync(src)

Renvoie l'état du registre à ce joueur, par exemple après qu'un autre script a changé la propriété.

Événements

agency-zero:client:rideStarted

Un trajet a commencé. Contient la destination.

agency-zero:client:rideEnded

Le trajet est terminé, annulé ou arrivé.

agency-zero:client:arrived

La voiture a rejoint le joueur et ouvert ses portes.

05Agency-Lifeinvader V3

L’agence publicitaire de la ville : publicités des joueurs sur chaque écran, avec catégories, mises en avant, programmation, brouillons, validation, métier du personnel, rédacteur IA et application pour Agency Phone et Agency Pad.

Convient aux scripts d’entreprise et de métier qui diffusent leurs propres publicités, aux scripts d’événement et de casino qui annoncent ce qui se passe, aux journaux Discord de chaque publicité, aux téléphones et menus radiaux qui ouvrent l’application, ainsi qu’aux outils d’administration qui vérifient les admins Lifeinvader.

Documentation complète

Exports client

OpenApp(tab)

Ouvre l’application sur la page indiquée : 'feed', 'create', 'mine', 'drafts' ou 'settings'. Sans page précisée, elle s’ouvre sur la dernière page utilisée, ou sur le fil d’actualité.

Voir l'exemple

Ouvre l’application sur Nouvelle publicité depuis votre propre menu radial ou téléphone.

-- an entry in your radial menu exports['Agency-LifeinvaderV3']:OpenApp('create')
OpenFeed()

Ouvre l’application sur le fil d’actualité.

Voir l'exemple

Ouvre le flux en direct, par exemple depuis un kiosque à journaux.

exports['Agency-LifeinvaderV3']:OpenFeed()
CloseApp()

Ferme l’application.

Voir l'exemple

Ferme l’application avant l’ouverture de votre propre menu.

exports['Agency-LifeinvaderV3']:CloseApp()
IsOpen()

Vaut true lorsque l’application est ouverte sur ce client.

Voir l'exemple

Empêche votre menu de s’ouvrir par-dessus l’application.

if not exports['Agency-LifeinvaderV3']:IsOpen() then -- open your own menu end

Exports serveur

PostAd(text, opts)

Publie une publicité pour le serveur lui-même : gratuite, jamais soumise à vérification et placée en tête de file. opts : author, category, instant (lance immédiatement), reps, interval, duration et boosted. Renvoie l’identifiant de la publicité, ou nil et un code d’erreur.

Voir l'exemple

Publie une publicité officielle depuis votre script de casino ou d’événement, gratuitement et en tête de la file d’attente.

exports['Agency-LifeinvaderV3']:PostAd('Casino night tonight at 20:00, free entry!', { author = 'Diamond Casino', category = 'events', instant = true, })
GetFeed(limit)

Le fil d’actualité tel qu’affiché dans l’application, du plus récent au plus ancien : id, text, category, boosted, author (nil pour les publicités anonymes), sentAt, created, sent et live.

Voir l'exemple

Consulte les dernières annonces, pour un site web, un journal ou une application téléphonique.

for _, ad in ipairs(exports['Agency-LifeinvaderV3']:GetFeed(10)) do print(ad.id, ad.author or 'anonymous', ad.text) end
GetAd(id)

Une publicité au même format que le fil d’actualité, ou nil.

Voir l'exemple

Recherche une annonce par son numéro.

local ad = exports['Agency-LifeinvaderV3']:GetAd(412) if ad then print(ad.text) end
IsAdmin(source)

Vaut true lorsque le joueur est administrateur Lifeinvader via ACE, son groupe ou son identifiant.

Voir l'exemple

Utilise les droits d’administration de Lifeinvader dans votre propre script.

if exports['Agency-LifeinvaderV3']:IsAdmin(source) then -- show your admin tools end

Événements

agency-lifeinvader:adShown

Événement local sur chaque client lorsqu’une publicité apparaît à l’écran, avec id, text, category, catLabel, icon, author (nil si anonyme), boosted, duration et system (true pour les annonces officielles).

Voir l'exemple

Réagit côté client lorsqu’une annonce apparaît, par exemple sur un panneau d’affichage.

AddEventHandler('agency-lifeinvader:adShown', function(ad) -- ad.text, ad.author, ad.category end)
agency-lifeinvader:adBroadcast

Événement local sur le serveur à chaque diffusion d’une publicité, avec la publicité au format du fil d’actualité. Pratique pour les logs ou un webhook Discord.

Voir l'exemple

Enregistre chaque annonce diffusée sur le serveur.

AddEventHandler('agency-lifeinvader:adBroadcast', function(ad) -- send ad.text to your Discord log end)
agency_lifeinvader:openMenu

Conservé depuis V3 : ouvre l’application sur Nouvelle publicité, pour que les scripts qui ouvraient l’ancien menu continuent de fonctionner.

Voir l'exemple

Ouvre l’application sur la page Nouvelle annonce pour un joueur, comme le faisait l’événement V3.

TriggerClientEvent('agency_lifeinvader:openMenu', source)
agency_lifeinvader:openRecentMenu

Conservé depuis V3 : ouvre l’application sur le fil d’actualité.

Voir l'exemple

Ouvre le fil d’actualité en direct pour un joueur, comme le faisait l’événement V3.

TriggerClientEvent('agency_lifeinvader:openRecentMenu', source)

06Agency-Blackmarket V2

Un marché noir vivant avec des dealers qui se déplacent, un marché en direct, du marchandage, des commandes à récupérer, des courses, un receleur, du blanchiment d'argent et cinq niveaux de réputation.

Convient aux scripts de gangs, de braquages et de drogue qui doivent donner de la réputation ou du crédit, aux outils de police et de dispatch qui réagissent aux transactions et aux déplacements des dealers, et aux menus radiaux ou téléphones qui ouvrent le menu du marché noir.

Documentation complète

Exports client

OpenMenu()

Ouvre le menu de /ablackmarket, par exemple depuis un menu radial ou une application de téléphone. Les mêmes vérifications que pour la commande s'appliquent.

Voir l'exemple

Ouvre le menu du marché noir depuis votre propre menu radial ou votre application de téléphone.

-- an entry in your radial menu exports['Agency-Blackmarket']:OpenMenu()
CloseMenu()

Ferme le menu et rend la souris au jeu.

Voir l'exemple

Ferme le menu, par exemple avant une cinématique à vous.

-- before your own cutscene starts exports['Agency-Blackmarket']:CloseMenu()
IsMenuOpen()

Renvoie true tant que le menu du marché noir est ouvert, chez un dealer ou n'importe où.

Voir l'exemple

Vérifie si le menu est ouvert avant que votre propre interface n'apparaisse.

if exports['Agency-Blackmarket']:IsMenuOpen() then return -- the player is busy in the black market menu end

Exports serveur

GetReputation(source)

Les points de réputation d'un joueur, 0 pour un joueur qui n'en a pas encore.

Voir l'exemple

Ne laisse que les joueurs avec assez de réputation lancer votre job ou votre braquage.

local rep = exports['Agency-Blackmarket']:GetReputation(source) if rep < 150 then return -- this heist needs a known name on the street end
SetReputation(source, value)

Fixe la réputation d'un joueur à une valeur donnée, jamais en dessous de 0. Renvoie true en cas de succès.

Voir l'exemple

Fixe la réputation d'un joueur à une valeur donnée.

-- an admin tool resets a player exports['Agency-Blackmarket']:SetReputation(targetId, 0)
AddReputation(source, amount)

Ajoute de la réputation, ou en retire avec un montant négatif. Un nouveau niveau est annoncé au joueur et à l'application Companion. Renvoie true en cas de succès.

Voir l'exemple

Récompense un job terminé avec de la réputation ; un nouveau niveau est annoncé.

-- a finished drug run earns street reputation exports['Agency-Blackmarket']:AddReputation(source, 15)
GetLevel(source)

Renvoie deux valeurs : le numéro du niveau du joueur (1 à 5 par défaut) et son nom.

Voir l'exemple

Lit le numéro du niveau et son nom, par exemple pour débloquer votre propre contenu.

local level, name = exports['Agency-Blackmarket']:GetLevel(source) if level >= 4 then print(('%s is %s on the street'):format(GetPlayerName(source), name)) end
AddCredit(source, amount)

Ajoute du crédit dealer, que le joueur peut utiliser lors de son prochain achat ou de sa prochaine commande. Renvoie true en cas de succès.

Voir l'exemple

Donne à un joueur du crédit dealer pour son prochain achat ou sa prochaine commande.

-- a gang boss pays out in dealer credit exports['Agency-Blackmarket']:AddCredit(source, 2500)
RelocateDealer(dealerId)

Déplace immédiatement un dealer vers un autre de ses emplacements. Renvoie true s'il a bougé.

Voir l'exemple

Déplace immédiatement un dealer vers un autre de ses emplacements.

-- a tip reached the police: the dealer changes his spot exports['Agency-Blackmarket']:RelocateDealer('vince')
SendDealerAway(dealerId, minutes)

Le dealer disparaît pendant le nombre de minutes indiqué, puis réapparaît à un autre de ses emplacements, comme après une visite de la police.

Voir l'exemple

Éloigne un dealer pendant un moment, comme après une visite de la police.

-- a raid in the area: Marlow goes quiet for 20 minutes exports['Agency-Blackmarket']:SendDealerAway('marlow', 20)
IsDealerPresent(dealerId)

True tant que le dealer se trouve à l'un de ses emplacements et n'est pas parti.

Voir l'exemple

Vérifie si un dealer se trouve en ce moment à l'un de ses emplacements.

if exports['Agency-Blackmarket']:IsDealerPresent('vince') then print('Vince is on the street') end
StartFlashSale(minutes)

Lance une vente flash avec des objets au hasard à prix réduit. Sans minutes, la durée de Config.FlashSale est utilisée.

Voir l'exemple

Lance une vente flash depuis votre propre événement ou planning.

-- the city had a big night: a flash sale for 10 minutes exports['Agency-Blackmarket']:StartFlashSale(10)

Événements

agency-blackmarket:deal

Se déclenche sur le serveur avec (source, kind, data) après chaque transaction. kind vaut buy, sell, launder, order, pickup ou job, et data contient le détail de la transaction, comme le dealer, les objets et le total.

Voir l'exemple

Réagit à chaque transaction, par exemple pour vos propres logs ou une tablette de police.

AddEventHandler('agency-blackmarket:deal', function(source, kind, data) if kind == 'buy' then print(('%s spent %d at %s'):format(GetPlayerName(source), data.total, data.dealer)) end end)
agency-blackmarket:dealerMoved

Se déclenche sur le serveur avec (dealerId, pos, reason) quand un dealer change d'emplacement. reason vaut rotate, return, admin ou export.

Voir l'exemple

Suit les dealers, par exemple pour un job d'indic ou d'enquêteur.

AddEventHandler('agency-blackmarket:dealerMoved', function(dealerId, pos, reason) print(('%s moved to %.1f, %.1f (%s)'):format(dealerId, pos.x, pos.y, reason)) end)
agency-blackmarket:flashSale

Se déclenche sur le serveur avec (items, minutes) au début d'une vente flash. items associe chaque objet en promotion à sa remise en pourcentage.

Voir l'exemple

Annonce une vente flash sur vos propres canaux.

AddEventHandler('agency-blackmarket:flashSale', function(items, minutes) for item, discount in pairs(items) do print(('%s is %d%% off for %d minutes'):format(item, discount, minutes)) end end)

07Agency-Minerjob V2

Un métier de mineur avec sept zones, trois outils, 100 niveaux, des fours, la taille de gemmes, des contrats et un marché aux prix fluctuants, le tout dans un seul menu.

Compatible avec les scripts de quêtes et de succès qui réagissent à l’activité minière, les scripts économiques et de métiers qui consultent les prix du marché, les menus radiaux et les téléphones qui ouvrent le menu, ainsi que les outils d’administration qui définissent les niveaux ou attribuent des XP.

Documentation complète

Exports client

OpenMenu(page)

Ouvre le menu, par exemple depuis un menu radial ou une application de téléphone. page peut être overview (par défaut), market, tools, smelter, cutting ou contracts.

Voir l'exemple

Ouvre le menu sur la page du marché depuis votre menu radial ou votre application de téléphone.

-- an entry in your radial menu exports['Agency-Minerjob']:OpenMenu('market')
CloseMenu()

Ferme le menu et rend la souris au jeu.

Voir l'exemple

Ferme le menu avant l’ouverture de votre propre menu.

exports['Agency-Minerjob']:CloseMenu()
IsMenuOpen()

Vrai lorsque le menu est ouvert.

Voir l'exemple

Empêche votre menu de s’ouvrir par-dessus le menu de minage.

if not exports['Agency-Minerjob']:IsMenuOpen() then -- open your own menu end
IsWorking()

Vrai lorsque le joueur mine ou taille une gemme.

Voir l'exemple

Empêche votre script d’interrompre l’animation de minage ou de découpe.

if exports['Agency-Minerjob']:IsWorking() then return -- no emotes while mining end
GetLevel()

Le niveau de minage du joueur.

Voir l'exemple

Lit le niveau du joueur, par exemple pour un HUD ou une application téléphonique.

local level = exports['Agency-Minerjob']:GetLevel() print('Mining level', level)

Exports serveur

GetLevel(source)

Le niveau de minage d’un joueur, 0 si le joueur est inconnu.

Voir l'exemple

Vérifie le niveau de minage côté serveur avant que votre script n’autorise une action.

if exports['Agency-Minerjob']:GetLevel(source) < 25 then return -- the quarry job needs level 25 end
GetProgress(source)

Niveau et progression sous la forme { level, xp, need, pct, max }.

Voir l'exemple

Lit le niveau et la progression, par exemple pour une application téléphonique ou un tableau des scores.

local p = exports['Agency-Minerjob']:GetProgress(source) print(p.level, p.xp, p.need, p.pct)
AddXp(source, amount)

Ajoute de l’XP, avec les montées de niveau et leur message. Renvoie true si le joueur a été trouvé.

Voir l'exemple

Attribue des XP de minage en récompense pour votre propre quête ou événement.

-- a quest reward exports['Agency-Minerjob']:AddXp(source, 250)
SetLevel(source, level)

Définit le niveau entre 1 et le niveau maximal et le démarre à 0 XP.

Voir l'exemple

Définit le niveau, par exemple depuis votre propre outil d’administration.

exports['Agency-Minerjob']:SetLevel(source, 10)
GetStats(source)

Ce que le joueur a fait jusqu’à présent : { mined, smelted, cut, broken, sold, earned, contracts }.

Voir l'exemple

Lit ce qu’un joueur a extrait et gagné, pour un classement ou des succès.

local stats = exports['Agency-Minerjob']:GetStats(source) print(stats.mined, stats.earned)
GetPrice(item)

Le prix actuel du marché d’un objet à l’unité.

Voir l'exemple

Lit le cours actuel du marché, par exemple pour un ticker boursier ou une boutique qui achète les mêmes objets.

local price = exports['Agency-Minerjob']:GetPrice('gold_bar') print('Gold bar pays', price)

Événements

agency-minerjob:mined

Déclenché sur le serveur après le paiement d’une session de minage, avec source, item, count et la zone minière. Utilisez AddEventHandler pour l’écouter, par exemple pour des quêtes ou des statistiques.

Voir l'exemple

Réagit côté serveur à chaque opération de minage qui a rapporté quelque chose.

AddEventHandler('agency-minerjob:mined', function(source, item, count, area) -- count mined ore for a quest end)
agency-minerjob:sold

Déclenché sur le serveur après une vente, avec source, item, count et le montant total payé.

Voir l'exemple

Réagit côté serveur à chaque vente, pour les logs ou les statistiques.

AddEventHandler('agency-minerjob:sold', function(source, item, count, total) -- log big sales end)
agency-minerjob:contract

Déclenché sur le serveur lorsqu’un contrat a été livré, avec source, item, count et le paiement.

Voir l'exemple

Réagit côté serveur lorsqu’un contrat a été livré.

AddEventHandler('agency-minerjob:contract', function(source, item, count, pay) -- an achievement for delivered contracts end)

08Agency-Repairkit V2

Dégâts de véhicule réalistes avec quatre kits de réparation, des skill checks et un bonus mécanicien.

Convient aux jobs de mécanicien et de dépanneur, aux boutiques qui vendent des kits, et à tout script qui doit réagir à une réparation terminée ou au niveau de dégâts de la voiture qu'un joueur conduit.

Documentation complète

Exports client

IsRepairing()

Renvoie true tant que le joueur local travaille sur un véhicule, par exemple pour garder votre propre menu fermé.

Voir l'exemple

Garde votre propre menu fermé pendant que le joueur répare un véhicule.

if exports['Agency-Repairkit']:IsRepairing() then return -- keep your menu closed while the player works end
GetVehicleCondition(vehicle)

Le moteur, la carrosserie et le réservoir en %, les pneus, la saleté, le niveau de dégâts et si le réservoir fuit. Sans argument, il lit le véhicule dans lequel se trouve le joueur.

Voir l'exemple

Lit l'état du véhicule que le joueur conduit.

local vehicle = GetVehiclePedIsIn(PlayerPedId(), false) local cond = exports['Agency-Repairkit']:GetVehicleCondition(vehicle) if cond and cond.level == 'critical' then print(('Engine %d %%, leaking: %s'):format(cond.engine, tostring(cond.leaking))) end
OpenMenu()

Ouvre le menu /arepairkit, par exemple depuis une application de téléphone ou un menu radial.

Voir l'exemple

Ouvre le menu du kit de réparation depuis votre propre menu radial ou application de téléphone.

-- an entry in your radial menu or phone app exports['Agency-Repairkit']:OpenMenu()
CloseMenu()

Ferme le menu et rend la souris au jeu.

Voir l'exemple

Ferme le menu, par exemple avant une de vos propres cinématiques.

-- before your own cutscene starts exports['Agency-Repairkit']:CloseMenu()
IsMenuOpen()

Renvoie true tant que le menu est ouvert.

Voir l'exemple

Vérifie si le menu est ouvert avant que votre propre interface apparaisse.

if exports['Agency-Repairkit']:IsMenuOpen() then return -- the player is busy in the repair kit menu end

Exports serveur

UseKit(source, kit)

Démarre un kit pour un joueur comme si l'item avait été utilisé, avec toutes les vérifications. Renvoie true, ou false et la raison. Pour les inventaires et boutiques personnalisés.

Voir l'exemple

Démarre le kit de dépannage pour un joueur depuis un inventaire personnalisé.

-- your own inventory: start the repair when the item is used local ok, reason = exports['Agency-Repairkit']:UseKit(source, 'basic') if not ok then print('Repair refused: ' .. tostring(reason)) end
GiveKit(source, kit, amount)

Ajoute des kits à l'inventaire d'un joueur via l'inventaire détecté. Renvoie true en cas de succès.

Voir l'exemple

Donne à un joueur deux kits pneus via l'inventaire détecté.

-- a shop NPC sells two tyre kits exports['Agency-Repairkit']:GiveKit(source, 'tyre', 2)
IsRepairing(source)

True tant que ce joueur travaille sur un véhicule.

Voir l'exemple

Ignore une tâche tant que le joueur répare.

if exports['Agency-Repairkit']:IsRepairing(source) then return -- no new job task while the player is busy end
GetKits()

Chaque kit configuré avec son item, son label, son type de travail et sa durée.

Voir l'exemple

Liste chaque kit avec son objet et son libellé.

for name, kit in pairs(exports['Agency-Repairkit']:GetKits()) do print(name, kit.item, kit.label, kit.duration) end
useKit(event, item, inventory, slot, data)

L'export d'item d'ox_inventory. Les entrées d'items dans install/ox_inventory.lua pointent vers lui ; il n'est pas destiné à être appelé directement.

Voir l'exemple

L'entrée d'objet qui relie ox_inventory aux kits.

-- ox_inventory/data/items.lua ['agencyrepairkit'] = { label = 'Roadside Repair Kit', weight = 1500, consume = 0, server = { export = 'Agency-Repairkit.useKit' }, },

Événements

agency-repairkit:repaired

Se déclenche sur le serveur avec (source, netId, kit) une fois la réparation terminée et le kit consommé. Utile pour les logs, les paiements ou la progression du job.

Voir l'exemple

Enregistre chaque réparation terminée sur le serveur.

AddEventHandler('agency-repairkit:repaired', function(src, netId, kit) print(('%s finished %s on vehicle %s'):format(GetPlayerName(src), kit, netId)) end)
agency-repairkit:client:repaired

Se déclenche sur le client du joueur qui répare avec (netId, kit) quand une réparation est terminée.

Voir l'exemple

Réagit sur le client du joueur qui répare.

AddEventHandler('agency-repairkit:client:repaired', function(netId, kit) if kit == 'advanced' then -- play a sound or advance a job step end end)
agency-repairkit:client:damageLevel

Se déclenche sur le client du conducteur avec (level, vehicle) à chaque changement du niveau de dégâts : ok, light, medium, heavy ou critical.

Voir l'exemple

Suit le niveau de dégâts du véhicule que conduit le joueur.

AddEventHandler('agency-repairkit:client:damageLevel', function(level, vehicle) if level == 'critical' then -- offer the tow-truck job end end)

09Agency-Vehiclekeys V2

Clés de véhicule universelles avec trousseau et télécommande, clés permanentes et temporaires, clés liées aux métiers, crochetage et démarrage forcé avec alertes à la police, et une page d’administration.

Convient aux garages, aux concessionnaires et aux services de location qui fournissent des clés, aux scripts de métier avec leurs propres véhicules, aux scripts de braquage et de vol de voiture qui doivent vérifier ou fournir des clés, aux HUD qui indiquent l’état du moteur, ainsi qu’aux menus radiaux ou aux téléphones qui ouvrent le trousseau de clés.

Documentation complète

Exports client

HasKeys(plate)

Vrai lorsque le joueur possède une clé pour cette plaque : propriétaire, partagée ou temporaire. Les véhicules de métier s’ouvrent selon leur modèle et ne sont pas comptabilisés ici.

Voir l'exemple

Vérifie la clé avant que votre script autorise le joueur à utiliser la voiture.

if exports['Agency-Vehiclekeys']:HasKeys(GetVehicleNumberPlateText(vehicle)) then -- the player may drive this car end
GetKeys()

Toutes les clés du joueur sous forme de liste { plate, kind }. kind correspond à owner, shared ou temp.

Voir l'exemple

Répertorie toutes les clés du joueur, par exemple pour une application de téléphone.

for _, key in ipairs(exports['Agency-Vehiclekeys']:GetKeys()) do print(key.plate, key.kind) end
ToggleLock(vehicle)

Verrouille ou déverrouille un véhicule dont le joueur possède la clé, avec la même animation et les mêmes vérifications que G. En l’absence de véhicule, le véhicule le plus proche à portée est utilisé.

Voir l'exemple

Verrouille ou déverrouille la voiture la plus proche depuis votre propre menu radial.

-- an entry in your radial menu exports['Agency-Vehiclekeys']:ToggleLock()
ToggleEngine()

Démarre ou arrête le moteur du véhicule conduit par le joueur, comme avec U.

Voir l'exemple

Démarre ou arrête le moteur depuis votre propre menu ou HUD de voiture.

exports['Agency-Vehiclekeys']:ToggleEngine()
OpenMenu()

Ouvre le trousseau, par exemple depuis un menu radial ou une application de téléphone.

Voir l'exemple

Ouvre le trousseau de clés depuis votre propre menu radial ou application de téléphone.

-- an entry in your radial menu exports['Agency-Vehiclekeys']:OpenMenu()
CloseMenu()

Ferme le trousseau et rend la souris au jeu.

Voir l'exemple

Ferme le trousseau de clés avant l’ouverture de votre propre menu.

exports['Agency-Vehiclekeys']:CloseMenu()
IsMenuOpen()

Vrai lorsque le trousseau est ouvert.

Voir l'exemple

Empêche votre menu de s’ouvrir par-dessus le trousseau de clés.

if not exports['Agency-Vehiclekeys']:IsMenuOpen() then -- open your own menu end
useLockpick()

Lance une tentative de crochetage sur la voiture devant le joueur, ou un démarrage forcé depuis le siège conducteur. Prévu pour les objets ox_inventory : client = { export = 'Agency-Vehiclekeys.useLockpick' }.

Voir l'exemple

Permet aux joueurs d’utiliser le crochetage depuis le menu ox_inventory.

-- ox_inventory/data/items.lua ['lockpick'] = { label = 'Lockpick', client = { export = 'Agency-Vehiclekeys.useLockpick' }, },

Exports serveur

GiveKeys(source, plate, mode, hours)

Donne une clé. Le mode 'temp' (par défaut) correspond à une clé temporaire, éventuellement pour un certain nombre d’heures, et 'perm' à une clé enregistrée. Une source ou un identifiant peut être utilisé.

Voir l'exemple

Donne une clé temporaire, par exemple lorsqu’une voiture est louée ou créée par un métier.

-- a rental that lasts two hours exports['Agency-Vehiclekeys']:GiveKeys(source, plate, 'temp', 2)
RemoveKeys(source, plate)

Retire une clé partagée ou temporaire. Renvoie true si une clé a été retirée.

Voir l'exemple

Retire la clé à la fin de la location ou une fois le travail terminé.

exports['Agency-Vehiclekeys']:RemoveKeys(source, plate)
HasKeys(source, plate)

Vrai lorsque le joueur possède une clé pour la plaque, y compris les clés de métier pour un véhicule à proximité.

Voir l'exemple

Vérifie côté serveur que le joueur possède bien la clé.

if not exports['Agency-Vehiclekeys']:HasKeys(source, plate) then return -- no key, no delivery end
SetOwner(source, plate)

Fait du joueur le propriétaire d’une plaque, pour les garages et les boutiques sur les serveurs standalone. Un ancien propriétaire perd sa clé.

Voir l'exemple

Définit l’acheteur comme propriétaire de la voiture sur les serveurs standalone.

-- your standalone vehicle shop, after the purchase exports['Agency-Vehiclekeys']:SetOwner(source, plate)
RemoveOwner(plate)

Supprime le propriétaire enregistré par ce script pour une plaque.

Voir l'exemple

Supprime le propriétaire enregistré lorsque la voiture est vendue ou mise à la casse.

exports['Agency-Vehiclekeys']:RemoveOwner(plate)
GetOwner(plate)

L’identifiant du propriétaire et sa provenance : 'framework' pour les véhicules possédés dans QBCore, Qbox ou ESX, 'store' pour les propriétaires enregistrés par ce script.

Voir l'exemple

Trouve le propriétaire d’une plaque, pour les outils de police ou les scripts de mise en fourrière.

local owner, from = exports['Agency-Vehiclekeys']:GetOwner(plate) print(owner, from) -- identifier, 'framework' or 'store'
GetKeyHolders(plate)

Toutes les autres personnes ayant une clé pour la plaque, sous forme de liste { identifier, kind, name, expires }.

Voir l'exemple

Affiche toutes les personnes qui possèdent une clé de voiture, par exemple dans un ordinateur de police.

for _, h in ipairs(exports['Agency-Vehiclekeys']:GetKeyHolders(plate)) do print(h.name, h.kind) end
SetVehicleLocked(vehicle, locked)

Verrouille ou déverrouille un véhicule pour tout le monde, sans vérifier les clés. Pour les scripts qui doivent ouvrir une voiture.

Voir l'exemple

Ouvre ou verrouille une voiture pour tout le monde, sans vérifier les clés.

-- a heist script opens the car for the crew exports['Agency-Vehiclekeys']:SetVehicleLocked(vehicle, false)
IsVehicleLocked(vehicle)

Vrai lorsque le véhicule est verrouillé.

Voir l'exemple

Lit l’état du verrouillage côté serveur.

if exports['Agency-Vehiclekeys']:IsVehicleLocked(vehicle) then -- the car is closed end
GetFramework()

Le framework détecté par le script : qbcore, esx ou standalone.

Voir l'exemple

Permet à votre script de suivre le framework détecté par le script de clés.

if exports['Agency-Vehiclekeys']:GetFramework() == 'standalone' then -- give the key yourself end

Événements

Agency:Keys:GiveServer

Demande une clé temporaire pour une plaque, comme le font Agency Garage et Agency Vehicleshop. Déclenchez cet événement côté client avec la plaque. La voiture doit être à côté du joueur ou lui appartenir.

Voir l'exemple

Demande une clé pour une voiture qui vient d’apparaître à côté du joueur.

-- client side, after your garage spawned the car TriggerServerEvent('Agency:Keys:GiveServer', GetVehicleNumberPlateText(vehicle))
qb-vehiclekeys:server:AcquireVehicleKeys

L'événement de clé de qb-vehiclekeys, interprété de la même manière, pour que les garages et les boutiques conçus pour qb-vehiclekeys continuent de fonctionner.

Voir l'exemple

Les scripts conçus pour qb-vehiclekeys continuent de fonctionner sans modification.

TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', plate)
vehiclekeys:client:SetOwner

Événement client déclenché par de nombreux garages et boutiques après l'apparition d'une voiture. Donne une clé temporaire pour cette plaque après les mêmes vérifications côté serveur.

Voir l'exemple

L’événement que de nombreux garages déclenchent après avoir fait apparaître une voiture donne une clé au joueur.

TriggerEvent('vehiclekeys:client:SetOwner', plate)
qb-vehiclekeys:client:AddKeys

L'événement client de qb-vehiclekeys pour remettre des clés, interprété de la même manière.

Voir l'exemple

Remet une clé comme le faisait qb-vehiclekeys.

TriggerEvent('qb-vehiclekeys:client:AddKeys', plate)
simple_carkeys:client:toggleEngine

Déclenché côté client lorsque le moteur est démarré ou arrêté avec une clé, afin que les HUD tels que Agency-Hud puissent suivre l'état du moteur.

Voir l'exemple

Permet à votre HUD de suivre le moteur lorsqu’il est démarré ou arrêté avec une clé.

AddEventHandler('simple_carkeys:client:toggleEngine', function() -- update the engine icon of your HUD end)

10Agency-Vending

Distributeurs automatiques avec propriété par les joueurs, paiement en espèces ou par carte AgencyPay.

Associez à l'export AgencyPay d'Agency-Phone pour les achats par carte. Utilisez dans des jobs où les joueurs possèdent des emplacements de vending (stations-service, bureaux, appartements) pour générer un revenu passif.

Documentation complète

Événements

agency-vending:notify

Dispatcher generique de notifications cote server pour la resource vending.

Voir l'exemple

Envoie une notification generique vending au joueur apres un achat.

-- Plug a vending receipt into a custom logger via notify event TriggerClientEvent('agency-vending:notify', src, 'success', 'Receipt #4821 saved to wallet')
agency-vending:startAgencyPay

Lance un checkout AgencyPay via l'integration agency-phone avec les metadonnees marchand.

Voir l'exemple

Lance un paiement Agency Pay via le telephone avec les donnees du kiosque.

-- Pop a phone Agency Pay flow when a player taps a kiosk TriggerClientEvent('agency-vending:startAgencyPay', src, { merchant = 'Sprunk Co', amount = 4.50, ref = 'flash_sale_01' })
agency-vending:buyMachineResult

Resultat d'un achat de machine, transmis a la NUI pour retour.

Voir l'exemple

Transfere le resultat d'achat de machine vers une NUI shop personnalisee.

-- Forward buy-machine outcome to a custom shop UI TriggerClientEvent('agency-vending:buyMachineResult', src, { success = true, machineId = 102 })
agency-vending:machineCreated

Broadcast indiquant qu'une nouvelle machine du joueur a ete creee; met a jour le cache local et avertit le proprietaire.

Voir l'exemple

Diffuse a tous les clients un distributeur tout juste cree par un joueur.

-- Cache new owner-machine instantly when business script registers it TriggerClientEvent('agency-vending:machineCreated', -1, { id = 142, owner = identifier, type = 'sprunk' })
agency-vending:openManagementVerified

Ouverture verifiee cote server du menu de gestion proprietaire avec items, gains et label.

Voir l'exemple

Ouvre l'interface de gestion verifiee avec articles, gains et libelle apres auth.

-- After server-side ownership check open management menu with stock TriggerClientEvent('agency-vending:openManagementVerified', src, { items = items, earnings = 1240, label = 'East LS Sprunk' })
agency-vending:openOwnedList

Ouvre la NUI vue d'ensemble proprietaire avec toutes les machines du joueur et noms de rues.

Voir l'exemple

Ouvre la NUI d'apercu proprietaire listant tous les distributeurs du joueur.

-- Hotkey opens the owner overview NUI listing all owned machines TriggerClientEvent('agency-vending:openOwnedList', src)
agency-vending:spawnMachineCreated

Broadcast du spawner admin indiquant qu'une nouvelle entite machine a ete creee.

Voir l'exemple

Notifie tous les clients qu'un admin a fait apparaitre un distributeur.

-- Custom mapping tool tracks newly admin-spawned machine TriggerClientEvent('agency-vending:spawnMachineCreated', -1, { entity = netId, model = 'prop_vend_soda_01', id = 7 })
agency-vending:spawnMachineDeleted

Broadcast du spawner admin indiquant qu'une entite machine spawnee a ete supprimee.

Voir l'exemple

Indique a tous les clients qu'un admin a supprime un distributeur deja place.

-- Mapping tool removes a deleted spawned machine from cache TriggerClientEvent('agency-vending:spawnMachineDeleted', -1, 7)
agency-vending:openSpawnerUI

Ouvre la NUI du spawner admin apres validation cote server des permissions.

Voir l'exemple

Ouvre la NUI de spawn admin pour placer des distributeurs dans le monde.

-- Custom command opens the admin spawner UI after permission passes TriggerClientEvent('agency-vending:openSpawnerUI', src)
agency-vending:buyMachine

Le joueur achete un distributeur d'un type donne aux coordonnees et heading fournis.

Voir l'exemple

Le joueur achete un distributeur Sprunk a sa position actuelle aupres d'un PNJ.

-- Custom NPC sells vending machines via dialog local coords = GetEntityCoords(PlayerPedId()) local heading = GetEntityHeading(PlayerPedId()) TriggerServerEvent('agency-vending:buyMachine', 'sprunk', coords, heading)
agency-vending:requestOwnedList

L'appelant demande la liste de ses machines pour l'UI de vue d'ensemble proprietaire.

Voir l'exemple

Demande au serveur la liste des distributeurs detenus par le joueur.

-- Refresh owner overview after a balance/restock action elsewhere TriggerServerEvent('agency-vending:requestOwnedList')
agency-vending:requestMachines

L'appelant demande au server une synchronisation complete de toutes les machines de joueurs.

Voir l'exemple

Demande une synchro complete et fraiche des distributeurs des joueurs au serveur.

-- Scan for nearby machines after teleport finished TriggerServerEvent('agency-vending:requestMachines')
agency-vending:requestManagement

Ouverture verifiee cote server de l'UI de gestion d'une machine possedee.

Voir l'exemple

Demande l'interface de gestion verifiee serveur pour le distributeur clique.

-- Owner UI requests verified management menu for a clicked machine TriggerServerEvent('agency-vending:requestManagement', machineId)
agency-vending:requestSpawnedMachines

L'appelant demande la liste des machines spawnees par admin pour l'UI du spawner.

Voir l'exemple

Demande la liste de tous les distributeurs spawnes par admin pour l'UI spawner.

-- Admin spawner UI fetches all currently spawned machines TriggerServerEvent('agency-vending:requestSpawnedMachines')
agency-vending:adminSpawnMachine

L'admin place un nouveau prop de distributeur cote server apres verification des permissions.

Voir l'exemple

L'admin spawn un nouveau distributeur de snacks apres verification des permissions.

-- Admin places a snack machine via custom slash command TriggerServerEvent('agency-vending:adminSpawnMachine', 'snack', vector3(120.5, -1280.7, 29.3), 90.0)
agency-vending:adminDeleteSpawned

L'admin supprime cote server un prop de distributeur precedemment spawne.

Voir l'exemple

L'admin supprime cote serveur un distributeur precedemment place.

-- Admin removes a misplaced machine via map editor button TriggerServerEvent('agency-vending:adminDeleteSpawned', spawnedId)

11Agency-Admin

Panneau admin complet avec UI verre, chat AgencyAI et plus de 60 outils admin.

Les events sont parfaits comme "primitives" pour anti-cheat, bots de modération ou outils automatisés, appelle-les depuis ton script serveur pour freeze/kick/notify sans écrire ta propre UI.

Documentation complète

Événements

agency-admin:client:refreshStaffRanks

Demande au client de recharger les donnees des rangs du staff.

Voir l'exemple

Rafraichit le cache des grades staff pour chaque admin connecte apres une promotion.

-- After auto-promotion, refresh staff ranks for all online admins for _, src in ipairs(GetPlayers()) do TriggerClientEvent('agency-admin:client:refreshStaffRanks', tonumber(src)) end
agency-admin:client:freezeTime

Fige ou libere l'heure du monde cote client a l'heure et minute donnees.

Voir l'exemple

L'anti-triche fige l'horloge du monde a midi pendant la verification d'un joueur.

-- Anti-cheat halts world time during an investigation local hour, minute = 12, 0 TriggerClientEvent('agency-admin:client:freezeTime', src, true, hour, minute)
agency-admin:client:dashboardValue

Envoie une valeur de carte du tableau de bord (compteur live) vers l'UI du panel.

Voir l'exemple

Envoie le nombre de joueurs en ligne en direct a la carte du tableau de bord admin.

-- Stream live online player count to admin dashboard cards local count = #GetPlayers() TriggerClientEvent('agency-admin:client:dashboardValue', adminSrc, 'players_online', count)
agency-admin:client:teleportToCoords

Teleporte l'appelant aux coordonnees monde fournies.

Voir l'exemple

Teleporte un joueur aux coordonnees sauvegardees apres un evenement de reapparition.

-- Job script teleports a player back to last save point on respawn local coords = vector3(-1037.7, -2737.6, 20.16) TriggerClientEvent('agency-admin:client:teleportToCoords', src, coords)
agency-admin:client:announce

Affiche une bannière d'annonce pour tout le serveur.

Voir l'exemple

Diffuse une banniere d'annonce a tout le serveur depuis un expediteur systeme nomme.

-- Event bot announces a community contest start TriggerClientEvent('agency-admin:client:announce', -1, 'Event Crew', 'Heist contest starts in 5 minutes!')
agency-admin:client:notify

Envoie une notification à un admin spécifique.

Voir l'exemple

Envoie une notification stylee au joueur lorsque sa candidature est approuvee.

-- Whitelist bot informs a player they passed the application TriggerClientEvent('agency-admin:client:notify', src, 'Whitelist', 'Application approved!', 'success', 8000)
agency-admin:client:freeze

Fige le joueur ciblé sur place.

Voir l'exemple

Fige un joueur suspect afin que le staff puisse enqueter sans qu'il bouge.

-- Anti-cheat freezes a suspect player while staff investigates TriggerClientEvent('agency-admin:client:freeze', suspectSrc, true)
agency-admin:client:heal

Restaure les HP/armure de la cible.

Voir l'exemple

Soigne entierement le patient apres la fin de son traitement medical RP.

-- Medic job script fully heals the player after RP treatment ends TriggerClientEvent('agency-admin:client:heal', patientSrc)
agency-admin:client:revive

Ressuscite le joueur ciblé.

Voir l'exemple

Reanime un joueur a terre apres la reussite du mini-jeu des secours.

-- EMS revive minigame succeeds, server marks player alive again TriggerClientEvent('agency-admin:client:revive', downedSrc)
agency-admin:client:teleport

Teleporte le joueur local au vecteur de coordonnees fourni.

Voir l'exemple

Teleporte le joueur local aux coordonnees fournies.

-- Tutorial system teleports new player to spawn pad on first join local coords = vector3(245.7, -871.5, 30.5) TriggerClientEvent('agency-admin:client:teleport', src, coords)
agency-admin:client:openMenu

Ouvre l'UI du panneau admin (nécessite une permission ACE).

Voir l'exemple

Ouvre l'interface principale du panneau admin pour le staff lors de la prise de service.

-- Auto-open admin panel for staff right after they switch on duty TriggerClientEvent('agency-admin:client:openMenu', src)
agency-admin:client:openToolsMenu

Declencheur cote server pour ouvrir le sous-menu des outils admin.

Voir l'exemple

Ouvre le sous-menu des outils admin lorsque le raccourci staff est presse.

-- Quick-action keybind opens the admin tools sub-menu TriggerClientEvent('agency-admin:client:openToolsMenu', src)
agency-admin:client:closeMenu

Declencheur cote server pour fermer l'UI du panel admin.

Voir l'exemple

Force la fermeture de l'interface du panneau admin lors d'une enquete sur l'admin.

-- Force-close the panel when admin gets reported themselves TriggerClientEvent('agency-admin:client:closeMenu', adminSrc)
agency-admin:client:openClothingMenu

Declencheur cote server pour ouvrir le menu de vetements en jeu pour le joueur.

Voir l'exemple

Ouvre le menu de vetements apres l'achat d'une tenue chez un tailleur.

-- Tailor NPC opens clothing menu after a uniform purchase TriggerClientEvent('agency-admin:client:openClothingMenu', src)
agency-admin:server:requestPlayers

Demande la liste actuelle des joueurs en ligne pour le panel admin.

Voir l'exemple

Demande au serveur la derniere liste des joueurs en ligne pour le panneau.

-- Custom dashboard widget refreshes its players list TriggerServerEvent('agency-admin:server:requestPlayers')
agency-admin:server:requestPanelPermissions

Demande la table des permissions du panel pour l'editeur de rangs.

Voir l'exemple

Demande au serveur la table des permissions du panneau pour l'editeur de grades.

-- Permission editor needs the latest panel permission map TriggerServerEvent('agency-admin:server:requestPanelPermissions')
agency-admin:server:requestStaffRanks

Demande le jeu de donnees des rangs du staff pour le panel.

Voir l'exemple

Demande le jeu complet de grades staff pour un widget CRM personnalise.

-- Sync staff ranks dataset into a custom CRM widget TriggerServerEvent('agency-admin:server:requestStaffRanks')
agency-admin:server:createRank

Cree un nouveau rang du staff avec metadonnees et permissions.

Voir l'exemple

Cree un nouveau grade staff depuis une synchronisation de portail RH externe.

-- Sync rank from external HR portal -> create matching staff rank TriggerServerEvent('agency-admin:server:createRank', { name = 'Senior Mod', color = '#a855f7', priority = 50 })
agency-admin:server:requestMyPermissions

L'appelant demande son propre ensemble de permissions de panel resolu.

Voir l'exemple

Demande l'ensemble de permissions resolu du joueur a l'ouverture de l'interface.

-- Fetch caller's resolved permission set before showing dev tools TriggerServerEvent('agency-admin:server:requestMyPermissions')
agency-admin:server:requestSync

L'appelant demande au server d'envoyer la charge utile sync standard (service/permissions/etc.).

Voir l'exemple

Force le serveur a envoyer le paquet de synchro standard duty/perms au joueur.

-- Force a fresh sync after the player reconnects TriggerServerEvent('agency-admin:server:requestSync')
agency-admin:server:requestDutyRank

L'appelant demande ses infos de rang admin en service actuel.

Voir l'exemple

Demande le grade de duty admin actuel du joueur pour une superposition HUD.

-- Display admin's duty rank on a custom HUD overlay TriggerServerEvent('agency-admin:server:requestDutyRank')
agency-admin:server:requestSpawnedObjects

L'appelant demande la liste des objets monde spawnes par l'admin.

Voir l'exemple

Demande la liste des objets monde spawnes par admin pour la mini-carte.

-- Map editor needs to draw all admin-spawned objects on a minimap TriggerServerEvent('agency-admin:server:requestSpawnedObjects')

12Agency-Anticheat

Un anticheat pour FiveM qui apprend à connaître votre serveur. Il contrôle chaque joueur côté serveur, là où un cheat ne peut pas se cacher : godmode, super saut, multiplicateurs de dégâts, téléportations et armes interdites sont lus depuis l'état de jeu synchronisé. Les recoupements détectent ce que les valeurs isolées laissent passer : un coup mortel que la victime survit, un kill au pistolet à 500 mètres, des statistiques de visée et plusieurs signaux faibles qui forment ensemble un schéma. La protection du monde annule les chars, explosions, incendies et spams de particules générés avant que quiconque ne les voie. Les bans couvrent les identifiants et les tokens matériels, si bien qu'un nouveau compte sur le même PC reste dehors, et un lockdown ferme le serveur de lui-même quand plusieurs tricheurs attaquent en même temps. Une installation neuve fonctionne 48 heures en mode Learning et ne punit personne. Son propre panneau en jeu (/acpanel) affiche tout en direct et exécute chaque action, sur n'importe quel serveur. Avec Agency Admin, ses admins sont exemptés automatiquement et la même page se trouve aussi dans ce panneau ; avec AgencyMod, les bans arrivent aussi sur votre Discord. Sans base de données, sans abonnement, 25 langues, QBCore, Qbox, ESX ou standalone.

Documentation complète

Exports serveur

AllowTeleport(source: number, seconds?: number)

Appelez-le juste avant que votre script déplace un joueur, le saut ne sera alors pas compté comme une téléportation. Par défaut 5 secondes.

SetExempt(source: number, seconds: number)

Exempte un joueur de tous les contrôles pendant un moment, par exemple lors d'un événement avec Godmode. 0 y met fin.

Flag(source: number, detail: string)

Votre propre détection. Compte comme n'importe quelle autre détection, sous la détection external.

BanPlayer(source: number, reason: string, duration?: number, by?: string)

Bannit un joueur en ligne via ses identifiants et jetons matériels. Durée en secondes, 0 signifie permanent. Renvoie l'ID du ban.

KickPlayer(source: number, reason: string, by?: string)

Expulse un joueur et l'enregistre dans Discord.

Unban(banId: string, by?: string)

Lève un ban, par exemple AC-7K3P9.

SetMode(mode: string)

Change le mode en direct : learning, relaxed, balanced ou strict.

SetDetection(key: string, enabled: boolean)

Active ou désactive une détection en direct.

SetLockdown(on: boolean, by?: string)

Démarre ou termine un lockdown.

IsExempt(source: number)

Indique si un joueur est exempté des contrôles.

IsKnownPlayer(source: number)

Indique si un joueur a joué ici assez longtemps sans détection pour être considéré comme connu.

GetStatus()

Renvoie tout ce que le panneau affiche : mode, couches, connaissances, chiffres du jour, charge du serveur et chaque détection avec sa règle.

GetDetections(limit?: number)

Renvoie les dernières détections, les plus récentes d'abord.

GetBans()

Renvoie chaque ban actif avec ses preuves.

GetPlayers()

Renvoie les joueurs en ligne avec score de risque et strikes ouverts, risque le plus élevé d'abord.

Événements

Agency-Anticheat:detection

Se déclenche à chaque détection avec joueur, détection, détail, action et strikes.

Agency-Anticheat:banned

Se déclenche après chaque ban avec l'enregistrement complet du ban.

Agency-Anticheat:unbanned

Se déclenche après la levée d'un ban.

Agency-Anticheat:lockdown

Se déclenche quand un lockdown démarre ou se termine.

Agency-Anticheat:learned

Se déclenche quand l'anticheat a appris un nouveau point de téléportation de votre serveur.

13Agency-Reports V2

Système de rapports moderne avec chat en direct par rapport et réponses assistées par IA.

Utilise-le comme épine dorsale "ticket de support" pour tout ton serveur. Tes scripts peuvent ouvrir automatiquement des rapports en cas de problème (véhicules bloqués, items dupliqués, sauvegardes SQL ratées) pour examen admin.

Documentation complète

Événements

agency-reports:client:notify

Déclenche une notification "nouveau rapport" pour un admin spécifique.

Voir l'exemple

Notification piloteee serveur respectant la preference de notification UI du joueur.

-- Server tells client a new admin reply landed TriggerClientEvent('agency-reports:client:notify', source, 'New reply on your report', 'info')
agency-reports:client:openPlayerUI

Ouvre l'UI de rapport côté joueur.

Voir l'exemple

Ouvre l'UI rapport joueur avec categories, rapports recents et reglages AI/Discord.

-- Open the player report UI on a custom keybind local categories = { 'Bug', 'Player report', 'Stuck' } TriggerEvent('agency-reports:client:openPlayerUI', categories, {}, {}, {})
agency-reports:client:openAdminUI

Ouvre la liste des rapports côté admin.

Voir l'exemple

Ouvre le tableau de bord admin avec l'ensemble complet des rapports.

-- Force-open the admin reports dashboard from a staff command TriggerEvent('agency-reports:client:openAdminUI', { reports = {}, total = 0 })
agency-reports:client:teleport

Teleporte l'admin appelant aux coordonnees fournies (pour les actions goto).

Voir l'exemple

Teleporte l'admin appelant aux coordonnees fournies pour les actions goto.

-- Goto-action: teleport the responding admin to the report scene TriggerEvent('agency-reports:client:teleport', vector3(-247.6, -2010.2, 30.1))
agency-reports:client:healSelf

Soigne entierement le ped de l'admin appelant.

Voir l'exemple

Soigne entierement le ped de l'admin apres avoir traite un rapport.

-- Heal admin after a hostile scene to keep them in service TriggerEvent('agency-reports:client:healSelf')
agency-reports:server:submitReport

Soumet un nouveau rapport en dehors de l'UI.

Voir l'exemple

Le joueur soumet un nouveau rapport avec titre, categorie et description.

-- Player submits a quick stuck-at-pier report TriggerServerEvent('agency-reports:server:submitReport', 'Stuck at pier', 'Stuck', 'Vehicle wedged under pier - cant move')
agency-reports:server:requestPlayerData

L'appelant demande sa charge utile de rapport; ouvre eventuellement l'UI joueur en reponse.

Voir l'exemple

L'appelant demande sa charge utile de rapport, ouvre optionnellement l'UI joueur.

-- Pull fresh data and (optionally) auto-open the player UI TriggerServerEvent('agency-reports:server:requestPlayerData', true)
agency-reports:server:requestAdminData

L'admin demande le jeu complet de rapports et ouvre le dashboard admin si autorise.

Voir l'exemple

L'admin demande tout le dataset de rapports et ouvre le tableau de bord si autorise.

-- Admin staff opens the dashboard after going on duty TriggerServerEvent('agency-reports:server:requestAdminData')
agency-reports:server:sendChatMessage

Envoie un message de chat dans un rapport ouvert.

Voir l'exemple

Publie un message chat dans un fil de rapport specifique pour admin ou joueur.

-- Player posts a follow-up chat message into report #42 TriggerServerEvent('agency-reports:server:sendChatMessage', 42, 'Still stuck, any ETA?')

14Agency-Doorlock

Portes verrouillables avec configuration en jeu et accès par porte selon le job, le gang ou le joueur.

Idéal pour les scripts de logement, de propriété ou de clés : donner à un joueur la clé d'une porte précise et la reprendre. Les clés sont enregistrées en base et synchronisées en direct, sans droits admin.

Documentation complète

Exports client

ToggleNearestDoor()

Locks or unlocks the door the player is standing at. The server checks access exactly like the E key.

Voir l'exemple

Ajoute ta propre touche (L) qui verrouille ou déverrouille la porte devant le joueur. L'accès reste vérifié par le serveur.

RegisterCommand('lockdoor', function() -- same as pressing E at the door; the server still checks access exports['Agency-Doorlock']:ToggleNearestDoor() end) RegisterKeyMapping('lockdoor', 'Lock / unlock door', 'keyboard', 'L')
GetNearbyDoorId()

Returns the id of the door the player is standing at, or nil.

Voir l'exemple

Récupère la porte devant laquelle se trouve le joueur, par exemple pour la lier à une maison dans ton script.

local doorId = exports['Agency-Doorlock']:GetNearbyDoorId() if doorId then -- e.g. let the house owner pick this door when setting up keys TriggerServerEvent('myhousing:server:linkDoor', doorId) end
GetAllDoors()

Returns every door as { id, label, locked, static, leaves, access }. The PIN is never included.

Voir l'exemple

Liste toutes les portes avec leur numéro et leur état. Le code PIN n'est jamais inclus.

for _, door in ipairs(exports['Agency-Doorlock']:GetAllDoors()) do print(('#%d %s - %s'):format(door.id, door.label, door.locked and 'locked' or 'open')) end
GetDoorCoords(doorId: number)

Returns the position of the first door leaf as { x, y, z }, or nil.

Voir l'exemple

Place un point GPS vers une porte, par exemple pour guider un joueur vers sa nouvelle maison.

local c = exports['Agency-Doorlock']:GetDoorCoords(doorId) if c then SetNewWaypoint(c.x, c.y) end

Exports serveur

AddPlayerAccess(doorId: number, player: number|string)

Gives one player access to one door. Saved to the database and synced to every player at once. Returns true, or false plus a reason. true, "unchanged" if the player already had access.

Voir l'exemple

Un propriétaire donne une clé à un autre joueur. Ton script vérifie la propriété, Agency-Doorlock enregistre la clé et la synchronise en direct. Personne n'obtient de droits admin.

RegisterNetEvent('myhousing:server:giveKey', function(targetId, houseId) local src = source if not IsHouseOwner(src, houseId) then return end -- your own check local doorId = GetHouseDoorId(houseId) -- id from /adoorlock local ok, reason = exports['Agency-Doorlock']:AddPlayerAccess(doorId, tonumber(targetId)) if not ok then print(('Key not given: %s'):format(reason)) end end)
RemovePlayerAccess(doorId: number, player: number|string)

Takes the access away again. Saved and synced at once. Returns true, or false plus a reason. true, "unchanged" if there was nothing to remove.

Voir l'exemple

Retire une clé, par exemple quand un locataire déménage. Avec le citizenid, cela fonctionne aussi si le joueur est hors ligne.

-- works while the player is offline: pass the citizenid local ok, reason = exports['Agency-Doorlock']:RemovePlayerAccess(doorId, 'ABC12345')
HasPlayerAccess(doorId: number, player: number|string)

true if the player is on the door's player list. Job, gang and "everyone" access are not counted.

Voir l'exemple

Vérifie si un joueur a sa propre clé pour cette porte. L'accès par job, gang ou "everyone" n'est pas compté.

if exports['Agency-Doorlock']:HasPlayerAccess(doorId, source) then TriggerClientEvent('myhousing:client:showKeyMenu', source, doorId) end
GetPlayerAccess(doorId: number)

Returns a copy of the door's player list, or nil if the door does not exist.

Voir l'exemple

Liste tous les détenteurs d'une clé, par exemple pour un menu "gérer les clés". Renvoie une copie, la modifier n'a aucun effet.

for _, citizenid in ipairs(exports['Agency-Doorlock']:GetPlayerAccess(doorId) or {}) do print('Key holder: ' .. citizenid) end
IsReady()

false while the doors are still loading from the database after a start, true afterwards.

Voir l'exemple

Attend que les portes soient chargées après un démarrage avant que ton script ne distribue des clés.

CreateThread(function() while not exports['Agency-Doorlock']:IsReady() do Wait(500) end -- doors are loaded, safe to grant keys from your own database now end)

Événements

agency-doorlock:accessChanged

Fired on the server after AddPlayerAccess or RemovePlayerAccess changed a door. Arguments: doorId, identifier, granted (true / false). Listen with AddEventHandler.

Voir l'exemple

Journal côté serveur de chaque clé donnée ou retirée, par exemple pour un webhook Discord.

AddEventHandler('agency-doorlock:accessChanged', function(doorId, identifier, granted) print(('Door #%d: %s %s'):format(doorId, identifier, granted and 'got a key' or 'lost their key')) end)

15Agency-Hud

HUD animé avec tableau de bord véhicule, barres de statut, compteur de vitesse et intégration ceinture.

Si tu as une économie ou un système de besoins personnalisé, pilote le HUD depuis ton propre script avec ces setters au lieu de bricoler autour. Le HUD gère l'animation et la persistance pour toi.

Documentation complète

Exports client

GetVehicleSettings()

Renvoie la table des paramètres véhicule actuels.

Voir l'exemple

Lit la table des parametres HUD vehicule local pour inspection ou synchronisation.

local settings = exports['Agency-Hud']:GetVehicleSettings() print('Speed unit:', settings.speedUnit) print('HUD scale:', settings.scale)
SetSpeedUnit(unit: string)

Bascule le compteur entre 'mph' et 'kmh'.

Voir l'exemple

Bascule le compteur de vitesse en miles par heure et enregistre localement.

RegisterCommand('usemph', function() exports['Agency-Hud']:SetSpeedUnit('mph') end)
SetHunger(value: number)

Définit la valeur de la barre de faim (0-100).

Voir l'exemple

Envoie le niveau de faim actuel du joueur dans le HUD.

AddEventHandler('player:hungerChanged', function(value) exports['Agency-Hud']:SetHunger(value) end)
SetThirst(value: number)

Définit la valeur de la barre de soif (0-100).

Voir l'exemple

Envoie le niveau de soif actuel du joueur dans le HUD.

AddEventHandler('player:thirstChanged', function(value) exports['Agency-Hud']:SetThirst(value) end)
SetStress(value: number)

Définit la valeur de la barre de stress (0-100).

Voir l'exemple

Met a jour l'indicateur de stress du HUD depuis un systeme de stress personnalise.

AddEventHandler('jobstress:onTick', function(stress) exports['Agency-Hud']:SetStress(stress) end)
SetMoney(value: number)

Définit le solde en espèces affiché.

Voir l'exemple

Met a jour le montant en especes affiche sur le HUD.

AddEventHandler('wallet:cashChanged', function(cash) exports['Agency-Hud']:SetMoney(cash) end)
SetBank(value: number)

Définit le solde bancaire affiché (pour les scripts d'économie personnalisés).

Voir l'exemple

Met a jour le solde bancaire affiche dans le HUD.

AddEventHandler('bank:balanceChanged', function(balance) exports['Agency-Hud']:SetBank(balance) end)
SetJob(label: string)

Définit le libellé de job affiché.

Voir l'exemple

Definit l'etiquette du metier affichee apres un changement de profession.

AddEventHandler('job:onChange', function(job) exports['Agency-Hud']:SetJob(job.label) end)
SetRank(rank: string)

Définit le rang/grade de job affiché.

Voir l'exemple

Met a jour le rang du joueur affiche a cote de l'etiquette du metier.

AddEventHandler('job:onGradeChange', function(grade) exports['Agency-Hud']:SetRank(grade.label) end)
GetDetectedFramework()

Renvoie la chaîne du framework ("qb", "esx", "standalone") détecté automatiquement par le HUD.

Voir l'exemple

Lit la cle du framework detecte pour brancher une logique HUD personnalisee.

local fw = exports['Agency-Hud']:GetDetectedFramework() if fw == 'qb' then print('QB-Core detected') end

Événements

Agency-HUD:client:applyVehicleSettingsPatch

Applique un correctif partiel des réglages de véhicule au HUD véhicule local.

Voir l'exemple

Applique un patch partiel des parametres HUD vehicule sur le client local.

TriggerEvent('Agency-HUD:client:applyVehicleSettingsPatch', { style = 'modern', speedUnit = 'kmh' })
Agency-HUD:client:openAdminMenu

Ouvre le menu admin du HUD (nécessite une permission).

Voir l'exemple

Ouvre l'interface NUI du menu admin HUD chez le client recepteur.

TriggerEvent('Agency-HUD:client:openAdminMenu')
Agency-HUD:server:checkAdminPermission

Vérifie les droits admin de l'appelant et ouvre le menu admin en cas de succès.

Voir l'exemple

Demande au serveur de verifier les droits admin et d'ouvrir le menu admin HUD.

RegisterCommand('checkhudadmin', function() TriggerServerEvent('Agency-HUD:server:checkAdminPermission') end)
Agency-HUD:server:saveGlobalSettings

Persistance des réglages HUD globaux réservée aux admins; diffuse la sync.

Voir l'exemple

Enregistre une nouvelle configuration HUD globale (admin uniquement) et la diffuse.

TriggerServerEvent('Agency-HUD:server:saveGlobalSettings', { style = 'modern', accent = '#ff6b00' })
Agency-HUD:server:requestGlobalSettings

Renvoie les réglages globaux actuels au client demandeur.

Voir l'exemple

Demande les parametres HUD globaux actuels au demarrage de la ressource.

AddEventHandler('onClientResourceStart', function(res) if res == GetCurrentResourceName() then TriggerServerEvent('Agency-HUD:server:requestGlobalSettings') end end)
Agency-HUD:server:requestTime

Renvoie l'heure serveur actuelle à l'appelant pour l'horloge HUD.

Voir l'exemple

Interroge l'horloge serveur chaque minute pour actualiser l'affichage HUD.

CreateThread(function() while true do TriggerServerEvent('Agency-HUD:server:requestTime') Wait(60000) end end)

16Agency-Progressbar V2

Barre de progression animée avec UI verre, 4 thèmes, actions annulables et exports client/server.

Utilise-le partout où tu afficherais normalement "faire la chose X pendant Y secondes". Remplace plusieurs ressources de progress bar legacy par une seule UI cohérente sur tout ton serveur.

Documentation complète

Exports client

StartProgress(data: table)

Démarre une barre de progression avec une table d'options complète. Retourne immédiatement; les callbacks se déclenchent à la fin/annulation.

Voir l'exemple

Lance une barre de crochetage de 8s avec animation et callback de fin.

exports['Agency-Progressbar']:StartProgress({ label = 'Picking lock...', duration = 8000, animation = { dict = 'anim@heists@fleeca_bank@drilling', clip = 'drill_straight_idle' }, onFinish = function() TriggerServerEvent('garage:lockpicked', vehNet) end, onCancel = function() print('Lockpick cancelled') end })
StopProgress(completed: boolean)

Arrête la barre de progression en cours. Passe true pour marquer comme annulée.

Voir l'exemple

Annule la barre de progression active quand le joueur appuie sur X.

if IsControlJustPressed(0, 73) then exports['Agency-Progressbar']:StopProgress(false) end
IsProgressActive()

Renvoie true si une barre de progression est actuellement affichée.

Voir l'exemple

Empeche de lancer une action d'artisanat tant qu'une barre est active.

if exports['Agency-Progressbar']:IsProgressActive() then return end startCrafting()
GetProgressPercentage()

Renvoie le pourcentage de remplissage actuel (0-100).

Voir l'exemple

Declenche un tick de mini-jeu une fois la barre remplie a plus de 75 %.

CreateThread(function() while exports['Agency-Progressbar']:IsProgressActive() do local pct = exports['Agency-Progressbar']:GetProgressPercentage() if pct > 75 then SendMinigameTick() end Wait(100) end end)
SetProgressTheme(theme: string)

Change le thème à l'exécution: 'modern', 'neon', 'minimal' ou 'classic'.

Voir l'exemple

Change l'apparence de la barre de progression active vers le theme moderne.

RegisterCommand('darkbar', function() exports['Agency-Progressbar']:SetProgressTheme('modern') end)
SetProgressPosition(position: string)

Change la position: 'top', 'bottom', 'center'.

Voir l'exemple

Deplace la barre de progression active au centre bas de l'ecran.

RegisterCommand('barbottom', function() exports['Agency-Progressbar']:SetProgressPosition('bottom-center') end)
TryReload(usedItem?: string)

Joue la séquence de rechargement style ESX.

Voir l'exemple

Lance un rechargement valide cote serveur avec une boite de 9mm.

RegisterKeyMapping('+reload', 'Reload weapon', 'keyboard', 'R') RegisterCommand('+reload', function() exports['Agency-Progressbar']:TryReload('ammo-9') end)
UseConsumable(itemName: string, isDrink: boolean)

Joue l'animation manger/boire avec la barre de progression.

Voir l'exemple

Joue l'animation de boisson et augmente la soif a l'utilisation d'eau.

RegisterNetEvent('inventory:useItem', function(item) if item == 'water_bottle' then exports['Agency-Progressbar']:UseConsumable('water_bottle', true) end end)

Exports serveur

StartProgressForPlayer(playerId: number, data: table)

Déclenche une barre de progression sur un client spécifique depuis le serveur.

Voir l'exemple

Lance une barre de soulevement de caisse de 5 s pour le joueur demandant.

RegisterCommand('lift', function(source) exports['Agency-Progressbar']:StartProgressForPlayer(source, { label = 'Lifting crate...', duration = 5000 }) end, false)
StopProgressForPlayer(playerId: number, completed?: boolean)

Annule à distance la barre de progression d'un joueur spécifique.

Voir l'exemple

Annule la barre de progression active d'un joueur cible depuis le serveur.

RegisterNetEvent('admin:cancelProgress', function(targetId) exports['Agency-Progressbar']:StopProgressForPlayer(targetId, false) end)
StartProgressForAllPlayers(data: table)

Diffuse une barre de progression à tous les clients connectés.

Voir l'exemple

Diffuse une barre d'alerte tempete de 30 s a tous les joueurs.

RegisterNetEvent('event:weatherWarning', function() exports['Agency-Progressbar']:StartProgressForAllPlayers({ label = 'Storm incoming - take shelter', duration = 30000 }) end)
StopProgressForAllPlayers(completed?: boolean)

Annule la barre de progression de chaque joueur (ex. fin de round).

Voir l'exemple

Arrete la barre globale d'alerte tempete chez tous les joueurs.

RegisterNetEvent('event:weatherCleared', function() exports['Agency-Progressbar']:StopProgressForAllPlayers(true) end)

Événements

Agency:Progressbar:LoadSettings

Charge les réglages UI par joueur (position, couleur, échelle, style) depuis la BD vers le client.

Voir l'exemple

Charge les parametres UI sauvegardes de la barre lors de l'apparition.

AddEventHandler('playerSpawned', function() TriggerEvent('Agency:Progressbar:LoadSettings') end)
agency-progressbar:client:start

Démarre la barre de progression sur le client récepteur avec les données fournies.

Voir l'exemple

Lance une barre de reparation moteur de 12 s, annulable.

TriggerEvent('agency-progressbar:client:start', { label = 'Repairing engine...', duration = 12000, canCancel = true })
agency-progressbar:client:stop

Arrête la barre de progression active avec un drapeau de complétion.

Voir l'exemple

Interrompt la barre active lorsque le joueur est menotte.

RegisterNetEvent('police:cuffed', function() TriggerEvent('agency-progressbar:client:stop', false) end)
agency:consumables:useFood

Pont inventaire pour consommer un aliment (animation + application serveur sécurisée).

Voir l'exemple

Declenche le pont nourriture de l'inventaire pour consommer un sandwich.

TriggerEvent('agency:consumables:useFood', 'sandwich')
agency:consumables:useDrink

Pont inventaire pour consommer une boisson (animation + application serveur sécurisée).

Voir l'exemple

Declenche le pont boisson de l'inventaire pour consommer un cafe.

TriggerEvent('agency:consumables:useDrink', 'coffee_cup')
Agency:Progressbar:SaveSettings

Valide et persiste les réglages UI de la barre de progression du joueur en BD.

Voir l'exemple

Sauvegarde les preferences UI de la barre de progression dans la base.

TriggerServerEvent('Agency:Progressbar:SaveSettings', { position = 'top-right', color = '#00aaff', scale = 1.2 })
agency-progressbar:server:start

Déclencheur côté serveur pour démarrer une barre de progression sur une cible (ou soi-même).

Voir l'exemple

Trigger serveur pour lancer une barre de chargement de caisse de 6 s sur la cible.

RegisterCommand('movecrate', function(source) TriggerEvent('agency-progressbar:server:start', source, { label = 'Loading crate onto truck', duration = 6000 }) end, false)
agency-progressbar:server:stop

Déclencheur côté serveur pour arrêter une barre de progression sur une cible (ou soi-même).

Voir l'exemple

Trigger serveur pour stopper la barre d'une cible avec etat annule.

RegisterNetEvent('admin:abortJob', function(targetId) TriggerEvent('agency-progressbar:server:stop', targetId, false) end)
agency:reload:request

Valide munitions/arme/objet avant d'accorder un rechargement au joueur demandeur.

Voir l'exemple

Demande au serveur de valider les munitions et autoriser le rechargement d'un pistolet.

TriggerServerEvent('agency:reload:request', 'WEAPON_PISTOL', 'ammo-9')
agency:consumables:apply

Valide l'inventaire, retire un objet et applique les gains de faim/soif.

Voir l'exemple

Demande au serveur de retirer l'aliment et d'appliquer le gain de faim.

RegisterNetEvent('food:onEatStart', function(itemName) TriggerServerEvent('agency:consumables:apply', itemName) end)

17Agency-Notify V2

Systeme de notifications avec styles V1/V2, priorite intelligente AgencyAI, protection anti-spam et persistance en base de donnees.

Remplace toutes les autres ressources de notification de ton serveur (qb-notify, esx_notify, mythic_notify, okok-notify, etc.) par un design coherent. Le systeme de priorite AgencyAI limite automatiquement le debit des notifications spammy.

Documentation complète

Exports client

Notify(data: { title, text, type, duration, ... })

Affiche une notification. Accepte { type, title, text, duration, icon, color }.

Voir l'exemple

Envoie une notification de reussite de 6 s annoncant un objectif de braquage.

exports['Agency-Notify']:Notify({ title = 'Bank Heist', text = 'Vault drilled, grab the loot!', type = 'success', duration = 6000 })

Événements

Agency:Notify:Send

Identique a l'export, permet d'utiliser le pattern Trigger classique.

Voir l'exemple

Evenement client legacy v1 affichant le meme payload que l'export.

TriggerEvent('Agency:Notify:Send', { title = 'Old Notify', text = 'Legacy v1 entry point still works', type = 'info' })
Agency:Notify:LoadSettings

Applique les réglages UI sauvegardés par joueur (position, couleur, échelle, style) depuis le serveur.

Voir l'exemple

Charge les parametres UI de notification sauvegardes par joueur a l'apparition.

AddEventHandler('playerSpawned', function() TriggerEvent('Agency:Notify:LoadSettings') end)
Agency:Notify:SaveSettings

Valide et persiste les réglages de notification du joueur (position, accent, échelle, style).

Voir l'exemple

Sauvegarde la position, l'accent et l'echelle des notifications dans la base.

TriggerServerEvent('Agency:Notify:SaveSettings', { position = 'top-right', accent = '#ff8800', scale = 1.1, style = 'modern' })

18Agency-Seatbelt V2

Ceinture de securite avec physique d'ejection, sons 3D, support multi-occupants et integration HUD.

Branche l'etat sur ton propre HUD, ou force l'activation au debut d'une course-poursuite / fuite de braquage. Les exports force-enable/disable sont parfaits pour les moments RP.

Documentation complète

Exports client

isSeatbeltOn()

Renvoie true si le joueur a actuellement sa ceinture attachee.

Voir l'exemple

Desactive le controle de sortie tant que la ceinture est bouclee.

if exports['Agency-Seatbelt']:isSeatbeltOn() then DisableControlAction(0, 75, true) end
enableSeatbelt()

Force la mise de la ceinture (par ex. lors d'une arrestation par la police).

Voir l'exemple

Boucle la ceinture du joueur local avec retour HUD et sonore.

RegisterNetEvent('vehicle:autoBuckle', function() if IsPedInAnyVehicle(PlayerPedId(), false) then exports['Agency-Seatbelt']:enableSeatbelt() end end)
disableSeatbelt()

Force le retrait de la ceinture (cinematiques, scenarios RP).

Voir l'exemple

Detache la ceinture du joueur local en sortant d'un vehicule.

RegisterNetEvent('vehicle:onExit', function() exports['Agency-Seatbelt']:disableSeatbelt() end)
toggleSeatbelt()

Bascule l'etat de la ceinture (ce que fait le keybind par defaut).

Voir l'exemple

Bascule la ceinture du joueur local sur appui de touche.

RegisterKeyMapping('+seatbelt', 'Toggle seatbelt', 'keyboard', 'B') RegisterCommand('+seatbelt', function() exports['Agency-Seatbelt']:toggleSeatbelt() end)
isAutoBuckled()

Renvoie true tant que la ceinture a été attachée par la voiture et non par le joueur.

autoBuckle(on: boolean)

Attache ou détache la ceinture en mode automatique, comme le fait une voiture autonome.

getSeatbeltState()

Renvoie une table avec l'état attaché, le mode automatique ou non, la place et le véhicule.

setSeatbeltEnabled(on: boolean)

Désactive ou active toute la ceinture pour ce joueur, pour les cinématiques ou les situations d'admin.

isPlayerSeatbeltOn(serverId: number)

Renvoie l'état de ceinture d'un autre joueur, lu depuis le state bag répliqué.

bucklesItselfVehicle(vehicle: number)

Indique si ce véhicule attache lui-même ses occupants, via la liste de modèles ou le state bag agAuto.

openSettings()

Ouvre la carte des réglages.

closeSettings()

Ferme la carte des réglages.

isSettingsOpen()

Indique si la carte des réglages est ouverte.

Exports serveur

isSeatbeltOn(source: number)

Renvoie côté serveur l'état de ceinture d'un joueur, lu depuis le state bag répliqué.

getBuckledPlayers()

Renvoie les ids serveur de tous les joueurs actuellement attachés.

setSeatbelt(source: number, on: boolean)

Attache ou détache depuis le serveur la ceinture d'un joueur.

Événements

Agency-HUD:seatbeltStateChanged

Se déclenche à chaque changement avec le nouvel état. Agency-HUD l'écoute ; toute autre resource peut le faire aussi.

19Agency-Elevator

Systeme d'ascenseur realiste avec UI Liquid Glass et un configurateur.

Parfait dans les scripts d'appartement/housing, QG de police, hopital ou tout interieur multi-etages. Utilise le configurateur pour placer les ascenseurs visuellement sans toucher aux fichiers de config.

Documentation complète

Événements

Agency-Elevator:server:requestTravel

Requete validee par le serveur pour se deplacer entre etages.

Voir l'exemple

Demande au serveur de valider l'acces puis de monter a l'etage 3.

TriggerServerEvent('Agency-Elevator:server:requestTravel', 'lspd-tower-1', 3)
Agency-Elevator:server:travelComplete

Confirme l'arrivée du client et envoie la notification 'arrivé à l'étage'.

Voir l'exemple

Indique au serveur l'arrivee a l'etage 3 pour envoyer la notification d'arrivee.

TriggerServerEvent('Agency-Elevator:server:travelComplete', 'lspd-tower-1', 3)
Agency-Elevator:server:requestElevators

Synchronise la liste d'ascenseurs chargée depuis la base de données vers le client demandeur.

Voir l'exemple

Demande la liste complete des ascenseurs au serveur a l'initialisation.

AddEventHandler('onClientResourceStart', function(res) if res == GetCurrentResourceName() then TriggerServerEvent('Agency-Elevator:server:requestElevators') end end)
Agency-Elevator:server:saveElevator

Upsert d'un ascenseur (id/label/étages) dans MySQL avec contrôle des permissions.

Voir l'exemple

Upsert admin d'un ascenseur avec une seule entree d'etage Lobby.

TriggerServerEvent('Agency-Elevator:server:saveElevator', { id = 'lspd-tower-1', label = 'LSPD HQ', floors = { { name = 'Lobby', coords = vector3(441.0, -981.5, 30.7) } } })
Agency-Elevator:server:loadElevator

Fait apparaitre/charge un ascenseur sauvegarde depuis la base de donnees.

Voir l'exemple

Charge les donnees d'un seul ascenseur dans le NUI du configurateur pour edition.

TriggerServerEvent('Agency-Elevator:server:loadElevator', 'lspd-tower-1')
Agency-Elevator:server:saveSettings

Persiste les réglages UI (position/échelle/couleur d'accent) dans MySQL et resynchronise tous les clients.

Voir l'exemple

Sauvegarde la position UI, la couleur d'accent et l'echelle et resync tous les clients.

TriggerServerEvent('Agency-Elevator:server:saveSettings', { position = 'top-right', accent = '#22c55e', scale = 1.0 })
Agency-Elevator:client:startTravel

Demarre une cinematique de trajet d'ascenseur pour le joueur.

Voir l'exemple

Joue le fondu et l'animation puis teleporte le ped a l'etage 2 du garage.

TriggerEvent('Agency-Elevator:client:startTravel', 'parking-garage', 2)
Agency-Elevator:client:applySettings

Envoie les réglages UI (accent/échelle/position) vers le NUI.

Voir l'exemple

Applique l'accent, l'echelle et la position du NUI ascenseur sur le client local.

TriggerEvent('Agency-Elevator:client:applySettings', { accent = '#0ea5e9', scale = 0.9, position = 'bottom-left' })
Agency-Elevator:client:openConfigurator

Ouvre le configurateur d'ascenseur en jeu (admin uniquement).

Voir l'exemple

Ouvre le NUI configurateur admin avec la liste d'ascenseurs actuelle.

TriggerEvent('Agency-Elevator:client:openConfigurator')
Agency-Elevator:client:refreshConfigurator

Actualise le configurateur ouvert après une sauvegarde/suppression sans le fermer.

Voir l'exemple

Rafraichit le NUI configurateur ouvert apres une sauvegarde sans le fermer.

AddEventHandler('Agency-Elevator:server:elevatorSaved', function() TriggerEvent('Agency-Elevator:client:refreshConfigurator') end)

20Agency-Multicharacter

Une sélection et création de personnage cinématique pour FiveM. Chaque personnage apparaît dans une scène adaptée à son métier, la police près du véhicule de patrouille, les médecins près de l'ambulance, les mécaniciens dans l'atelier, avec sa tenue sauvegardée, sa photo d'identité, son métier, son gang, son argent liquide, sa banque, son numéro de téléphone, son temps de jeu et sa dernière position sur une carte épurée. Les nouveaux personnages disposent de règles pour le nom et l'âge, d'une liste de nationalités avec recherche et du choix de la taille, puis le clothing script du serveur s'ouvre automatiquement. Des slots peuvent être vendus via Tebex : les acheteurs les débloquent avec leur transaction id. Les joueurs changent de personnage avec /logout. Framework, clothing script, inventaire, spawn selector et loading screen sont détectés automatiquement ; les personnages existants, les temps de jeu et les slots achetés de l'ancien multicharacter sont repris. QBCore, Qbox, ESX ou totalement standalone avec son propre stockage de personnages, 25 langues, la couleur s'adapte au logo du serveur.

Documentation complète

Exports client

IsOpen()

True while the character selection is open.

OpenSelection()

Opens the selection, for example from your own logout button.

Exports serveur

GetCharacter(source)

The loaded character (standalone: the full record).

GetCharacterId(source)

citizenid, ESX identifier or agency:<id> of the loaded character.

IsInSelection(source)

True while the player is in the selection.

GetSlots(license)

Slots of a licence.

AddSlots(license, amount)

Adds slots, returns the new total.

Logout(source)

Saves the character and opens the selection.

Événements

agency-multicharacter:server:loaded

A character was loaded or created (source, charid, isNew).

agency-multicharacter:server:deleted

A character was deleted (source, charid).

agency:selection

true while a selection screen is open, HUDs can hide themselves.

21Agency-Spawn

Un spawn selector avec caméra en direct pour FiveM. Pendant que le joueur navigue, la caméra survole Los Santos vers chaque lieu ; en choisir un le fait descendre du ciel jusqu'à son personnage. Il propose le dernier emplacement, des spawns publics issus d'une liste commentée, des spawns de métier et de gang visibles uniquement par les bons personnages, chaque maison Agency Housing que le personnage possède ou dont il a la clé, qb-apartments et un point d'arrivée fixe pour les nouveaux personnages. Les joueurs peuvent activer le spawn automatique à leur dernière position. Il répond aux événements qb-spawn et apartment, de sorte que la plupart des scripts multicharacter l'ouvrent sans modification, et fonctionne en parfaite harmonie avec Agency Multicharacter. QBCore, Qbox, ESX ou standalone, 25 langues, la couleur s'adapte au logo du serveur.

Documentation complète

Exports client

Open(options)

Opens the selector. options.isNew = true sends new characters to the arrival point.

IsOpen()

True while the selector is open.

Événements

agency-spawn:client:spawned

The character landed (id, kind).

agency-spawn:server:spawned

A player spawned (source, id, kind).

qb-spawn:client:setupSpawns / openUI

Answered when qb-spawn is not running, so other multicharacters open Agency Spawn.

22Agency-Housing

Système de logements basé sur une base de données pour FiveM. Détecte automatiquement QBCore, QBox et ESX, ou fonctionne entièrement en autonome sans framework. Les maisons se créent en jeu grâce à un créateur pas à pas plutôt qu'avec un fichier de config : intérieurs, shells, MLO et immeubles entiers d'appartements jusqu'à 40 logements derrière une seule porte d'entrée, chaque parcelle étant délimitée par une bordure de propriété visible depuis les airs. Les joueurs achètent des maisons, les revendent entre eux, louent et mettent en location, parcourent toutes les offres du marché et paient leur loyer à l'avance. L'argent reçu pendant qu'ils sont hors ligne leur est versé à leur prochaine connexion. Les clés, le verrouillage des portes MLO avec verrouillage automatique et sonnette, l'ameublement à partir d'un catalogue de plus de 1 300 accessoires, les caméras de surveillance et la garde-robe intégrée sont inclus, et une application Housing apporte le contrôle des serrures et les caméras en direct sur Agency Phone, Agency Pad, lb-phone et qs-smartphone-pro. Les scripts d'inventaire, de vêtements et de garages sont détectés automatiquement, la base de données se met à jour d'elle-même, et tout est enregistré dans MySQL.

Documentation complète

Exports client

IsInsideHouse()

Renvoie true tant que le joueur est dans une maison.

GetCurrentHouse()

La maison où se trouve actuellement le joueur, ou nil.

LeaveHouse()

Ramène le joueur dehors par l'entrée.

GetHouseAtPoint(coords)

La première maison dont la limite de propriété couvre ce terrain.

GetHousesAtPoint(coords)

Toutes les maisons auxquelles appartient ce terrain, pour les parcelles qui se chevauchent comme un immeuble.

GetCurrentProperty()

La parcelle sur laquelle se tient actuellement le joueur, ou nil.

IsOnProperty(houseId)

Indique si le joueur se tient sur la propriété de cette maison.

GetHouseZone(houseId)

La forme de limite enregistrée d'une maison.

GetAccent()

La couleur d'accent choisie par le joueur dans Housing > Réglages.

GetAppUrl(theme)

L'adresse de la page de l'application Housing, pour ajouter l'app à n'importe quel autre téléphone. Passe 'light' ou 'dark' pour forcer un thème.

GetAppData()

Tout ce qu'affiche l'application Housing : les logements que le joueur possède, loue ou dont il a une clé.

AppAction(action, houseId)

Lance une action de l'application pour une maison : 'waypoint', 'lock' ou 'cams'.

Exports serveur

GetHouses()

Toutes les maisons du serveur, indexées par id.

GetPlayerHouses(source)

Les maisons que possède ce joueur.

HasHouseAccess(source, houseId)

Indique si ce joueur possède la maison ou en a une clé.

GetHouseAtPoint(coords)

La première maison dont la limite de propriété couvre ce terrain.

GetHousesAtPoint(coords)

Toutes les maisons auxquelles appartient ce terrain, pour les parcelles qui se chevauchent.

GetHouseZone(houseId)

La forme de limite enregistrée d'une maison.

Événements

agency-housing:client:enteredZone

Se déclenche avec (houseId, house) quand le joueur entre sur une propriété, pour qu'un script de métier ou de cambriolage n'ait pas à interroger en boucle.

agency-housing:client:leftZone

Se déclenche avec (houseId, house) quand le joueur quitte une propriété.

agency-housing:garage:open

Se déclenche avec (houseId, houseName) lorsqu'un garage de maison est utilisé et que Config.Garage.script vaut 'event', afin que ton propre script de garage puisse l'ouvrir.

23Agency-Banking

Une banque complète pour FiveM qui fonctionne sous QBCore, Qbox, ESX ou entièrement en standalone. Les joueurs disposent d'un wallet avec compte bancaire et espèces, de cartes bancaires en quatre thèmes, de virements par ID ou vers des joueurs à proximité, de dépôts à terme dont seul le serveur fixe les intérêts, du trading d'actions et de crypto, d'un code PIN de distributeur et d'un historique complet des opérations. Sans framework, la banque gère ses propres comptes, et d'autres resources peuvent s'en servir comme système monétaire via les exports serveur. S'y ajoutent deux designs de menu, 13 langues, des marqueurs ou qb-target / ox_target, un curseur de taille d'affichage pour chaque joueur, des tables créées automatiquement au premier démarrage et l'app gratuite Agency Companion pour le solde, les virements, les dépôts à terme et les cartes en déplacement.

Documentation complète

Exports client

OpenBank()

Ouvre la banque pour le joueur local, où qu'il se trouve.

OpenATM()

Ouvre l'écran du code PIN du distributeur pour le joueur local. Le joueur doit d'abord avoir créé un code PIN dans une banque.

Exports serveur

GetBankBalance(source)

Renvoie le solde bancaire du joueur, sur tous les frameworks et en standalone.

GetCashBalance(source)

Renvoie l'argent liquide du joueur.

AddBankMoney(source, amount, reason)

Ajoute de l'argent au solde bancaire. Renvoie true en cas de succès, et une banque ouverte se met à jour toute seule.

RemoveBankMoney(source, amount, reason)

Retire de l'argent du solde bancaire. Renvoie false si le solde est insuffisant, et rien n'est retiré dans ce cas.

AddCashMoney(source, amount, reason)

Ajoute de l'argent liquide. Renvoie true en cas de succès.

RemoveCashMoney(source, amount, reason)

Retire de l'argent liquide. Renvoie false s'il n'y en a pas assez, et rien n'est retiré dans ce cas.

AddTransaction(identifier, type, amount, reason)

Ajoute une ligne à l'historique des opérations d'un joueur via son identifiant (citizenid sur QBCore et Qbox, identifier sur ESX, licence en standalone).

GetFramework()

Renvoie le framework détecté par la banque : qbcore, esx ou standalone.

Événements

agency_banking:client:OpenBank

À déclencher depuis le serveur pour ouvrir la banque de ce joueur.

agency_banking:client:MoneyChanged

À déclencher depuis le serveur après qu'un autre script a modifié l'argent d'un joueur, et une banque ouverte se met à jour.

Toujours bloqué après cette page ? Notre support prend le relais.

Toujours bloqué après cette page ? Notre support prend le relais.