Agency Docs

Parceiros dev

Integrar com os scripts da Agency

Estás a criar o teu próprio script de FiveM e queres ligá-lo aos nossos? Aqui está cada export e cada evento público, com um excerto de Lua para copiar.

Os exports permitem que o teu script chame uma função no nosso: exports['script-name']:FunctionName(args), tanto no cliente como no servidor. Os eventos vão ao contrário: são disparados com TriggerEvent ou TriggerServerEvent e ouvidos com RegisterNetEvent.

01Agency-Phone

Telefone multi-framework completo com SMS, chamadas, feed social, mail, câmera, wallet e checkout AgencyPay.

Use em qualquer script de loja/assalto/trabalho quando quiser um fluxo de pagamento limpo dentro do telefone em vez de descontar dinheiro na hora. Ideal também para notificações in-game com aceitar/recusar (ex. pedidos de táxi, chamadas de dispatch).

Documentação completa

Exports de cliente

IsPhoneOpen()

Retorna true se a UI do telefone está aberta no momento.

Ver exemplo

Evita abrir um menu próprio enquanto o telefone está aberto.

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

Retorna true se o telefone está ligado.

Ver exemplo

Pausa a sincronização em segundo plano enquanto o telefone está desligado.

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

Retorna a tabela bruta de dados do telefone.

Ver exemplo

Exibe toda a tabela de dados do telefone para depuração.

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

Retorna o handle da entidade do prop do telefone segurado, ou 0 se não estiver visível.

Ver exemplo

Oculta rapidamente o prop do telefone sem mexer na lógica.

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

Retorna true se o telefone está expandido na tela.

Ver exemplo

Alias legado que bloqueia um minigame enquanto o telefone está aberto.

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

Retorna true quando o jogador tem um data plan de operadora ativo.

Ver exemplo

Avisa o jogador quando não há plano de dados ativo.

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()

Retorna o objeto completo de estado do telefone.

Ver exemplo

Faz cache do estado do telefone só quando aberto, ligado e sincronizando.

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()

Retorna true se o jogador possui um item de telefone.

Ver exemplo

Bloqueia o comando de emergência se o jogador não tiver telefone.

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)

Registra um terminal comercial AgencyPay recorrente.

Ver exemplo

Cria um terminal Agency Pay em tempo de execução para a oficina.

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)

Remove um terminal AgencyPay registrado anteriormente.

Ver exemplo

Remove o ponto de pagamento quando a loja fecha à noite.

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

Abre a folha de checkout AgencyPay para pagamento seguro com cartão.

Ver exemplo

Abre o telefone e inicia um pequeno pagamento de gorjeta 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)

Inicia uma chamada pma-voice usando uma tabela de contato.

Ver exemplo

Inicia uma chamada para o contato enviado pelo 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)

Mostra uma notificação no telefone com botões aceitar/recusar opcionais.

Ver exemplo

Exibe uma notificação bloqueante de aceitar/recusar para guincho.

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)

Coloca uma app do teu próprio resource no ecrã inicial do telefone e na Store. Devolve true, ou false e um erro. Vê Apps Personalizados.

UnregisterApp(id)

Remove uma app adicionada com RegisterApp. Acontece sozinho quando o resource que a registou para.

GetRegisteredApps()

Devolve a tabela de todas as apps registadas por outros resources, indexada por id.

ClosePhone()

Fecha o telefone, por exemplo antes de abrir a tua própria interface.

IsPhoneRadioActive()

Devolve dois valores: true enquanto o rádio do telefone está a tocar, e a estação que está a tocar.

StopPhoneRadio()

Para o rádio do telefone.

Exports de servidor

SendMail(identifier, mailData)

Envia um mail para um jogador (online ou offline).

Ver exemplo

Envia um e-mail de recibo ao jogador via seu identificador 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)

Publica uma mensagem no feed Pulse (chirper).

Ver exemplo

Publica um anúncio de recompensa no Chirper a partir do servidor.

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 registrado quando ESX+ox_inventory é detectado; abre o phone para o portador do inventário.

Ver exemplo

Conecta-se ao usingItem do ox_inventory para abrir o telefone.

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)

Confirma no servidor que este jogador pagou o pagamento Agency Pay com esse id nos últimos 60 segundos, por pelo menos minAmount, e consome o pagamento para que conte só uma vez. requestId é o id que passaste a StartAgencyPayCheckout. Devolve true e o valor, ou false. Chama-o antes de entregar a mercadoria.

Eventos

agency-phone:client:notify

Exibe uma notificação do phone (title, text, icon, color, timeout, silent).

Ver exemplo

Dispara um toast não bloqueante avisando que o veículo está pronto.

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

Aciona o fluxo de abertura do phone quando o item de inventário é usado.

Ver exemplo

Encaminha um evento de uso de item para o fluxo de abertura do telefone.

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

Solicita ao phone navegar para um app personalizado por id (usado por módulos de app).

Ver exemplo

Abre direto um app de banco personalizado pelo id.

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

Notifica o client de um e-mail recém-recebido.

Ver exemplo

Escuta notificações de novo e-mail e as registra para depuração.

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

Solicita uma sincronização nova dos dados do phone para o jogador chamador.

Ver exemplo

Pede ao servidor uma nova sincronização completa do telefone.

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

Cancela ou encerra uma chamada ativa.

Ver exemplo

Encerra a chamada ativa via um atalho próprio ou comando.

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

Envia uma mensagem SMS (newMsg, targetNumber).

Ver exemplo

Envia rapidamente um SMS para um número alvo a partir do 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 uma única chave/valor de configuração do phone para o jogador.

Ver exemplo

Salva uma configuração do telefone ao ser alterada no cliente.

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

Realiza uma transferência Agency Airdrop para um jogador próximo.

Ver exemplo

Dispara um Agency Airdrop a jogadores próximos com o valor digitado.

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

Compra um data plan de operadora para o jogador (price, planName).

Ver exemplo

Compra um plano de dados após o jogador escolhê-lo em uma UI personalizada.

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

Cria um dispatch do phone a partir de uma chamada/SMS de emergência.

Ver exemplo

Gera um registro de dispatch do telefone a partir de uma ligação de emergência.

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

Tablet AgencyOS com um ecossistema completo de apps. Registre seus próprios apps via config.lua.

Perfeito para dashboards de admin, apps de gestão empresarial, mapas de território de gangs ou qualquer UI custom que seus jogadores precisem dentro do GTA, vive dentro de uma bonita carcaça de tablet sem trabalho extra.

Documentação completa

Exports de cliente

IsPadOpen()

Retorna true se a UI do tablet está aberta (verifique o estado do tablet antes de mostrar UIs).

Ver exemplo

Evita reabrir a UI da tablet se a tablet do jogo já está aberta.

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

Retorna true se o tablet estiver ligado.

Ver exemplo

Pausa o polling da frota enquanto o tablet está desligado.

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()

Retorna a tabela PadData completa do lado client.

Ver exemplo

Exibe toda a tabela de dados do tablet no cliente para inspeção.

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

Retorna o handle da entidade do prop do tablet segurado, ou 0 se não visível.

Ver exemplo

Oculta brevemente o prop do tablet durante uma cutscene personalizada.

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() mantido por compatibilidade retroativa.

Ver exemplo

Alias legado que bloqueia um minigame enquanto o tablet está aberto.

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

Retorna true quando o jogador tem um data plan de operadora ativo no tablet.

Ver exemplo

Avisa o jogador se não há plano de dados ativo no tablet.

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()

Retorna a tabela { isOpen, poweredOn, syncEnabled } resumindo o status atual do tablet.

Ver exemplo

Faz cache do estado do tablet só quando aberto e ligado.

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()

Retorna true se o jogador tem o item tablet configurado no inventário.

Ver exemplo

Bloqueia o comando do dispatch se o jogador não tiver tablet.

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)

Registra um terminal Agency Pay em runtime numa coordenada (markers, blip, checkout payload).

Ver exemplo

Cria um terminal Agency Pay em tempo de execução no hospital.

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)

Remove um terminal Agency Pay registrado anteriormente por id.

Ver exemplo

Remove um ponto de pagamento do tablet quando o local fecha.

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

Abre o tablet (se necessário) e inicia um checkout Agency Pay com o payload de pagamento dado.

Ver exemplo

Abre o tablet e inicia um pagamento Agency Pay do IPTU.

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

Inicia uma chamada de saída do tablet para o contato fornecido ({ name, number, ... }).

Ver exemplo

Inicia uma chamada saindo do tablet ao receber um 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)

Exibe uma notificação de ação com botões accept/deny; bloqueia até a resposta e retorna true/false.

Ver exemplo

Exibe uma notificação bloqueante no tablet para iniciar uma entrega.

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)

Coloca uma app do teu próprio resource no ecrã inicial do pad e na Store. Devolve true, ou false e um erro.

UnregisterApp(id)

Remove uma app adicionada com RegisterApp.

GetRegisteredApps()

Devolve a tabela de todas as apps registadas por outros resources, indexada por id.

ClosePad()

Fecha o pad, por exemplo antes de abrir a tua própria interface.

ClosePhone()

O mesmo que ClosePad(), com o nome que o Agency Phone usa, para que o mesmo código de integração funcione com ambos.

IsPhoneRadioActive()

Devolve dois valores: true enquanto o rádio do pad está a tocar, e a estação que está a tocar.

