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).
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:notifyExibe 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:usePhoneItemAciona 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:openAppSolicita 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:newMailNotifyNotifica 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:requestPhoneDataSolicita 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:cancelCallCancela 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:sendMessageEnvia 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:saveSettingPersiste 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:airdropPayRealiza 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:buyDataPlanCompra 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:createCria 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.
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:notifyExibe 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:usePadItemAbre 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:openAppDispare 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:newMailNotifyNotifica 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:hourlyPaycheckNotifica 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:requestPadDataSolicita 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:sendMessageEnvia 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:airdropPayRealiza 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:buyDataPlanCompra 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:createCria 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:createCria 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:adminCreateAdmin 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:startMissionInicia 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:applyToListingEnvia 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:createMechanicInvoiceCria 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:sendMechanicInvoicePayEnvia 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:mdtCreateInvoiceO 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.
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.
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:rideStartedComeçou uma viagem. Inclui o destino.
agency-zero:client:rideEndedA viagem terminou, foi cancelada ou chegou.
agency-zero:client:arrivedO 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.
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
endExports 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)
endGetAd(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) endIsAdmin(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
endEventos
agency-lifeinvader:adShownEvento 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:adBroadcastEvento 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:openMenuMantido 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:openRecentMenuMantido 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.
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
endExports 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
endSetReputation(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))
endAddCredit(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')
endStartFlashSale(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:dealDispara 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:dealerMovedDispara 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:flashSaleDispara 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.
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
endIsWorking()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
endGetLevel()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
endGetProgress(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:minedDisparado 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:soldDisparado 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:contractDisparado 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.
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
endGetVehicleCondition(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)))
endOpenMenu()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
endExports 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)) endGiveKit(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
endGetKits()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)
enduseKit(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:repairedDisparado 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:repairedDisparado 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:damageLevelDisparado 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.
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
endGetKeys()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)
endToggleLock(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
enduseLockpick()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
endSetOwner(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)
endSetVehicleLocked(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
endGetFramework()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
endEventos
Agency:Keys:GiveServerSolicita 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:AcquireVehicleKeysO 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:SetOwnerEvento 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:AddKeysO 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:toggleEngineDisparado 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.
Eventos
agency-vending:notifyDespachador 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:startAgencyPayInicia 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:buyMachineResultResultado 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:machineCreatedBroadcast 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:openManagementVerifiedAbertura 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:openOwnedListAbre 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:spawnMachineCreatedBroadcast 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:spawnMachineDeletedBroadcast 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:openSpawnerUIAbre 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:buyMachineO 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:requestOwnedListO 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:requestMachinesO 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:requestManagementAbertura 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:requestSpawnedMachinesO 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:adminSpawnMachineAdmin 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:adminDeleteSpawnedAdmin 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.
Eventos
agency-admin:client:refreshStaffRanksFaz 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))
endagency-admin:client:freezeTimeCongela 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:dashboardValueEnvia 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:teleportToCoordsTeleporta 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:announceExibe 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:notifyEnvia 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:freezeCongela 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:healRestaura 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:reviveReanima 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:teleportTeleporta 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:openMenuAbre 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:openToolsMenuAcionador 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:closeMenuAcionador 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:openClothingMenuAcionador 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:requestPlayersSolicita 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:requestPanelPermissionsSolicita 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:requestStaffRanksSolicita 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:createRankCria 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:requestMyPermissionsO 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:requestSyncO 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:requestDutyRankO 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:requestSpawnedObjectsO 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.
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.
Eventos
agency-reports:client:notifyDispara 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:openPlayerUIAbre 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:openAdminUIAbre 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:teleportTeleporta 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:healSelfCura 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:submitReportEnvia 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:requestPlayerDataO 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:requestAdminDataAdmin 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:sendChatMessageEnvia 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.
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)
endGetAllDoors()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'))
endGetDoorCoords(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)
endExports 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)
endGetPlayerAccess(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)
endIsReady()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:accessChangedFired 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ê.
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')
endEventos
Agency-HUD:client:applyVehicleSettingsPatchAplica 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:openAdminMenuAbre 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:checkAdminPermissionVerifica 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:saveGlobalSettingsPersistê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:requestGlobalSettingsRetorna 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:requestTimeRetorna 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.
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)
endIsProgressActive()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:LoadSettingsCarrega 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:startInicia 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:stopPara 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:useFoodPonte 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:useDrinkPonte 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:SaveSettingsValida 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:startTrigger 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:stopTrigger 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:requestValida 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:applyValida 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.
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:SendIgual 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:LoadSettingsAplica 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:SaveSettingsValida 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.
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)
endenableSeatbelt()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:seatbeltStateChangedDispara 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.
Eventos
Agency-Elevator:server:requestTravelPedido 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:travelCompleteConfirma 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:requestElevatorsSincroniza 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:saveElevatorUpsert 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:loadElevatorGera/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:saveSettingsPersiste 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:startTravelInicia 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:applySettingsEnvia 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:openConfiguratorAbre 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:refreshConfiguratorAtualiza 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.
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:loadedA character was loaded or created (source, charid, isNew).
agency-multicharacter:server:deletedA character was deleted (source, charid).
agency:selectiontrue 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.
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:spawnedThe character landed (id, kind).
agency-spawn:server:spawnedA player spawned (source, id, kind).
qb-spawn:client:setupSpawns / openUIAnswered 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.
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:enteredZoneDispara 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:leftZoneDispara com (houseId, house) quando o jogador sai de uma propriedade.
agency-housing:garage:openDispara 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.
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:OpenBankDispara-o a partir do servidor para abrir o banco a esse jogador.
agency_banking:client:MoneyChangedDispara-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.