StopPhoneRadio()

Para o rádio do pad.

Exports de servidor

SendMail(identifier, mailData)

Envia um mail para a caixa principal do jogador pelo identifier (retorna sucesso).

Ver exemplo

Envia um e-mail de aviso de fatura a um jogador via identificador.

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 registrado ao detectar ESX+ox_inventory; abre o tablet para o portador do inventário.

Ver exemplo

Conecta-se ao ox_inventory para abrir o tablet via 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 para o id legado do item phone; abre o tablet para o portador do inventário.

Ver exemplo

Redireciona o item legado de telefone para abrir a UI do tablet.

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()

Devolve as cotações atuais de ações e criptomoedas, indexadas pelo id do mercado.

PushPadData(source)

Envia uma cópia atualizada dos dados do tablet para o pad deste jogador. Devolve false se não foi possível gerá-la.

Eventos

agency-pad:client:notify

Exibe uma notificação do tablet (title, text, icon, color, timeout, silent).

Ver exemplo

Dispara um toast não bloqueante no tablet sobre missão desbloqueada.

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

Abre o tablet quando o item de inventário é usado.

Ver exemplo

Encaminha um evento de uso de item para o fluxo de abertura do tablet.

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

Dispare no client para abrir um app específico dentro do tablet.

Ver exemplo

Abre direto o app personalizado de gestão de frota.

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

Notifica o client de um e-mail recém-recebido.

Ver exemplo

Escuta notificações de e-mail no tablet e registra localmente.

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

Notifica o client de um evento de paycheck horário do business.

Ver exemplo

Reage a um paycheck horário de empresa enviado pelo tablet.

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

Solicita uma sincronização nova dos dados do tablet para o jogador chamador.

Ver exemplo

Pede ao servidor uma nova sincronização completa do tablet.

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

Envia uma mensagem SMS (newMsg, targetNumber).

Ver exemplo

Envia um SMS do tablet via comando personalizado e número de destino.

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

Realiza uma transferência Agency Airdrop para um jogador próximo.

Ver exemplo

Dispara um Agency Airdrop a jogadores próximos a partir do tablet.

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

Compra um data plan de operadora para o jogador.

Ver exemplo

Compra um plano de dados do tablet após escolha em UI personalizada.

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

Cria um dispatch do tablet a partir de uma chamada/SMS de emergência.

Ver exemplo

Gera um registro de dispatch do tablet a partir de uma chamada de emergência.

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

Cria um novo business/organização para o jogador.

Ver exemplo

Cria um novo registro de empresa via comando in-game personalizado.

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

Admin cria um business em nome de outro jogador.

Ver exemplo

Encaminha um comando admin para criar uma empresa para outro jogador.

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

Inicia uma missão de business configurada para o jogador.

Ver exemplo

Inicia uma missão de empresa configurada para o jogador chamador.

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

Envia uma candidatura a uma listagem de business.

Ver exemplo

Envia candidatura a um anúncio de emprego do tablet pelo id.

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

Cria um rascunho de fatura de mecânico.

Ver exemplo

Cria um rascunho de fatura do mecânico para uma placa e valor.

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

Envia uma fatura de mecânico a um cliente para pagamento.

Ver exemplo

Envia uma fatura de mecânico finalizada ao cliente para pagamento.

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

O MDT cria uma multa/fatura para um cidadão.

Ver exemplo

Cria uma multa/fatura MDT para um cidadão via net event próprio.

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

03Agency-Watch

Agora com o AgencyOS27: uma atualização grátis para quem já tem o relógio. Um smartwatch a sério para FiveM, não um HUD. Dez mostradores, um Studio para caixa, bracelete e cores, anéis de atividade, cronómetro, temporizador, alarme, meteorologia, bússola, velocímetro, quatro jogos, um centro de controlo e uma loja de apps, tudo sem qualquer outra resource. O Angy está na coroa e comanda o relógio a pedido, com regras fixas e sem IA. Um Agency Phone detetado desbloqueia chamadas, mensagens, mail, contactos e Agency Pay no pulso, e abre o relógio às tuas próprias apps. Gratuito, QBCore / Qbox / ESX / standalone, dez idiomas.

Documentação completa

Exports de cliente

OpenWatch(mitte)

Abre o relógio. Passa true para o abrir ao centro do ecrã em vez do canto configurado.

CloseWatch()

Fecha o relógio e liberta o foco NUI.

ToggleWatch()

Fecha o relógio se estiver aberto e, caso contrário, abre-o.

IsWatchOpen()

Devolve true enquanto a interface do relógio está no ecrã.

IsWatchLinked()

Devolve false se o jogador desligou a ligação ao Agency Phone no centro de controlo.

RunWatchAction()

Aciona o que estiver atribuído ao botão de ação laranja (Config.ActionButton).

GetWatchSettings()

Devolve a tabela completa de definições a partir da qual a interface do relógio é construída (tema, mostrador, tamanho, apps, idioma).

SetWatchSetting(key, value)

Define uma definição, guarda-a por personagem e aplica-a de imediato.

SetWatchSettings(table)

Define várias definições de uma vez e reconstrói a interface uma só vez em vez de uma vez por valor.

RequestWatchPairing()

Pede ao servidor um código de emparelhamento para a app Companion. A resposta chega como evento, não como valor de retorno.

ShowUpdate()

Abre o ecrã de atualização de software do AgencyOS.

HandlesDeath()

Devolve true se o relógio mostrar o ecrã de emergência ao morrer. O Agency Phone consulta isto para que os dois dispositivos nunca o mostrem ao mesmo tempo.

GetFitness()

Devolve os valores de atividade do dia atual: passos, distância, minutos ativos e calorias.

SetWatchAppInstalled(id, on)

Instala ou remove uma app para este jogador. O mesmo que a App Store faz, para que um servidor possa dar uma app como recompensa.

FindWatch()

Faz o relógio tocar e acender, como a função de procura da app Companion.

StopFindWatch()

Para o toque antes de terminar sozinho.

IsWatchRinging()

Devolve true enquanto o relógio está a tocar.

Exports de servidor

IsPremium(src)

Devolve true se o relógio deste jogador correr na versão Pro. O veredito vem do handshake com o Agency Phone original, nunca do cliente.

04Agency-Zero

Um quatro lugares elétrico e autónomo para FiveM, gratuito. O Project 0 é um veículo próprio, construído de raiz em Blender com Sollumz: sem puxadores, portas que abrem em onda, um volante a sério e pedais para assumir o controlo. Os jogadores chamam-no a partir do Agency Phone, do Agency Pad ou da app Agency Companion no telemóvel real, e ele conduz até eles e estaciona junto ao passeio ao lado deles em vez de ir procurar um lugar. Lá dentro, o AgencyOS27 corre no tablet do tablier e no menu Z: um mapa para tocar, o Angy, o assistente integrado, com regras fixas e sem IA, com quem se fala por palavras simples, seis assistentes de condução com um interruptor geral, reprogramação por etapas, chips de som e estatísticas por carro e por dono. Cada carro tem o seu próprio número, ligado ao dono na base de dados, por isso a propriedade, o tuning e cada definição sobrevivem a um reinício. QBCore, Qbox e ESX são detetados automaticamente, também corre em standalone, e todos os textos vêm em 27 idiomas com o inglês como base.

Documentação completa

Exports de cliente

ZeroStatus()

Devolve o estado do Project 0 do jogador: se existe, onde está, bateria, autonomia e se há uma viagem a decorrer.

ZeroCall()

Chama o carro até ao jogador. Conduz até lá e estaciona junto ao passeio ao lado dele.

ZeroDeliver()

Manda entregar o carro quando não está no mapa. Custa Config.Remote.deliveryFee, grátis sem framework.

ZeroGarage()

Manda o carro de volta para a garagem.

ZeroCancel()

Cancela uma chamada ou viagem em curso.

ZeroFind()

Mostra na parte de baixo do ecrã a direção do carro durante Config.Remote.findRadarSeconds segundos.

ZeroDoors(on)

Abre as portas com true e fecha-as com false. Movem-se em onda, não todas ao mesmo tempo.

ZeroLock(on)

Tranca o carro com true e destranca-o com false.

ZeroLights(on)

Liga e desliga as luzes.

ZeroBuyInfo()

Indica se o jogador pode comprar um Project 0 e quanto custa. Quem já tem um não recebe nada.

ZeroBuy()

Compra um Project 0 para este jogador. O carro fica ligado a ele no mesmo passo.

ZeroRefresh()

Lê o estado de novo, para uma interface que quer valores atualizados sem esperar pelo próximo tick.

IsRideActive()

Devolve true enquanto decorre uma viagem autónoma.

CallProjectZero()

Inicia uma viagem para o destino atual. Sem destino, é usado o ponto marcado no mapa.

CancelProjectZero()

Termina a viagem. O carro encosta e para.

IsCockpitOpen()

Devolve true enquanto o tablet do tablier está no ecrã.

IsManualOverride()

Devolve true se o condutor tiver pegado no volante. Sem essa tomada de controlo, o Zero só conduz sozinho.

AnyDoorOpen(veh)

Devolve true se pelo menos uma porta desse veículo estiver aberta.

OpenDoors(veh, opts)

Abre as portas de um veículo com a animação em onda.

CloseDoors(veh, opts)

Volta a fechá-las.

AnimateDoors(veh, open, opts)

Abre ou fecha conforme o segundo argumento, para código que decide em tempo de execução.

SoundChipOf(veh)

Devolve o chip de som montado nesse carro. Mudar o chip muda o motor, nunca o rádio.

Exports de servidor

IsPro(src)

Devolve true se o Zero deste jogador correr na versão Pro. O veredito vem do handshake HMAC com o Agency Phone original, nunca do cliente.

ZeroVin(plate)

Devolve o número de veículo associado a uma matrícula. Cada Project 0 recebe um quando é entregue e fica com ele para sempre.

ZeroCarsOf(src)

Devolve todos os Project 0 deste jogador, com número, matrícula, etapa de tuning e estatísticas.

ZeroSync(src)

Volta a enviar o estado do registo a este jogador, por exemplo depois de outro script mudar a propriedade.

Eventos

agency-zero:client:rideStarted

Começou uma viagem. Inclui o destino.

agency-zero:client:rideEnded

A viagem terminou, foi cancelada ou chegou.

agency-zero:client:arrived

O carro chegou ao jogador e abriu as portas.

05Agency-Lifeinvader V3

A agência de publicidade da cidade: anúncios de jogadores em todas as telas, com categorias, impulsionamentos, agendamento, rascunhos, revisão, um trabalho para a equipe, um redator de IA e um app para Agency Phone e Agency Pad.

Compatível com scripts de empresas e trabalhos que publicam anúncios automaticamente, scripts de eventos e cassinos que anunciam o que está acontecendo, registros no Discord de cada anúncio, celulares e menus radiais que abrem o app e ferramentas de administração que verificam os administradores do Lifeinvader.

Documentação completa

Exports de cliente

OpenApp(tab)

Abre o app na página indicada: 'feed', 'create', 'mine', 'drafts' ou 'settings'. Sem uma página, abre a última página usada ou o feed ao vivo.

Ver exemplo

Abre o app na tela Novo anúncio pelo seu próprio menu radial ou celular.

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

Abre o app no feed ao vivo.

Ver exemplo

Abre o feed ao vivo, por exemplo, em uma banca de jornal.

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

Fecha o app.

Ver exemplo

Fecha o app antes de abrir seu próprio menu.

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

Verdadeiro enquanto o app estiver aberto neste cliente.

Ver exemplo

Impede que seu menu seja aberto sobre o app.

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

Exports de servidor

PostAd(text, opts)

Publica um anúncio do próprio servidor: gratuito, nunca revisado e primeiro na fila. opts: author, category, instant (executa imediatamente), reps, interval, duration e boosted. Retorna o ID do anúncio ou nil e um código de erro.

Ver exemplo

Publica um anúncio oficial pelo seu script de cassino ou evento, gratuitamente e no início da fila.

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

O feed ao vivo como aparece no app, do mais recente para o mais antigo: id, text, category, boosted, author (nil para anúncios anônimos), sentAt, created, sent e live.

Ver exemplo

Lê os anúncios recentes, para um site, um jornal ou uma aplicação de telemóvel.

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

Um anúncio no mesmo formato do feed ou nil.

Ver exemplo

Procura um anúncio pelo número.

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

Verdadeiro quando o jogador é administrador do Lifeinvader por ACE, grupo ou identificador.

Ver exemplo

Usa as permissões de administrador do Lifeinvader no teu próprio script.

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

Eventos

agency-lifeinvader:adShown

Evento local em cada cliente quando um anúncio aparece na tela, com id, text, category, catLabel, icon, author (nil quando anônimo), boosted, duration e system (true para anúncios oficiais).

Ver exemplo

Reage no cliente quando um anúncio aparece, por exemplo, num outdoor.

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

Evento local no servidor sempre que um anúncio é executado, com o anúncio no formato do feed. Útil para logs ou um webhook do Discord.

Ver exemplo

Regista todos os anúncios que são transmitidos no servidor.

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

Mantido desde V3: abre o app em Novo anúncio, para que os scripts que abriam o menu antigo continuem funcionando.

Ver exemplo

Abre a aplicação na página Novo anúncio para um jogador, como fazia o evento V3.

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

Mantido desde V3: abre o app no feed ao vivo.

Ver exemplo

Abre o feed em direto para um jogador, como fazia o evento V3.

TriggerClientEvent('agency_lifeinvader:openRecentMenu', source)

06Agency-Blackmarket V2

Um mercado negro vivo com dealers que andam pela cidade, mercado ao vivo, regateio, encomendas para recolher, entregas, um recetador, lavagem de dinheiro e cinco níveis de reputação.

Encaixa em scripts de gangues, assaltos e droga que devam dar reputação ou crédito, em ferramentas de polícia e de dispatch que reajam aos negócios e às mudanças dos dealers, e em menus radiais ou telemóveis que abram o menu do mercado negro.

Documentação completa

Exports de cliente

OpenMenu()

Abre o menu do /ablackmarket, por exemplo a partir de um menu radial ou de uma aplicação de telemóvel. Aplicam-se as mesmas verificações que no comando.

Ver exemplo

Abre o menu do mercado negro a partir do teu próprio menu radial ou da tua aplicação de telemóvel.

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

Fecha o menu e devolve o mouse para o jogo.

Ver exemplo

Fecha o menu, por exemplo antes de uma cena tua.

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

Devolve true enquanto o menu do mercado negro estiver aberto, junto de um dealer ou em qualquer sítio.

Ver exemplo

Verifica se o menu está aberto antes de a tua própria interface aparecer.

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

Exports de servidor

GetReputation(source)

Os pontos de reputação de um jogador, 0 para quem ainda não tem nenhum.

Ver exemplo

Só deixa iniciar o teu trabalho ou assalto a jogadores com reputação suficiente.

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)

Define a reputação de um jogador para um valor fixo, nunca abaixo de 0. Devolve true em caso de sucesso.

Ver exemplo

Define a reputação de um jogador para um valor fixo.

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

Adiciona reputação, ou retira-a com um valor negativo. Um novo nível é anunciado ao jogador e à aplicação Companion. Devolve true em caso de sucesso.

Ver exemplo

Recompensa um trabalho concluído com reputação; um novo nível é anunciado.

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

Devolve dois valores: o número do nível do jogador (de 1 a 5 por predefinição) e o nome dele.

Ver exemplo

Lê o número do nível e o nome dele, por exemplo para desbloquear conteúdo teu.

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)

Adiciona crédito de dealer, que o jogador pode usar na próxima compra ou encomenda. Devolve true em caso de sucesso.

Ver exemplo

Dá a um jogador crédito de dealer para a próxima compra ou encomenda.

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

Muda de imediato um dealer para outro dos seus locais. Devolve true se ele mudou.

Ver exemplo

Muda de imediato um dealer para outro dos seus locais.

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

O dealer desaparece durante os minutos indicados e depois aparece noutro dos seus locais, como após uma visita da polícia.

Ver exemplo

Afasta um dealer durante algum tempo, como após uma visita da polícia.

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

True enquanto o dealer estiver num dos seus locais e não tiver saído.

Ver exemplo

Verifica se um dealer está neste momento num dos seus locais.

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

Inicia uma promoção relâmpago com itens ao acaso com desconto. Sem minutos, usa-se o tempo de Config.FlashSale.

Ver exemplo

Inicia uma promoção relâmpago a partir do teu próprio evento ou agenda.

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

Eventos

agency-blackmarket:deal

Dispara no servidor com (source, kind, data) após cada negócio. kind é buy, sell, launder, order, pickup ou job, e data contém os detalhes do negócio, como o dealer, os itens e o total.

Ver exemplo

Reage a cada negócio, por exemplo para os teus próprios logs ou um tablet da polícia.

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

Dispara no servidor com (dealerId, pos, reason) quando um dealer muda de local. reason é rotate, return, admin ou export.

Ver exemplo

Segue os dealers, por exemplo para um trabalho de informador ou de detetive.

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

Dispara no servidor com (items, minutes) quando começa uma promoção relâmpago. items associa cada item em promoção ao seu desconto em percentagem.

Ver exemplo

Anuncia uma promoção relâmpago nos teus próprios canais.

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

Um trabalho de mineração com sete áreas, três ferramentas, 100 níveis, fornos, corte de gemas, contratos e um mercado com preços variáveis, tudo em um único menu.

Compatível com scripts de missões e conquistas que reagem à mineração, scripts de economia e trabalhos que consultam os preços de mercado, menus radiais e telefones que abrem o menu, além de ferramentas de administração que definem níveis ou concedem XP.

Documentação completa

Exports de cliente

OpenMenu(page)

Abre o menu, por exemplo, a partir de um menu radial ou de um aplicativo de celular. page é overview (padrão), market, tools, smelter, cutting ou contracts.

Ver exemplo

Abre o menu na página do mercado pelo seu próprio menu radial ou aplicativo de telefone.

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

Fecha o menu e devolve o mouse para o jogo.

Ver exemplo

Fecha o menu antes de o seu próprio menu abrir.

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

Verdadeiro enquanto o menu estiver aberto.

Ver exemplo

Impede que o seu menu abra sobre o menu de mineração.

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

Verdadeiro enquanto o jogador estiver minerando ou lapidando uma gema.

Ver exemplo

Impede que o seu script interrompa a animação de mineração ou corte.

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

O nível de mineração do jogador.

Ver exemplo

Lê o nível do jogador, por exemplo, para um HUD ou uma aplicação de telemóvel.

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

Exports de servidor

GetLevel(source)

O nível de mineração de um jogador, 0 quando o jogador é desconhecido.

Ver exemplo

Verifica o nível de mineração no servidor antes de o seu script permitir alguma ação.

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

Nível e progresso como { level, xp, need, pct, max }.

Ver exemplo

Lê o nível e o progresso, por exemplo, para uma aplicação de telemóvel ou um placar.

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

Adiciona XP, com subida de nível e a respectiva mensagem. Retorna true quando o jogador é encontrado.

Ver exemplo

Concede XP de mineração como recompensa de uma missão ou evento próprio.

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

Define o nível entre 1 e o nível máximo e inicia com 0 XP.

Ver exemplo

Define o nível, por exemplo, a partir da sua própria ferramenta de administração.

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

O que o jogador fez até agora: { mined, smelted, cut, broken, sold, earned, contracts }.

Ver exemplo

Lê o que um jogador minerou e ganhou, para um quadro de líderes ou conquistas.

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

O preço de mercado atual de um item por unidade.

Ver exemplo

Lê o preço de mercado atual, por exemplo, para um indicador de preços ou uma loja que compre os mesmos itens.

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

Eventos

agency-minerjob:mined

Disparado no servidor após uma mineração render pagamento, com source, item, count e a área de mineração. Use AddEventHandler para escutar, por exemplo, em missões ou estatísticas.

Ver exemplo

Reage no servidor a cada mineração que concedeu uma recompensa.

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

Disparado no servidor após uma venda, com source, item, count e o valor total pago.

Ver exemplo

Reage no servidor a cada venda, para registos ou estatísticas.

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

Disparado no servidor quando um contrato é entregue, com source, item, count e o pagamento.

Ver exemplo

Reage no servidor quando um contrato foi entregue.

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

08Agency-Repairkit V2

Dano realista para veículos com quatro kits de reparação, testes de habilidade e um bónus de mecânico.

Adequa-se a empregos de mecânico e de reboque, a lojas que vendem kits, e a qualquer script que deva reagir a uma reparação concluída ou ao nível de dano do carro que um jogador conduz.

Documentação completa

Exports de cliente

IsRepairing()

Devolve true enquanto o jogador local está a trabalhar num veículo, por exemplo para manter o teu próprio menu fechado.

Ver exemplo

Mantém o teu próprio menu fechado enquanto o jogador repara um veículo.

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

Motor, carroçaria e depósito em %, os pneus, a sujidade, o nível de dano e se o depósito tem fuga. Sem argumento, lê o veículo em que o jogador está sentado.

Ver exemplo

Lê o estado do veículo que o jogador conduz.

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()

Abre o menu do /arepairkit, por exemplo a partir de um aplicativo de celular ou de um menu radial.

Ver exemplo

Abre o menu do kit de reparo a partir do seu próprio menu radial ou aplicativo de celular.

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

Fecha o menu e devolve o mouse para o jogo.

Ver exemplo

Fecha o menu, por exemplo antes de uma cutscene sua.

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

Retorna true enquanto o menu estiver aberto.

Ver exemplo

Verifica se o menu está aberto antes que a sua própria interface apareça.

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

Exports de servidor

UseKit(source, kit)

Inicia um kit para um jogador como se o item tivesse sido usado, com todas as verificações. Devolve true, ou false e o motivo. Para inventários e lojas personalizados.

Ver exemplo

Inicia o kit de assistência na estrada para um jogador a partir de um inventário personalizado.

-- 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)

Adiciona kits ao inventário de um jogador através do inventário detetado. Devolve true em caso de sucesso.

Ver exemplo

Dá a um jogador dois kits de pneus através do inventário detetado.

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

True enquanto esse jogador está a trabalhar num veículo.

Ver exemplo

Salta uma tarefa enquanto o jogador está a reparar.

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

Todos os kits configurados com o respetivo item, designação, tipo de trabalho e duração.

Ver exemplo

Lista todos os kits com o respetivo item e etiqueta.

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)

O export de item do ox_inventory. As entradas de itens em install/ox_inventory.lua apontam para ele; não se destina a ser chamado diretamente.

Ver exemplo

A entrada do item que liga o ox_inventory aos kits.

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

Eventos

agency-repairkit:repaired

Disparado no servidor com (source, netId, kit) depois de uma reparação terminar e o kit ser gasto. Útil para logs, pagamentos ou progressão no emprego.

Ver exemplo

Regista cada reparação concluída no servidor.

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

Disparado no cliente do jogador que repara com (netId, kit) quando uma reparação é concluída.

Ver exemplo

Reage no cliente do jogador que está a reparar.

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

Disparado no cliente do condutor com (level, vehicle) sempre que o nível de dano muda: ok, light, medium, heavy ou critical.

Ver exemplo

Acompanha o nível de dano do veículo que o jogador conduz.

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

09Agency-Vehiclekeys V2

Chaves universais para veículos com chaveiro e controle remoto, chaves permanentes e temporárias, chaves de emprego, arrombamento de fechaduras e ligação direta com alertas à polícia, além de uma página de administração.

Compatível com garagens, lojas e locadoras de veículos que entregam chaves, scripts de emprego com veículos próprios, scripts de assalto e roubo de carros que devem verificar ou entregar chaves, HUDs que acompanham o motor e menus radiais ou celulares que abrem o chaveiro.

Documentação completa

Exports de cliente

HasKeys(plate)

True quando o jogador tem uma chave para esta placa: owner, shared ou temporary. Os veículos de trabalho são destrancados pelo modelo e não são contabilizados aqui.

Ver exemplo

Verifica a chave antes que seu script permita que o jogador use o carro.

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

Todas as chaves do jogador como uma lista de { plate, kind }. kind pode ser owner, shared ou temp.

Ver exemplo

Lista todas as chaves do jogador, por exemplo, para um aplicativo de celular.

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

Tranca ou destranca um veículo para o qual o jogador tem uma chave, com a mesma animação e verificações de G. Se não houver um veículo, usa o mais próximo dentro do alcance.

Ver exemplo

Tranca ou destranca o carro mais próximo pelo seu próprio menu radial.

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

Liga ou desliga o motor do veículo que o jogador está dirigindo, como U.

Ver exemplo

Liga ou desliga o motor pelo seu próprio menu ou HUD do carro.

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

Abre o chaveiro, por exemplo, a partir de um menu radial ou de um aplicativo de telefone.

Ver exemplo

Abre o chaveiro pelo seu próprio menu radial ou aplicativo de celular.

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

Fecha o chaveiro e devolve o mouse ao jogo.

Ver exemplo

Fecha o porta-chaves antes de abrir o seu próprio menu.

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

True enquanto o chaveiro está aberto.

Ver exemplo

Impede que o seu menu abra sobre o porta-chaves.

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

Inicia uma tentativa de arrombamento no carro à frente do jogador ou uma ligação direta quando ele está no banco do motorista. Destinado a itens do ox_inventory: client = { export = 'Agency-Vehiclekeys.useLockpick' }.

Ver exemplo

Permite que os jogadores usem a gazua no menu do ox_inventory.

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

Exports de servidor

GiveKeys(source, plate, mode, hours)

Dá uma chave. mode 'temp' (padrão) é uma chave temporária, opcionalmente por um número de horas, e 'perm' é uma chave salva. Um source ou um identifier funciona.

Ver exemplo

Dá uma chave temporária, por exemplo, quando um carro é alugado ou criado por um emprego.

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

Retira uma chave compartilhada ou temporária. Retorna true quando havia uma.

Ver exemplo

Retira a chave quando o aluguer termina ou o trabalho é concluído.

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

True quando o jogador tem uma chave para a placa, incluindo chaves de trabalho para um veículo próximo.

Ver exemplo

Verifica no servidor se o jogador realmente tem a chave.

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

Define o jogador como proprietário de uma placa, para garagens e lojas em servidores standalone. Um proprietário anterior perde a chave.

Ver exemplo

Define o comprador como proprietário do carro em servidores standalone.

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

Remove o proprietário salvo por este script para uma placa.

Ver exemplo

Remove o proprietário guardado quando o carro é vendido ou desmantelado.

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

O identifier do proprietário e sua origem: 'framework' para veículos de propriedade de QBCore, Qbox ou ESX, 'store' para proprietários salvos por este script.

Ver exemplo

Encontra o proprietário de uma matrícula, para ferramentas policiais ou scripts de apreensão.

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

Todos os outros que têm uma chave para a matrícula, numa lista de { identifier, kind, name, expires }.

Ver exemplo

Mostra quem tem a chave de um carro, por exemplo, num computador da polícia.

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

Tranca ou destranca um veículo para todos, sem verificar se têm uma chave. Para scripts que precisam abrir um carro.

Ver exemplo

Abre ou tranca um carro para todos, sem verificar se têm a chave.

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

Verdadeiro quando o veículo está trancado.

Ver exemplo

Lê o estado da tranca no servidor.

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

O framework detetado pelo script: qbcore, esx ou standalone.

Ver exemplo

Permite que o seu script siga a framework detetada pelo script de chaves.

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

Eventos

Agency:Keys:GiveServer

Solicita uma chave temporária para uma matrícula, como fazem Agency Garage e Agency Vehicleshop. Dispare do client com a matrícula. O carro tem de estar perto do jogador ou ser dele.

Ver exemplo

Pede uma chave para um carro que acabou de ser criado junto ao jogador.

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

O evento de chave de qb-vehiclekeys, interpretado da mesma forma, para que garagens e lojas criadas para qb-vehiclekeys continuem a funcionar.

Ver exemplo

Os scripts escritos para qb-vehiclekeys continuam a funcionar sem alterações.

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

Evento do client que muitas garagens e lojas disparam depois de criar um carro. Dá uma chave temporária para essa matrícula após as mesmas verificações no servidor.

Ver exemplo

O evento que muitas garagens acionam depois de criar um carro dá uma chave ao jogador.

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

O evento do client de qb-vehiclekeys para entregar chaves, interpretado da mesma forma.

Ver exemplo

Entrega uma chave como o qb-vehiclekeys fazia.

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

Disparado no client quando o motor é ligado ou desligado com uma chave, para que HUDs como Agency-Hud possam acompanhar o estado do motor.

Ver exemplo

Permite que o HUD acompanhe o motor quando ele é ligado ou desligado com uma chave.

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

10Agency-Vending

Máquinas de venda automática com propriedade do jogador, pagamento em dinheiro ou com cartão AgencyPay.

Combine com o export AgencyPay do Agency-Phone para compras com cartão. Use em empregos onde jogadores são donos de pontos de vending (postos, escritórios, apartamentos) para gerar renda passiva.

Documentação completa

Eventos

agency-vending:notify

Despachador generico de notificacoes vindas do server para a resource vending.

Ver exemplo

Envia uma notificacao generica com tema vending ao jogador apos uma compra.

-- 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

Inicia um checkout AgencyPay via integracao agency-phone com metadados do comerciante.

Ver exemplo

Inicia um checkout Agency Pay pelo telefone com os dados do comercio do quiosque.

-- 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

Resultado da compra de uma maquina, encaminhado ao NUI para feedback.

Ver exemplo

Encaminha o resultado da compra de maquina para uma NUI de loja personalizada.

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

Broadcast de que uma nova maquina do jogador foi criada; atualiza o cache local e notifica o dono.

Ver exemplo

Transmite a todos os clientes uma maquina de venda recem criada pelo jogador.

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

Abertura verificada no server do menu de gestao do dono com itens, ganhos e label.

Ver exemplo

Abre a UI de gestao verificada com itens, ganhos e rotulo apos autorizacao.

-- 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

Abre a NUI de visao geral do dono listando todas as maquinas do jogador com nomes das ruas.

Ver exemplo

Abre a NUI de visao geral do dono listando todas as maquinas do jogador.

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

Broadcast do spawner admin de que uma nova entidade de maquina foi criada.

Ver exemplo

Notifica todos os clientes que um admin gerou uma maquina de venda.

-- 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 do spawner admin de que uma entidade de maquina spawnada foi removida.

Ver exemplo

Avisa todos os clientes que um admin removeu uma maquina ja gerada.

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

Abre a NUI do spawner admin apos passar a verificacao de permissoes no server.

Ver exemplo

Abre a NUI do spawner admin para colocar maquinas no mundo.

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

O jogador compra uma maquina de venda de um tipo nos coords/heading fornecidos.

Ver exemplo

O jogador compra uma maquina Sprunk em suas coordenadas atuais de um NPC.

-- 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

O chamador solicita a lista de suas maquinas proprias para a UI de visao geral do dono.

Ver exemplo

Solicita ao servidor a lista de maquinas de venda do jogador.

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

O chamador solicita ao server uma sincronizacao completa de todas as maquinas de jogadores.

Ver exemplo

Solicita uma sincronizacao completa de todas as maquinas dos jogadores ao servidor.

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

Abertura verificada no server da UI de gestao para uma maquina propria.

Ver exemplo

Solicita a UI de gestao verificada pelo servidor para a maquina clicada.

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

O chamador solicita a lista de maquinas spawnadas pelo admin para a UI do spawner.

Ver exemplo

Solicita a lista de todas as maquinas geradas pelo admin para a UI do spawner.

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

Admin coloca um novo prop de maquina de venda no server apos verificar permissoes.

Ver exemplo

O admin gera uma nova maquina de snacks apos a verificacao de permissao.

-- 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

Admin remove no server um prop de maquina de venda spawnado anteriormente.

Ver exemplo

O admin remove no servidor um prop de maquina anteriormente gerado.

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

11Agency-Admin

Painel de administração completo com UI de vidro, chat AgencyAI e mais de 60 ferramentas.

Os eventos são perfeitos como "primitivas" para anti-cheat, bots de moderação ou ferramentas automatizadas, chame-os do seu script de servidor para freeze/kick/notify sem escrever sua própria UI.

Documentação completa

Eventos

agency-admin:client:refreshStaffRanks

Faz o client recarregar os dados de cargos da staff.

Ver exemplo

Atualiza o cache de cargos da staff para todos os admins online apos uma promocao.

-- 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

Congela ou descongela a hora do mundo no client na hora/minuto indicados.

Ver exemplo

O anti-cheat congela o relogio do mundo ao meio-dia enquanto revisa um jogador.

-- 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

Envia um valor de cartao do dashboard (ex.: contador ao vivo) para a UI do painel.

Ver exemplo

Envia a contagem ao vivo de jogadores online para o cartao do painel 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

Teleporta o chamador para as coordenadas do mundo fornecidas.

Ver exemplo

Teletransporta um jogador para as coordenadas salvas apos um evento de respawn.

-- 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

Exibe um banner de anúncio em todo o servidor.

Ver exemplo

Transmite um banner de anuncio para todo o servidor de um remetente nomeado.

-- 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

Envia uma notificação a um administrador específico.

Ver exemplo

Envia uma notificacao estilizada ao jogador quando sua candidatura e aprovada.

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

Congela o jogador alvo no lugar.

Ver exemplo

Congela um jogador suspeito para que a staff possa investigar sem que ele se mova.

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

Restaura HP/armadura do alvo.

Ver exemplo

Cura totalmente o paciente apos o termino do tratamento medico de RP.

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

Reanima o jogador alvo.

Ver exemplo

Reanima um jogador caido apos o minigame de EMS ser concluido com sucesso.

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

Teleporta o jogador local para o vetor de coordenadas fornecido.

Ver exemplo

Teletransporta o jogador local para as coordenadas fornecidas.

-- 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

Abre a UI do painel de administração (requer permissão ACE).

Ver exemplo

Abre a UI principal do painel admin para o staff quando ele entra de servico.

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

Acionador no server para abrir o submenu de ferramentas de admin.

Ver exemplo

Abre o submenu de ferramentas admin quando a tecla de atalho da staff e pressionada.

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

Acionador no server para fechar a UI do painel admin.

Ver exemplo

Forca o fechamento da UI do painel admin quando o admin esta sob investigacao.

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

Acionador no server para abrir o menu de roupas in-game para o jogador.

Ver exemplo

Abre o menu de roupas depois que o jogador compra uma roupa no alfaiate.

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

Solicita a lista atual de jogadores online para o painel admin.

Ver exemplo

Solicita ao servidor a lista mais recente de jogadores online para o painel.

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

Solicita a tabela de permissoes do painel para o editor de cargos.

Ver exemplo

Solicita ao servidor a tabela de permissoes do painel usada pelo editor de cargos.

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

Solicita o conjunto de dados dos cargos da staff para o painel.

Ver exemplo

Solicita o conjunto completo de cargos da staff para um widget CRM personalizado.

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

Cria um novo cargo da staff com metadados e permissoes.

Ver exemplo

Cria um novo cargo de staff a partir de uma sincronizacao com portal externo de RH.

-- 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

O chamador solicita seu proprio conjunto de permissoes do painel resolvido.

Ver exemplo

Solicita o conjunto de permissoes do painel do proprio chamador ao abrir a UI.

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

O chamador pede ao server que envie o payload de sync padrao (servico/permissoes/etc.).

Ver exemplo

Forca o servidor a enviar o pacote padrao de sync duty/perms para o chamador.

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

O chamador solicita suas informacoes atuais de rango admin em servico.

Ver exemplo

Solicita o rank de duty admin atual do chamador para um overlay HUD personalizado.

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

O chamador solicita a lista de objetos do mundo spawnados pelo admin.

Ver exemplo

Solicita a lista de objetos do mundo spawnados pelo admin para overlay do minimapa.

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

12Agency-Anticheat

Um anticheat para FiveM que aprende a conhecer o seu servidor. Ele verifica cada jogador no lado do servidor, onde um cheat não consegue se esconder: godmode, super salto, multiplicadores de dano, teleportes e armas proibidas são lidos do estado de jogo sincronizado. As verificações cruzadas pegam o que os valores isolados deixam passar: um golpe letal que a vítima sobrevive, um abate com pistola a 500 metros, estatísticas de mira e vários sinais fracos que juntos formam um padrão. A proteção do mundo cancela tanques, explosões, fogo e spam de partículas gerados antes que alguém os veja. Os bans cobrem identificadores e tokens de hardware, então uma conta nova no mesmo PC continua de fora, e um lockdown fecha o servidor sozinho quando vários trapaceiros atacam ao mesmo tempo. Uma instalação nova roda 48 horas no modo Learning e não pune ninguém. O painel próprio dentro do jogo (/acpanel) mostra tudo ao vivo e executa cada ação, em qualquer servidor. Com o Agency Admin, os admins dele ficam isentos automaticamente e a mesma página também fica dentro desse painel; com o AgencyMod, os bans chegam também ao seu Discord. Sem banco de dados, sem assinatura, 25 idiomas, QBCore, Qbox, ESX ou standalone.

Documentação completa

Exports de servidor

AllowTeleport(source: number, seconds?: number)

Chama-o mesmo antes de o teu script mover um jogador, assim o salto não conta como teletransporte. Predefinição: 5 segundos.

SetExempt(source: number, seconds: number)

Isenta um jogador de todas as verificações durante algum tempo, por exemplo num evento com Godmode. 0 termina a isenção.

Flag(source: number, detail: string)

A tua própria deteção. Conta como qualquer outra, sob a deteção external.

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

Bane um jogador online por identificadores e tokens de hardware. Duração em segundos, 0 é permanente. Devolve o ID do ban.

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

Expulsa um jogador e regista-o no Discord.

Unban(banId: string, by?: string)

Levanta um ban, por exemplo AC-7K3P9.

SetMode(mode: string)

Muda o modo em tempo real: learning, relaxed, balanced ou strict.

SetDetection(key: string, enabled: boolean)

Liga ou desliga uma deteção em tempo real.

SetLockdown(on: boolean, by?: string)

Inicia ou termina um lockdown.

IsExempt(source: number)

Devolve se um jogador está isento das verificações.

IsKnownPlayer(source: number)

Devolve se um jogador jogou aqui tempo suficiente sem deteções para ser considerado conhecido.

GetStatus()

Devolve tudo o que o painel mostra: modo, camadas, conhecimento, números de hoje, carga do servidor e cada deteção com a sua regra.

GetDetections(limit?: number)

Devolve as últimas deteções, as mais recentes primeiro.

GetBans()

Devolve cada ban ativo com as suas provas.

GetPlayers()

Devolve os jogadores online com pontuação de risco e strikes abertos, maior risco primeiro.

Eventos

Agency-Anticheat:detection

É disparado em cada deteção com jogador, deteção, detalhe, ação e strikes.

Agency-Anticheat:banned

É disparado após cada ban com o registo completo do ban.

Agency-Anticheat:unbanned

É disparado depois de um ban ser levantado.

Agency-Anticheat:lockdown

É disparado quando um lockdown começa ou termina.

Agency-Anticheat:learned

É disparado quando o anticheat aprendeu um novo ponto de teletransporte do teu servidor.

13Agency-Reports V2

Sistema de denúncias moderno com chat ao vivo por denúncia e respostas assistidas por IA.

Use como espinha dorsal de "ticket de suporte" para todo o seu servidor. Seus scripts podem abrir denúncias automaticamente quando algo dá errado (veículos presos, itens duplicados, salvamentos SQL falhos) para revisão do admin.

Documentação completa

Eventos

agency-reports:client:notify

Dispara uma notificação de "nova denúncia" para um admin específico.

Ver exemplo

Notificacao do servidor que respeita a preferencia de notificacao UI do jogador.

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

Abre a UI de denúncias do lado do jogador.

Ver exemplo

Abre a UI de reportes com categorias, reportes abertos e definicoes 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

Abre a lista de denúncias do lado do admin.

Ver exemplo

Abre o painel admin de reportes com o conjunto completo de dados.

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

Teleporta o admin chamador para as coordenadas indicadas (para acoes goto).

Ver exemplo

Teletransporta o admin para as coordenadas fornecidas para acoes 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

Cura completamente o ped do admin chamador.

Ver exemplo

Cura totalmente o ped do admin apos atender um reporte.

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

Envia uma nova denúncia fora da UI.

Ver exemplo

O jogador envia um novo reporte com titulo, categoria e descricao.

-- 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

O chamador solicita seu proprio payload de report; opcionalmente abre a UI de jogador na resposta.

Ver exemplo

O chamador pede a sua carga de reportes e abre opcionalmente a UI do jogador.

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

Admin solicita o conjunto completo de reports e abre o dashboard admin se autorizado.

Ver exemplo

O admin pede o dataset completo e abre o painel admin se autorizado.

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

Envia uma mensagem de chat a uma denúncia aberta.

Ver exemplo

Publica uma mensagem de chat numa thread de reporte especifica para admin ou jogador.

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

14Agency-Doorlock

Portas trancáveis com configuração no jogo e acesso por porta por emprego, gangue ou jogador.

Para scripts de casas, propriedades ou chaves: dar a um jogador a chave de uma porta específica e retirá-la. As chaves ficam na base de dados e sincronizam de imediato, sem permissões de admin.

Documentação completa

Exports de cliente

ToggleNearestDoor()

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

Ver exemplo

Adiciona a tua própria tecla (L) que tranca ou destranca a porta junto ao jogador. O acesso continua a ser verificado no servidor.

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.

Ver exemplo

Lê em que porta o jogador está, por exemplo para a associar a uma casa no teu 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.

Ver exemplo

Lista todas as portas com o número e o estado. O PIN nunca está incluído.

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.

Ver exemplo

Marca um ponto GPS para uma porta, por exemplo para levar um jogador à sua casa nova.

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

Exports de servidor

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.

Ver exemplo

Um proprietário dá uma chave a outro jogador. O teu script verifica a posse, o Agency-Doorlock guarda a chave e sincroniza-a de imediato. Ninguém recebe permissões de 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.

Ver exemplo

Retira uma chave, por exemplo quando um inquilino se muda. Com o citizenid funciona mesmo com o jogador offline.

-- 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.

Ver exemplo

Verifica se um jogador tem chave própria para esta porta. O acesso por emprego, gangue ou "everyone" não conta.

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.

Ver exemplo

Lista todos os que têm chave de uma porta, por exemplo para um menu "gerir chaves". Devolve uma cópia, alterá-la não faz nada.

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.

Ver exemplo

Espera até as portas estarem carregadas após um arranque antes de o teu script distribuir chaves.

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)

Eventos

agency-doorlock:accessChanged

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

Ver exemplo

Registo no servidor de cada chave dada ou retirada, por exemplo para um webhook do 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 animado com painel de veículo, barras de status, velocímetro e integração de cinto de segurança.

Se você tem uma economia ou sistema de necessidades personalizado, controle o HUD a partir do seu próprio script com esses setters em vez de improvisar. O HUD cuida da animação e persistência para você.

Documentação completa

Exports de cliente

GetVehicleSettings()

Retorna a tabela atual de configurações do veículo.

Ver exemplo

Le a tabela de configuracoes do HUD do veiculo local para inspecao ou sincronizacao.

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

Alterna o velocímetro entre 'mph' e 'kmh'.

Ver exemplo

Alterna o velocimetro do veiculo para milhas por hora e salva localmente.

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

Define o valor da barra de fome (0-100).

Ver exemplo

Envia o nivel atual de fome do jogador para o HUD.

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

Define o valor da barra de sede (0-100).

Ver exemplo

Envia o nivel atual de sede do jogador para o HUD.

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

Define o valor da barra de estresse (0-100).

Ver exemplo

Atualiza o medidor de estresse do HUD a partir de um sistema de estresse personalizado.

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

Define o saldo de dinheiro exibido.

Ver exemplo

Atualiza o valor em dinheiro exibido no painel do HUD.

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

Define o saldo bancário exibido (para scripts de economia personalizados).

Ver exemplo

Atualiza o saldo bancario exibido no HUD.

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

Define o rótulo de profissão exibido.

Ver exemplo

Define o rotulo de profissao exibido quando o jogador muda de ocupacao.

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

Define a patente/grau de profissão exibido.

Ver exemplo

Atualiza o rank do jogador exibido ao lado do rotulo de profissao.

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

Retorna a string do framework ("qb", "esx", "standalone") detectado automaticamente pelo HUD.

Ver exemplo

Le a chave do framework detectado para ramificar logica HUD personalizada.

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

Eventos

Agency-HUD:client:applyVehicleSettingsPatch

Aplica um patch parcial de configurações de veículo ao HUD do veículo local.

Ver exemplo

Aplica um patch parcial de configuracoes do HUD do veiculo no cliente local.

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

Abre o menu admin do HUD (requer permissão).

Ver exemplo

Abre a NUI do menu admin do HUD no cliente receptor.

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

Verifica as permissões de admin do chamador e abre o menu admin em caso de sucesso.

Ver exemplo

Pede ao servidor para verificar permissoes admin e abrir o menu admin do HUD.

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

Persistência das configurações globais de HUD apenas para admin; transmite sync.

Ver exemplo

Salva uma nova configuracao HUD global (somente admin) e a transmite.

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

Retorna as configurações globais atuais ao cliente solicitante.

Ver exemplo

Solicita as configuracoes globais atuais do HUD ao iniciar o recurso.

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

Retorna a hora atual do servidor ao chamador para o relógio do HUD.

Ver exemplo

Consulta o relogio do servidor a cada minuto para atualizar a hora no HUD.

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

16Agency-Progressbar V2

Barra de progresso animada com UI de vidro, 4 temas, ações canceláveis e exports client/server.

Use em qualquer lugar onde normalmente mostraria "fazendo X por Y segundos". Substitui múltiplos recursos legacy de progress bar com uma UI consistente em todo o servidor.

Documentação completa

Exports de cliente

StartProgress(data: table)

Inicia uma barra de progresso com tabela de opções completa. Retorna imediatamente; callbacks disparam ao concluir/cancelar.

Ver exemplo

Inicia uma barra de arrombamento de 8 segundos com animacao e callback final.

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)

Para a barra de progresso em execução. Passe true para marcar como cancelada.

Ver exemplo

Cancela a barra de progresso ativa quando o jogador pressiona X.

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

Retorna true se uma barra de progresso estiver sendo exibida no momento.

Ver exemplo

Impede iniciar uma nova acao de crafting enquanto uma barra estiver ativa.

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

Retorna a porcentagem de preenchimento atual (0-100).

Ver exemplo

Dispara um tick de minigame quando a barra passa de 75 por cento.

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)

Troca o tema em tempo de execução: 'modern', 'neon', 'minimal' ou 'classic'.

Ver exemplo

Altera a aparencia da barra de progresso ativa para o tema moderno.

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

Altera a posição: 'top', 'bottom', 'center'.

Ver exemplo

Move a barra de progresso ativa para o centro inferior da tela.

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

Reproduz a sequência de recarga estilo ESX.

Ver exemplo

Inicia uma recarga validada pelo servidor com uma caixa de 9mm.

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

Reproduz a animação de comer/beber com barra de progresso.

Ver exemplo

Reproduz a animacao de beber e aumenta a sede ao usar agua.

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

Exports de servidor

StartProgressForPlayer(playerId: number, data: table)

Aciona uma barra de progresso em um cliente específico a partir do servidor.

Ver exemplo

Inicia uma barra de levantar caixa de 5 segundos no jogador solicitante.

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

Cancela remotamente a barra de progresso de um jogador específico.

Ver exemplo

Cancela a barra de progresso ativa de um jogador alvo a partir do servidor.

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

Transmite uma barra de progresso para todos os clientes conectados.

Ver exemplo

Transmite uma barra de aviso de tempestade de 30 segundos a todos os jogadores.

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

Cancela a barra de progresso de cada jogador (ex. fim de round).

Ver exemplo

Para a barra global de aviso de tempestade em todos os jogadores.

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

Eventos

Agency:Progressbar:LoadSettings

Carrega as configurações de UI por jogador (posição, cor, escala, estilo) do BD para o client.

Ver exemplo

Carrega as configuracoes UI salvas da barra de progresso ao spawnar.

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

Inicia a barra de progresso no client receptor com os dados fornecidos.

Ver exemplo

Inicia uma barra de reparo de motor de 12 segundos, cancelavel.

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

Para a barra de progresso ativa com uma flag de conclusão.

Ver exemplo

Aborta a barra de progresso ativa quando o jogador e algemado.

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

Ponte de inventário para consumir um item de comida (animação + aplicação segura no server).

Ver exemplo

Aciona a ponte de comida do inventario para consumir um sanduiche.

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

Ponte de inventário para consumir um item de bebida (animação + aplicação segura no server).

Ver exemplo

Aciona a ponte de bebida do inventario para consumir uma xicara de cafe.

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

Valida e persiste as configurações UI da barra de progresso do jogador no BD.

Ver exemplo

Salva as preferencias UI da barra do jogador no banco de dados.

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

Trigger no lado server para iniciar uma barra de progresso em um alvo (ou em si mesmo).

Ver exemplo

Disparador do servidor para iniciar uma barra de carga de caixa de 6 s num alvo.

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

Trigger no lado server para parar uma barra de progresso em um alvo (ou em si mesmo).

Ver exemplo

Disparador do servidor para parar a barra de um alvo com estado cancelado.

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

Valida munição/arma/item antes de conceder uma recarga ao jogador solicitante.

Ver exemplo

Pede ao servidor para validar a municao e autorizar a recarga da pistola.

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

Valida o inventário, remove um item e aplica os ganhos de fome/sede.

Ver exemplo

Pede ao servidor para remover o item de comida e aplicar o ganho de fome.

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

17Agency-Notify V2

Sistema de notificacoes com estilos V1/V2, prioridade inteligente AgencyAI, protecao anti-spam e persistencia no banco de dados.

Substitui qualquer outro recurso de notificacao no servidor (qb-notify, esx_notify, mythic_notify, okok-notify, etc.) com um visual consistente. O sistema de prioridade AgencyAI limita automaticamente notificacoes spam.

Documentação completa

Exports de cliente

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

Mostra uma notificacao. Aceita { type, title, text, duration, icon, color }.

Ver exemplo

Envia uma notificacao de sucesso de 6 segundos anunciando um objetivo do assalto.

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

Eventos

Agency:Notify:Send

Igual ao export, permite usar o padrao classico baseado em Trigger.

Ver exemplo

Evento cliente legacy v1 que exibe o mesmo payload que o export.

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

Aplica as configurações UI salvas por jogador (posição, cor, escala, estilo) do server.

Ver exemplo

Carrega as configuracoes UI de notify salvas por jogador ao spawnar.

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

Valida e persiste as configurações de notify do jogador (posição, cor de destaque, escala, estilo).

Ver exemplo

Salva no banco a posicao, o acento e a escala de notify do jogador.

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

18Agency-Seatbelt V2

Cinto de seguranca com fisica de ejecao, sons 3D, suporte a varios ocupantes e integracao com HUD.

Conecta o estado ao teu proprio HUD, ou forca a ativacao no inicio de uma perseguicao policial / fuga de assalto. Os exports force-enable/disable sao otimos para momentos RP.

Documentação completa

Exports de cliente

isSeatbeltOn()

Retorna true se o jogador estiver atualmente com o cinto colocado.

Ver exemplo

Desativa o controle de saida do veiculo enquanto o cinto esta afivelado.

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

Forca a colocacao do cinto (use por ex. em prisao policial).

Ver exemplo

Afivela o cinto do jogador local com feedback de HUD e som.

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

Forca a remocao do cinto (cutscenes, cenarios RP).

Ver exemplo

Desafivela o cinto do jogador local ao sair de um veiculo.

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

Alterna o cinto (o que a tecla padrao faz).

Ver exemplo

Alterna o estado do cinto do jogador local ao pressionar uma tecla.

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

Devolve true enquanto o cinto foi apertado pelo carro e não pelo jogador.

autoBuckle(on: boolean)

Aperta ou desaperta o cinto como cinto automático, tal como faz um carro autónomo.

getSeatbeltState()

Devolve uma tabela com o estado do cinto, se é automático, o lugar e o veículo.

setSeatbeltEnabled(on: boolean)

Desliga ou liga todo o cinto para este jogador, para cenas cinemáticas ou situações de admin.

isPlayerSeatbeltOn(serverId: number)

Devolve o estado do cinto de outro jogador, lido do state bag replicado.

bucklesItselfVehicle(vehicle: number)

Indica se este veículo aperta ele próprio os ocupantes, pela lista de modelos ou pelo state bag agAuto.

openSettings()

Abre o cartão de definições.

closeSettings()

Fecha o cartão de definições.

isSettingsOpen()

Indica se o cartão de definições está aberto.

Exports de servidor

isSeatbeltOn(source: number)

Devolve no servidor o estado do cinto de um jogador, lido do state bag replicado.

getBuckledPlayers()

Devolve os ids de servidor de todos os jogadores com o cinto apertado.

setSeatbelt(source: number, on: boolean)

Aperta ou desaperta a partir do servidor o cinto de um jogador.

Eventos

Agency-HUD:seatbeltStateChanged

Dispara a cada alteração com o novo estado. O Agency-HUD escuta-o; qualquer outro resource também pode.

19Agency-Elevator

Sistema de elevador realista com UI Liquid Glass e um configurador.

Perfeito em scripts de apartamentos/housing, sede policial, hospital ou qualquer interior de varios andares. Usa o configurador para posicionar elevadores visualmente sem tocar nos ficheiros de config.

Documentação completa

Eventos

Agency-Elevator:server:requestTravel

Pedido validado pelo servidor para viajar entre andares.

Ver exemplo

Pede ao servidor para validar o acesso e depois viajar ao 3o andar.

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

Confirma a chegada do client e envia a notificação 'chegou ao andar'.

Ver exemplo

Informa o servidor que o jogador chegou ao 3o andar para enviar a notificacao.

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

Sincroniza a lista de elevadores carregada do banco de dados com o client solicitante.

Ver exemplo

Solicita a lista completa de elevadores ao servidor na inicializacao do cliente.

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

Upsert com verificação de permissões de um elevador (id/label/floors) no MySQL.

Ver exemplo

Upsert admin de um elevador com uma unica entrada de andar 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

Gera/carrega um elevador salvo do banco de dados.

Ver exemplo

Carrega os dados de um unico elevador na NUI do configurador para edicao.

TriggerServerEvent('Agency-Elevator:server:loadElevator', 'lspd-tower-1')
Agency-Elevator:server:saveSettings

Persiste as configurações UI (posição/escala/cor de destaque) no MySQL e re-sincroniza todos os clients.

Ver exemplo

Salva posicao UI, cor de acento e escala e resincroniza todos os clientes.

TriggerServerEvent('Agency-Elevator:server:saveSettings', { position = 'top-right', accent = '#22c55e', scale = 1.0 })
Agency-Elevator:client:startTravel

Inicia uma cutscene de viagem de elevador para o jogador.

Ver exemplo

Reproduz fade e animacao e teleporta o ped ao 2o andar da garagem.

TriggerEvent('Agency-Elevator:client:startTravel', 'parking-garage', 2)
Agency-Elevator:client:applySettings

Envia as configurações UI (acento/escala/posição) para o NUI.

Ver exemplo

Aplica acento, escala e posicao da NUI do elevador no cliente local.

TriggerEvent('Agency-Elevator:client:applySettings', { accent = '#0ea5e9', scale = 0.9, position = 'bottom-left' })
Agency-Elevator:client:openConfigurator

Abre o configurador de elevadores no jogo (apenas admin).

Ver exemplo

Abre a NUI configurador admin com a lista atual de elevadores.

TriggerEvent('Agency-Elevator:client:openConfigurator')
Agency-Elevator:client:refreshConfigurator

Atualiza o configurador aberto após salvar/excluir sem fechá-lo.

Ver exemplo

Atualiza a NUI configurador aberta apos salvar sem fechar.

AddEventHandler('Agency-Elevator:server:elevatorSaved', function() TriggerEvent('Agency-Elevator:client:refreshConfigurator') end)

20Agency-Multicharacter

Uma seleção e criação cinematográfica de personagens para FiveM. Cada personagem fica posicionado em um cenário que combina com sua profissão: policiais junto à viatura, médicos ao lado da ambulância, mecânicos na oficina, vestindo seu traje salvo, com sua própria foto de perfil, profissão, gangue, dinheiro, banco, número de telefone, tempo de jogo e última localização em um cartão limpo. Novos personagens contam com regras de nome e idade, lista pesquisável de nacionalidades e altura, abrindo o clothing script do servidor automaticamente em seguida. Vagas podem ser vendidas pelo Tebex: compradores as desbloqueiam com o id da transação. Jogadores trocam de personagem com /logout. Framework, clothing script, inventário, spawn selector e tela de carregamento são detectados automaticamente; personagens existentes, tempo de jogo e vagas compradas do multicharacter antigo são transferidos. QBCore, Qbox, ESX ou totalmente standalone com armazenamento próprio de personagens, 25 idiomas, as cores acompanham o logotipo do servidor.

Documentação completa

Exports de cliente

IsOpen()

True while the character selection is open.

OpenSelection()

Opens the selection, for example from your own logout button.

Exports de servidor

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.

Eventos

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

Um spawn selector com câmera ao vivo para FiveM. Enquanto o jogador navega, a câmera sobrevoa Los Santos até cada local; escolher um faz a câmera descer do céu até o personagem. Oferece a última localização, spawns públicos a partir de uma lista comentada, spawns de trabalho e gangue visíveis apenas para os personagens certos, todas as casas do Agency Housing que o personagem possui ou tem chave, qb-apartments e um ponto fixo de chegada para novos personagens. Jogadores podem ativar o auto spawn na última localização. Responde aos eventos do qb-spawn e de apartamentos, para que a maioria dos scripts de multicharacter o abra sem qualquer alteração, e funciona perfeitamente com o Agency Multicharacter. QBCore, Qbox, ESX ou standalone, 25 idiomas, as cores acompanham o logotipo do servidor.

Documentação completa

Exports de cliente

Open(options)

Opens the selector. options.isNew = true sends new characters to the arrival point.

IsOpen()

True while the selector is open.

Eventos

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

Sistema de habitação baseado em banco de dados para FiveM. Detecta QBCore, QBox e ESX automaticamente ou funciona totalmente standalone, sem nenhum framework. As casas são criadas no jogo por um criador passo a passo em vez de um arquivo de config: interiores, shells, MLOs e prédios de apartamentos inteiros com até 40 unidades atrás de uma única porta de entrada, cada lote cercado por uma borda de propriedade marcada do alto. Os jogadores compram casas, vendem entre si, alugam e colocam para alugar, navegam por todas as ofertas do mercado e pagam o aluguel antecipadamente. O dinheiro que chega enquanto estão offline é pago quando entram novamente. Chaves, trancamento de portas MLO com trava automática e campainha, mobília de um catálogo com mais de 1.300 props, câmeras de segurança e o guarda-roupa embutido estão incluídos, e um app Housing traz controle de fechaduras e câmeras ao vivo para Agency Phone, Agency Pad, lb-phone e qs-smartphone-pro. Scripts de inventário, roupas e garagens são encontrados automaticamente, o banco de dados se atualiza sozinho e tudo é salvo no MySQL.

Documentação completa

Exports de cliente

IsInsideHouse()

Devolve true enquanto o jogador está dentro de uma casa.

GetCurrentHouse()

A casa onde o jogador está neste momento, ou nil.

LeaveHouse()

Leva o jogador de volta para fora pela entrada.

GetHouseAtPoint(coords)

A primeira casa cujo limite de propriedade inclui este terreno.

GetHousesAtPoint(coords)

Todas as casas a que este terreno pertence, para lotes sobrepostos como um prédio de apartamentos.

GetCurrentProperty()

O lote onde o jogador está neste momento, ou nil.

IsOnProperty(houseId)

Se o jogador está na propriedade dessa casa.

GetHouseZone(houseId)

A forma de limite guardada de uma casa.

GetAccent()

A cor de destaque que o jogador escolheu em Housing > Definições.

GetAppUrl(theme)

O endereço da página do app Housing, para adicionar o app a qualquer outro celular. Passe 'light' ou 'dark' para forçar um tema.

GetAppData()

Tudo o que o app Housing mostra: as casas que o jogador possui, aluga ou para as quais tem uma chave.

AppAction(action, houseId)

Executa uma ação do app para uma casa: 'waypoint', 'lock' ou 'cams'.

Exports de servidor

GetHouses()

Todas as casas do servidor, indexadas por id.

GetPlayerHouses(source)

As casas que esse jogador possui.

HasHouseAccess(source, houseId)

Se esse jogador é dono da casa ou tem uma chave dela.

GetHouseAtPoint(coords)

A primeira casa cujo limite de propriedade inclui este terreno.

GetHousesAtPoint(coords)

Todas as casas a que este terreno pertence, para lotes sobrepostos.

GetHouseZone(houseId)

A forma de limite guardada de uma casa.

Eventos

agency-housing:client:enteredZone

Dispara com (houseId, house) quando o jogador entra numa propriedade, para que um script de emprego ou de assalto não tenha de consultar repetidamente.

agency-housing:client:leftZone

Dispara com (houseId, house) quando o jogador sai de uma propriedade.

agency-housing:garage:open

Dispara com (houseId, houseName) quando uma garagem de casa é usada e Config.Garage.script é 'event', para que o seu próprio script de garagem possa abri-la.

23Agency-Banking

Um banco completo para FiveM que corre em QBCore, Qbox, ESX ou totalmente em standalone. Os jogadores têm uma wallet com saldo bancário e dinheiro, cartões bancários em quatro temas, transferências por ID ou para jogadores por perto, depósitos a prazo com juros que só o servidor define, trading de ações e cripto, um PIN do multibanco e um histórico completo de movimentos. Sem framework, o banco gere as suas próprias contas e outros resources podem usá-lo como sistema de dinheiro através de exports do servidor. A isto juntam-se dois designs de menu, 13 idiomas, marcadores ou qb-target / ox_target, um controlo do tamanho de apresentação para cada jogador, tabelas que se criam sozinhas no primeiro arranque e a app gratuita Agency Companion para saldo, transferências, depósitos a prazo e cartões em qualquer lugar.

Documentação completa

Exports de cliente

OpenBank()

Abre o banco para o jogador local, esteja onde estiver.

OpenATM()

Abre o ecrã do PIN do multibanco para o jogador local. O jogador tem de ter definido antes um PIN num banco.

Exports de servidor

GetBankBalance(source)

Devolve o saldo bancário do jogador, em qualquer framework e em standalone.

GetCashBalance(source)

Devolve o dinheiro em numerário do jogador.

AddBankMoney(source, amount, reason)

Adiciona dinheiro ao saldo bancário. Devolve true se correr bem, e um banco aberto atualiza-se sozinho.

RemoveBankMoney(source, amount, reason)

Retira dinheiro do saldo bancário. Devolve false quando o saldo não chega, e nesse caso nada é retirado.

AddCashMoney(source, amount, reason)

Adiciona dinheiro em numerário. Devolve true se correr bem.

RemoveCashMoney(source, amount, reason)

Retira dinheiro em numerário. Devolve false quando não há o suficiente, e nesse caso nada é retirado.

AddTransaction(identifier, type, amount, reason)

Escreve uma entrada no histórico de movimentos de um jogador pelo identificador (citizenid no QBCore e Qbox, identifier no ESX, licença em standalone).

GetFramework()

Devolve o framework que o banco detetou: qbcore, esx ou standalone.

Eventos

agency_banking:client:OpenBank

Dispara-o a partir do servidor para abrir o banco a esse jogador.

agency_banking:client:MoneyChanged

Dispara-o a partir do servidor depois de outro script alterar o dinheiro de um jogador, e um banco aberto atualiza-se.

Continuas sem avançar depois desta página? O nosso suporte assume daqui.

Continuas sem avançar depois desta página? O nosso suporte assume daqui.