Agency Docs

Dev-Partner

An Agency-Scripts andocken

Du baust ein eigenes FiveM-Script und willst, dass es mit unseren spricht? Hier steht jeder öffentliche Export und jedes Ereignis, zu jedem ein Stück Lua zum Kopieren.

Über Exports ruft dein Script eine Funktion in unserem auf: exports['script-name']:FunctionName(args), auf Client und Server gleichermaßen. Ereignisse laufen andersherum: ausgelöst mit TriggerEvent oder TriggerServerEvent, empfangen mit RegisterNetEvent.

01Agency-Phone

Vollwertiges Multi-Framework-Telefon mit SMS, Anrufen, Social Feed, Mail, Kamera, Wallet und AgencyPay-Checkout.

Nutze es in jedem Shop-/Raub-/Job-Script wenn du einen sauberen In-Phone-Zahlungs-Flow haben willst statt sofort Geld abzuziehen. Auch ideal für In-Game-Benachrichtigungen mit Accept/Deny-Buttons (z.B. Taxi-Anfragen, Dispatch-Anrufe).

Zur vollen Doku

Client-Exports

IsPhoneOpen()

Liefert true, wenn die Phone-UI aktuell offen ist.

Beispiel zeigen

Überspringt das Öffnen eines Menüs, wenn das Handy gerade offen ist.

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

Liefert true, wenn das Phone eingeschaltet ist.

Beispiel zeigen

Pausiert Hintergrund-Syncs, wenn der Spieler das Handy ausgeschaltet hat.

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

Liefert die rohe Phone-Daten-Tabelle.

Beispiel zeigen

Gibt die komplette Phone-Daten-Tabelle zum Debuggen aus.

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

Gibt das Entity-Handle des gehaltenen Phone-Props zurück, oder 0 wenn nicht sichtbar.

Beispiel zeigen

Versteckt das Phone-Prop kurz, ohne die Logik anzufassen.

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

Liefert true, wenn das Phone auf dem Bildschirm vergrößert ist.

Beispiel zeigen

Alter Alias, der ein Minispiel sperrt, solange das Handy offen ist.

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

Gibt true zurück, wenn der Spieler einen aktiven data plan beim Carrier hat.

Beispiel zeigen

Warnt den Spieler, wenn aktuell kein Datentarif aktiv ist.

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

Liefert das vollständige Phone-State-Objekt.

Beispiel zeigen

Cached den Phone-Status nur, wenn Telefon offen, an und synchronisierend ist.

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

Liefert true, wenn der Spieler ein Phone-Item besitzt.

Beispiel zeigen

Blockiert den Notruf-Befehl, wenn der Spieler kein Telefon dabei hat.

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)

Registriert ein wiederkehrendes AgencyPay-Händlerterminal.

Beispiel zeigen

Erstellt ein Agency-Pay-Terminal für die Werkstatt-Kasse zur Laufzeit.

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)

Entfernt ein zuvor registriertes AgencyPay-Terminal.

Beispiel zeigen

Entfernt das registrierte Pay-Point, wenn der Shop schließt.

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

Öffnet das AgencyPay-Checkout-Sheet für sichere Kartenzahlung.

Beispiel zeigen

Öffnet das Handy und startet einen kleinen Agency-Pay-Trinkgeld-Checkout.

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

Startet einen pma-voice-Anruf mit einer Kontakttabelle.

Beispiel zeigen

Startet einen Anruf an den Dispatch-Kontakt, sobald das Event eintrifft.

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)

Zeigt eine Phone-Benachrichtigung mit optionalen Accept/Deny-Buttons.

Beispiel zeigen

Zeigt eine blockierende Annahme-/Ablehnen-Benachrichtigung für einen Abschleppauftrag.

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)

Bringt eine App aus deiner eigenen Resource auf den Startbildschirm des Phones und in den Store. Gibt true zurück, oder false und einen Fehler. Siehe Custom Apps.

UnregisterApp(id)

Entfernt eine mit RegisterApp hinzugefügte App. Passiert von selbst, wenn die Resource stoppt, die sie angemeldet hat.

GetRegisteredApps()

Gibt die Tabelle aller Apps zurück, die andere Resources angemeldet haben, nach id geordnet.

ClosePhone()

Schließt das Phone, zum Beispiel bevor sich deine eigene Oberfläche öffnet.

IsPhoneRadioActive()

Gibt zwei Werte zurück: true, solange das Radio des Phones spielt, und den Sender, der gerade läuft.

StopPhoneRadio()

Stoppt das Radio des Phones.

Server-Exports

SendMail(identifier, mailData)

Sendet eine Mail an einen Spieler (online oder offline).

Beispiel zeigen

Schickt einem Spieler per Primär-Identifier eine Bestellbestätigung als Mail.

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)

Postet eine Nachricht im Pulse (chirper) Feed.

Beispiel zeigen

Postet eine Kopfgeld-Ankündigung serverseitig auf Chirper.

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)

ox_inventory-Hook, registriert wenn ESX+ox_inventory erkannt wird; öffnet das Phone für den Inventarinhaber.

Beispiel zeigen

Hängt sich an ox_inventorys usingItem, um das Handy via Helper zu öffnen.

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)

Bestätigt auf dem Server, dass dieser Spieler die Agency-Pay-Kasse mit dieser id in den letzten 60 Sekunden bezahlt hat, mit mindestens minAmount, und verbraucht die Zahlung, damit sie nur einmal zählt. requestId ist die id, die du an StartAgencyPayCheckout übergeben hast. Gibt true und den Betrag zurück, oder false. Vor dem Ausgeben der Ware aufrufen.

Ereignisse

agency-phone:client:notify

Zeigt eine Phone-Benachrichtigung an (title, text, icon, color, timeout, silent).

Beispiel zeigen

Sendet eine nicht-blockierende Toast-Nachricht: Fahrzeug ist abholbereit.

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

Löst den Öffnungsablauf des Phones aus, wenn das Phone-Inventaritem benutzt wird.

Beispiel zeigen

Leitet ein eigenes Item-Use-Event an die Phone-Öffnungsroutine weiter.

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

Fordert das Phone auf, per ID zu einer benutzerdefinierten App zu navigieren (von App-Modulen genutzt).

Beispiel zeigen

Springt im Handy direkt zur eigenen Banking-App über die App-ID.

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

Benachrichtigt den Client über eine frisch empfangene Mail.

Beispiel zeigen

Hört auf neue Mail-Benachrichtigungen und protokolliert sie.

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

Fordert eine frische Phone-Datensynchronisation für den aufrufenden Spieler an.

Beispiel zeigen

Fordert vom Server eine frische Phone-Daten-Synchronisation an.

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

Bricht einen aktiven Anruf ab oder beendet ihn.

Beispiel zeigen

Beendet einen aktiven Anruf über eigenen Keybind oder Chat-Befehl.

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

Sendet eine SMS-Nachricht (newMsg, targetNumber).

Beispiel zeigen

Schickt schnell eine SMS an eine Zielnummer per Chateingabe.

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

Speichert einen einzelnen Phone-Settings-Schlüssel/Wert für den Spieler.

Beispiel zeigen

Speichert eine Phone-Einstellung, sobald der Spieler sie clientseitig ändert.

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

Führt eine Agency Airdrop-Zahlung an einen Spieler in der Nähe durch.

Beispiel zeigen

Löst eine Agency-Airdrop-Zahlung an Nahestehende mit eingegebenem Betrag aus.

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

Kauft einen Carrier data plan für den Spieler (price, planName).

Beispiel zeigen

Kauft einen Datentarif, nachdem der Spieler ihn in eigener UI gewählt hat.

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

Erstellt einen Phone-Dispatch aus einem Notruf/SMS.

Beispiel zeigen

Erzeugt einen Phone-Dispatch-Eintrag aus einem eingehenden Notruf.

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

AgencyOS-Tablet mit vollständigem App-Ökosystem. Registriere eigene Apps über die config.lua.

Perfekt für Admin-Dashboards, Business-Management-Apps, Gang-Territorium-Karten oder jede Custom-UI die du in GTA brauchst, lebt in einer schönen Tablet-Hülle ohne Extra-Arbeit.

Zur vollen Doku

Client-Exports

IsPadOpen()

Liefert true, wenn die Tablet-UI offen ist (Tablet-Status prüfen, bevor UIs angezeigt werden).

Beispiel zeigen

Verhindert das erneute Öffnen einer Tablet-UI, wenn das Tablet schon offen ist.

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

Gibt true zurück, wenn das Tablet eingeschaltet ist.

Beispiel zeigen

Pausiert Fleet-Polling, wenn der Spieler das Tablet ausgeschaltet hat.

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

Gibt die vollständige clientseitige PadData-Tabelle zurück.

Beispiel zeigen

Gibt die komplette Tablet-Daten-Tabelle clientseitig zum Inspizieren aus.

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

Gibt das Entity-Handle des gehaltenen Tablet-Props zurück, oder 0 wenn nicht sichtbar.

Beispiel zeigen

Versteckt das Tablet-Prop kurz während einer eigenen Cutscene.

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 von IsPadOpen(), zur Abwärtskompatibilität erhalten.

Beispiel zeigen

Alter Alias, der ein Minispiel sperrt, solange das Tablet offen ist.

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

Gibt true zurück, wenn der Spieler einen aktiven Carrier data plan auf dem Tablet hat.

Beispiel zeigen

Warnt den Spieler, wenn auf dem Tablet kein Datentarif aktiv ist.

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

Gibt die Tabelle { isOpen, poweredOn, syncEnabled } mit dem aktuellen Tablet-Status zurück.

Beispiel zeigen

Speichert den Tablet-Status nur, wenn es offen und eingeschaltet ist.

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

Gibt true zurück, wenn der Spieler das konfigurierte Tablet-Item im Inventar hat.

Beispiel zeigen

Blockiert das Dispatch-UI-Kommando, wenn der Spieler kein Tablet dabei hat.

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)

Registriert ein Laufzeit-Agency Pay-terminal an einer Koordinate (markers, blip, checkout payload).

Beispiel zeigen

Erstellt ein Agency-Pay-Terminal im Krankenhaus-Foyer zur Laufzeit.

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)

Entfernt einen zuvor registrierten Agency Pay-terminal anhand der id.

Beispiel zeigen

Entfernt einen registrierten Tablet-Pay-Point, wenn der Standort schließt.

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

Öffnet das Tablet (falls nötig) und startet einen Agency Pay-Checkout mit dem gegebenen Payment-Payload.

Beispiel zeigen

Öffnet das Tablet und startet Agency-Pay-Checkout für die Grundsteuer.

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

Startet einen ausgehenden Tablet-Anruf an den angegebenen Kontakt ({ name, number, ... }).

Beispiel zeigen

Startet einen ausgehenden Tablet-Anruf bei eingehender Dispatch-Nachricht.

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)

Zeigt eine Aktionsbenachrichtigung mit Accept/Deny-Buttons; blockiert bis der Nutzer antwortet und gibt true/false zurück.

Beispiel zeigen

Zeigt eine blockierende Annehmen-/Ablehnen-Tablet-Benachrichtigung für eine Lieferung.

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)

Bringt eine App aus deiner eigenen Resource auf den Startbildschirm des Pads und in den Store. Gibt true zurück, oder false und einen Fehler.

UnregisterApp(id)

Entfernt eine mit RegisterApp hinzugefügte App.

GetRegisteredApps()

Gibt die Tabelle aller Apps zurück, die andere Resources angemeldet haben, nach id geordnet.

ClosePad()

Schließt das Pad, zum Beispiel bevor sich deine eigene Oberfläche öffnet.

ClosePhone()

Dasselbe wie ClosePad(), unter dem Namen, den das Agency Phone verwendet. So läuft derselbe Code für beide.

IsPhoneRadioActive()

Gibt zwei Werte zurück: true, solange das Radio des Pads spielt, und den Sender, der gerade läuft.

StopPhoneRadio()

Stoppt das Radio des Pads.

Server-Exports

SendMail(identifier, mailData)

Sendet per Identifier eine Mail an das primäre Postfach des Spielers (gibt Erfolg zurück).

Beispiel zeigen

Schickt einem Spieler per Identifier eine Mail-Benachrichtigung zur Rechnung.

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)

ox_inventory-Hook, registriert wenn ESX+ox_inventory erkannt wird; öffnet das Tablet für den Inventarinhaber.

Beispiel zeigen

Hängt sich an ox_inventory, um das Tablet via Integration zu öffnen.

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)

ox_inventory-Hook für die alte Phone-Item-ID; öffnet das Tablet für den Inventarinhaber.

Beispiel zeigen

Leitet das alte Phone-Item so um, dass stattdessen das Tablet öffnet.

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

Gibt die aktuellen Aktien- und Kryptokurse der Märkte zurück, nach Markt-ID geordnet.

PushPadData(source)

Schickt dem Pad dieses Spielers einen frischen Stand seiner Daten. Gibt false zurück, wenn er sich nicht bauen ließ.

Ereignisse

agency-pad:client:notify

Zeigt eine Tablet-Benachrichtigung an (title, text, icon, color, timeout, silent).

Beispiel zeigen

Sendet eine nicht-blockierende Tablet-Toast über eine neu freigeschaltete Mission.

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

Öffnet das Tablet, wenn das Inventaritem benutzt wird.

Beispiel zeigen

Leitet ein eigenes Item-Use-Event an die Tablet-Öffnungsroutine weiter.

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

Auf dem Client triggern, um eine bestimmte App im Tablet zu öffnen.

Beispiel zeigen

Springt im Tablet direkt zur eigenen Fuhrpark-App.

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

Benachrichtigt den Client über eine frisch empfangene Mail.

Beispiel zeigen

Hört auf neue Tablet-Mail-Benachrichtigungen und loggt sie lokal.

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

Benachrichtigt den Client über ein stündliches Business-Paycheck-Event.

Beispiel zeigen

Reagiert auf das stündliche Business-Paycheck-Event vom Tablet.

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

Fordert eine frische Tablet-Datensynchronisation für den aufrufenden Spieler an.

Beispiel zeigen

Fordert vom Server eine frische Tablet-Daten-Synchronisation an.

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

Sendet eine SMS-Nachricht (newMsg, targetNumber).

Beispiel zeigen

Schickt eine SMS vom Tablet via eigenem Befehl und Ziel-Nummer.

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

Führt eine Agency Airdrop-Zahlung an einen Spieler in der Nähe durch.

Beispiel zeigen

Löst eine Agency-Airdrop-Überweisung an Nahestehende vom Tablet aus.

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

Kauft einen Carrier data plan für den Spieler.

Beispiel zeigen

Kauft einen Tablet-Datentarif nach Auswahl in einer eigenen UI.

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

Erstellt einen Tablet-Dispatch aus einem Notruf/SMS.

Beispiel zeigen

Erzeugt einen Tablet-Dispatch-Eintrag aus einem eingehenden Notruf.

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

Erstellt ein neues Business/Organisation für den Spieler.

Beispiel zeigen

Erstellt einen neuen Business-Eintrag über einen eigenen Spielbefehl.

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

Admin erstellt ein Business im Namen eines anderen Spielers.

Beispiel zeigen

Leitet einen Admin-Befehl weiter, um eine Firma für einen anderen Spieler zu erstellen.

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

Startet eine konfigurierte Business-Mission für den Spieler.

Beispiel zeigen

Startet eine konfigurierte Business-Mission für den aufrufenden Spieler.

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

Sendet eine Bewerbung an ein Business-Listing.

Beispiel zeigen

Bewirbt sich auf eine Tablet-Stellenanzeige anhand der ID.

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

Erstellt einen Entwurf einer Mechaniker-Rechnung.

Beispiel zeigen

Erstellt einen Entwurf einer Mechaniker-Rechnung für ein Kennzeichen.

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

Sendet eine Mechaniker-Rechnung zur Zahlung an einen Kunden.

Beispiel zeigen

Schickt eine fertige Mechaniker-Rechnung zur Zahlung an den Kunden.

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

MDT erstellt ein Bußgeld/eine Rechnung für einen Bürger.

Beispiel zeigen

Erstellt eine MDT-Strafe/Rechnung für einen Bürger via eigenem Net-Event.

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

03Agency-Watch

Jetzt mit AgencyOS27: kostenloses Update für alle, die die Uhr schon haben. Eine echte Smartwatch für FiveM, kein HUD. Zehn Zifferblätter, ein Studio für Gehäuse, Armband und Farben, Aktivitätsringe, Stoppuhr, Timer, Wecker, Wetter, Kompass, Tacho, vier Spiele, ein Kontrollzentrum und ein App Store, alles ohne eine weitere Resource. Angy sitzt auf der Krone und steuert die Uhr auf Zuruf, nach festen Regeln und ohne KI. Ein erkanntes Agency Phone schaltet Anrufe, Nachrichten, Mail, Kontakte und Agency Pay am Handgelenk frei und öffnet die Uhr für eigene Apps. Kostenlos, QBCore / Qbox / ESX / Standalone, zehn Sprachen.

Zur vollen Doku

Client-Exports

OpenWatch(mitte)

Öffnet die Uhr. Mit true öffnet sie sich mittig auf dem Bildschirm statt in der eingestellten Ecke.

CloseWatch()

Schließt die Uhr und gibt den NUI-Fokus frei.

ToggleWatch()

Schließt die Uhr, wenn sie offen ist, und öffnet sie sonst.

IsWatchOpen()

Gibt true zurück, solange die Oberfläche der Uhr auf dem Bildschirm ist.

IsWatchLinked()

Gibt false zurück, wenn der Spieler die Verbindung zum Agency Phone im Kontrollzentrum ausgeschaltet hat.

RunWatchAction()

Löst aus, was auf dem orangen Aktionsknopf liegt (Config.ActionButton).

GetWatchSettings()

Gibt die komplette Einstellungstabelle zurück, aus der die Oberfläche der Uhr gebaut wird (Design, Zifferblatt, Größe, Apps, Sprache).

SetWatchSetting(key, value)

Setzt eine einzelne Einstellung, speichert sie pro Charakter und wendet sie sofort an.

SetWatchSettings(table)

Setzt mehrere Einstellungen auf einmal und baut die Oberfläche nur einmal neu statt einmal pro Wert.

RequestWatchPairing()

Fragt beim Server einen Kopplungscode für die Companion-App an. Die Antwort kommt als Event, nicht als Rückgabewert.

ShowUpdate()

Öffnet den Bildschirm für das Software-Update von AgencyOS.

HandlesDeath()

Gibt true zurück, wenn die Uhr beim Tod den Notfallbildschirm zeigt. Das Agency Phone fragt das ab, damit nie beide Geräte ihn gleichzeitig zeigen.

GetFitness()

Gibt die aktuellen Fitnesswerte des laufenden Tages zurück: Schritte, Strecke, aktive Minuten und Kalorien.

SetWatchAppInstalled(id, on)

Installiert oder entfernt eine App für diesen Spieler. Dasselbe, was der App Store macht, damit ein Server eine App als Belohnung verteilen kann.

FindWatch()

Lässt die Uhr klingeln und leuchten, so wie die Suchfunktion der Companion-App.

StopFindWatch()

Beendet das Klingeln, bevor es von selbst aufhört.

IsWatchRinging()

Gibt true zurück, solange die Uhr klingelt.

Server-Exports

IsPremium(src)

Gibt true zurück, wenn die Uhr dieses Spielers als Pro-Version läuft. Das Urteil kommt aus dem Handshake mit dem echten Agency Phone, nie vom Client.

04Agency-Zero

Ein selbstfahrender elektrischer Viersitzer für FiveM, kostenlos. Das Project 0 ist ein eigenes Fahrzeug, von Grund auf in Blender mit Sollumz gebaut: keine Türgriffe, Türen, die sich wie eine Welle öffnen, ein echtes Lenkrad und Pedale, um selbst zu übernehmen. Spieler rufen es über das Agency Phone, das Agency Pad oder die Agency-Companion-App auf ihrem echten Handy, und es fährt zu ihnen und parkt am Bordstein direkt neben ihnen, statt sich auf die Suche nach einer Parklücke zu machen. Innen läuft AgencyOS27 auf dem Tablet im Armaturenbrett und im Z-Menü: eine Karte zum Antippen, Angy, der eingebaute Assistent, nach festen Regeln und ohne KI, mit dem man in normalen Worten spricht, sechs Fahrassistenten mit einem Hauptschalter, Chiptuning in Stufen, Soundchips und Statistiken pro Auto und pro Besitzer. Jedes Auto trägt eine eigene Nummer, die in der Datenbank an seinen Besitzer gebunden ist, so dass Besitz, Tuning und jede Einstellung einen Neustart überstehen. QBCore, Qbox und ESX werden automatisch erkannt, es läuft auch standalone, und alle Texte kommen in 27 Sprachen mit Englisch als Grundlage.

Zur vollen Doku

Client-Exports

ZeroStatus()

Gibt den Zustand des eigenen Project 0 zurück: ob es existiert, wo es steht, Akku, Reichweite und ob gerade eine Fahrt läuft.

ZeroCall()

Ruft das Auto zum Spieler. Es fährt hin und parkt am Bordstein direkt neben ihm.

ZeroDeliver()

Lässt das Auto liefern, wenn es nicht auf der Karte ist. Kostet Config.Remote.deliveryFee, ohne Framework kostenlos.

ZeroGarage()

Schickt das Auto zurück in seine Garage.

ZeroCancel()

Bricht einen laufenden Ruf oder eine Fahrt ab.

ZeroFind()

Zeigt unten auf dem Bildschirm für Config.Remote.findRadarSeconds Sekunden die Richtung zum Auto.

ZeroDoors(on)

Öffnet die Türen mit true, schließt sie mit false. Sie bewegen sich nacheinander wie eine Welle, nicht alle gleichzeitig.

ZeroLock(on)

Schließt das Auto mit true ab, mit false auf.

ZeroLights(on)

Schaltet das Licht ein und aus.

ZeroBuyInfo()

Gibt zurück, ob der Spieler ein Project 0 kaufen darf und was es kostet. Wer schon eines besitzt, bekommt nichts zurück.

ZeroBuy()

Kauft ein Project 0 für diesen Spieler. Das Auto wird im selben Schritt an ihn gebunden.

ZeroRefresh()

Liest den Zustand neu ein, für eine Oberfläche, die frische Werte will, ohne auf den nächsten Tick zu warten.

IsRideActive()

Gibt true zurück, solange eine autonome Fahrt läuft.

CallProjectZero()

Startet eine Fahrt zum aktuellen Ziel. Ohne Ziel wird der Wegpunkt auf der Karte verwendet.

CancelProjectZero()

Beendet die Fahrt. Das Auto fährt rechts ran und hält.

IsCockpitOpen()

Gibt true zurück, solange das Tablet im Armaturenbrett auf dem Bildschirm ist.

IsManualOverride()

Gibt true zurück, wenn der Fahrer das Steuer übernommen hat. Ohne diese Übersteuerung fährt der Zero nur selbst.

AnyDoorOpen(veh)

Gibt true zurück, wenn mindestens eine Tür dieses Fahrzeugs offen ist.

OpenDoors(veh, opts)

Öffnet die Türen eines Fahrzeugs mit der Wellen-Animation.

CloseDoors(veh, opts)

Schließt sie wieder.

AnimateDoors(veh, open, opts)

Öffnet oder schließt je nach zweitem Argument, für Code, der erst zur Laufzeit entscheidet.

SoundChipOf(veh)

Gibt den Soundchip zurück, der in diesem Auto steckt. Ein anderer Chip ändert den Motorklang, nie das Radio.

Server-Exports

IsPro(src)

Gibt true zurück, wenn der Zero dieses Spielers als Pro-Version läuft. Das Urteil kommt aus dem HMAC-Handshake mit dem echten Agency Phone, nie vom Client.

ZeroVin(plate)

Gibt die Fahrzeugnummer zu einem Kennzeichen zurück. Jedes Project 0 bekommt bei der Übergabe eine und behält sie für immer.

ZeroCarsOf(src)

Gibt alle Project 0 zurück, die dieser Spieler besitzt, mit Nummer, Kennzeichen, Tuningstufe und Statistik.

ZeroSync(src)

Schreibt den Stand des Registers erneut an diesen Spieler, zum Beispiel nachdem ein anderes Script den Besitz geändert hat.

Ereignisse

agency-zero:client:rideStarted

Eine Fahrt hat begonnen. Enthält das Ziel.

agency-zero:client:rideEnded

Die Fahrt ist vorbei, abgebrochen oder angekommen.

agency-zero:client:arrived

Das Auto hat den Spieler erreicht und die Türen geöffnet.

05Agency-Lifeinvader V3

Die Werbeagentur der Stadt: Spieleranzeigen auf jedem Bildschirm mit Kategorien, Boosts, Terminplanung, Entwürfen, Prüfung, einem Mitarbeiterjob, einem KI-Texter und einer App für Agency Phone und Agency Pad.

Geeignet für Unternehmens- und Job-Scripts, die selbst Werbung schalten, Event- und Casino-Scripts, die laufende Aktivitäten ankündigen, Discord-Protokolle aller Anzeigen, Telefone und Radialmenüs, die die App öffnen, sowie Admin-Tools zur Prüfung der Lifeinvader-Admins.

Zur vollen Doku

Client-Exports

OpenApp(tab)

Öffnet die App auf der angegebenen Seite: 'feed', 'create', 'mine', 'drafts' oder 'settings'. Ohne Seitenangabe wird die zuletzt verwendete Seite oder der Live-Feed geöffnet.

Beispiel zeigen

Öffnet die App direkt bei „Neue Anzeige“ über dein eigenes Radialmenü oder Telefon.

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

Öffnet die App im Live-Feed.

Beispiel zeigen

Öffnet den Live-Feed, zum Beispiel an einem Zeitungsstand.

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

Schließt die App.

Beispiel zeigen

Schließt die App, bevor dein eigenes Menü geöffnet wird.

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

Ist true, solange die App auf diesem Client geöffnet ist.

Beispiel zeigen

Verhindert, dass sich dein Menü über der App öffnet.

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

Server-Exports

PostAd(text, opts)

Veröffentlicht eine Anzeige des Servers selbst: kostenlos, wird nie überprüft und steht an erster Stelle in der Warteschlange. opts: author, category, instant (wird sofort ausgeführt), reps, interval, duration und boosted. Gibt die Anzeigen-ID oder nil und einen Fehlercode zurück.

Beispiel zeigen

Veröffentlicht eine offizielle Anzeige über dein Casino- oder Event-Script, kostenlos und an erster Stelle in der Warteschlange.

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

Der Live-Feed so, wie er in der App angezeigt wird, neueste zuerst: id, text, category, boosted, author (nil bei anonymen Anzeigen), sentAt, created, sent und live.

Beispiel zeigen

Liest die letzten Anzeigen für eine Website, eine Zeitung oder eine Handy-App aus.

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

Eine Anzeige im selben Format wie im Feed oder nil.

Beispiel zeigen

Ruft eine Anzeige anhand ihrer Nummer ab.

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

Ist true, wenn der Spieler per ACE, Gruppe oder Kennung Lifeinvader-Admin ist.

Beispiel zeigen

Verwendet die Lifeinvader-Adminrechte im eigenen Script.

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

Ereignisse

agency-lifeinvader:adShown

Lokales Event auf jedem Client, wenn eine Anzeige auf dem Bildschirm erscheint, mit id, text, category, catLabel, icon, author (nil bei anonymen Anzeigen), boosted, duration und system (true bei offiziellen Ankündigungen).

Beispiel zeigen

Reagiert clientseitig, wenn eine Anzeige erscheint, zum Beispiel auf einer Werbetafel.

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

Lokales Event auf dem Server, jedes Mal, wenn eine Anzeige geschaltet wird, mit der Anzeige im Format des Feeds. Nützlich für Logs oder einen Discord webhook.

Beispiel zeigen

Protokolliert jede Anzeige, die auf dem Server geschaltet wird.

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

Aus V3 beibehalten: Öffnet die App mit „Neue Anzeige“, damit Skripte, die das alte Menü geöffnet haben, weiterhin funktionieren.

Beispiel zeigen

Öffnet für einen Spieler die App auf der Seite „Neue Anzeige“, wie es das V3-Event getan hat.

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

Aus V3 beibehalten: Öffnet die App im Live-Feed.

Beispiel zeigen

Öffnet für einen Spieler den Live-Feed, wie es das V3-Event getan hat.

TriggerClientEvent('agency_lifeinvader:openRecentMenu', source)

06Agency-Blackmarket V2

Ein lebendiger Schwarzmarkt mit umherziehenden Händlern, Live-Markt, Feilschen, Bestellungen zur Abholung, Kurieraufträgen, Hehler, Geldwäsche und fünf Rufstufen.

Passt zu Gang-, Überfall- und Drogen-Scripts, die Ruf oder Guthaben vergeben sollen, zu Polizei- und Dispatch-Werkzeugen, die auf Deals und Händlerumzüge reagieren, und zu Radialmenüs oder Handys, die das Schwarzmarkt-Menü öffnen.

Zur vollen Doku

Client-Exports

OpenMenu()

Öffnet das Menü von /ablackmarket, zum Beispiel aus einem Radialmenü oder einer Handy-App. Es gelten dieselben Prüfungen wie beim Befehl.

Beispiel zeigen

Öffnet das Schwarzmarkt-Menü aus deinem eigenen Radialmenü oder deiner Handy-App.

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

Schließt das Menü und gibt die Maus zurück ans Spiel.

Beispiel zeigen

Schließt das Menü, zum Beispiel vor einer eigenen Zwischensequenz.

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

Gibt true zurück, solange das Schwarzmarkt-Menü offen ist, beim Händler oder unterwegs.

Beispiel zeigen

Prüft, ob das Menü offen ist, bevor deine eigene Oberfläche erscheint.

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

Server-Exports

GetReputation(source)

Die Rufpunkte eines Spielers, 0 für einen Spieler, der noch keine hat.

Beispiel zeigen

Lässt nur Spieler mit genug Ruf deinen Job oder Überfall starten.

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

Setzt den Ruf eines Spielers auf einen festen Wert, nie unter 0. Gibt bei Erfolg true zurück.

Beispiel zeigen

Setzt den Ruf eines Spielers auf einen festen Wert.

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

Gibt Ruf dazu oder nimmt ihn mit einem negativen Betrag weg. Eine neue Stufe wird dem Spieler und der Companion-App gemeldet. Gibt bei Erfolg true zurück.

Beispiel zeigen

Belohnt einen erledigten Job mit Ruf; eine neue Stufe wird gemeldet.

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

Gibt zwei Werte zurück: die Nummer der Stufe des Spielers (standardmäßig 1 bis 5) und ihren Namen.

Beispiel zeigen

Liest die Nummer der Stufe und ihren Namen, zum Beispiel um eigene Inhalte freizuschalten.

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

Gibt Händlerguthaben dazu, das der Spieler beim nächsten Kauf oder der nächsten Bestellung einsetzen kann. Gibt bei Erfolg true zurück.

Beispiel zeigen

Gibt einem Spieler Händlerguthaben für seinen nächsten Kauf oder seine nächste Bestellung.

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

Lässt einen Händler sofort an einen anderen seiner Orte ziehen. Gibt true zurück, wenn er umgezogen ist.

Beispiel zeigen

Lässt einen Händler sofort an einen anderen seiner Orte ziehen.

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

Der Händler verschwindet für die angegebenen Minuten und taucht dann an einem anderen seiner Orte auf, wie nach einem Polizeibesuch.

Beispiel zeigen

Schickt einen Händler eine Weile weg, wie nach einem Polizeibesuch.

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

True, solange der Händler an einem seiner Orte steht und nicht weg ist.

Beispiel zeigen

Prüft, ob ein Händler gerade an einem seiner Orte steht.

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

Startet einen Flash Sale mit zufälligen Items zum Sonderpreis. Ohne Minuten gilt die Zeit aus Config.FlashSale.

Beispiel zeigen

Startet einen Flash Sale aus deinem eigenen Event oder Zeitplan.

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

Ereignisse

agency-blackmarket:deal

Wird nach jedem Deal auf dem Server mit (source, kind, data) ausgelöst. kind ist buy, sell, launder, order, pickup oder job, und data enthält die Einzelheiten des Deals, etwa den Händler, die Items und die Summe.

Beispiel zeigen

Reagiert auf jeden Deal, zum Beispiel für eigene Logs oder ein Polizei-Tablet.

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

Wird auf dem Server mit (dealerId, pos, reason) ausgelöst, wenn ein Händler seinen Ort wechselt. reason ist rotate, return, admin oder export.

Beispiel zeigen

Verfolgt die Händler, zum Beispiel für einen Informanten- oder Ermittlerjob.

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

Wird auf dem Server mit (items, minutes) ausgelöst, wenn ein Flash Sale startet. items ordnet jedem reduzierten Item seinen Rabatt in Prozent zu.

Beispiel zeigen

Kündigt einen Flash Sale auf deinen eigenen Kanälen an.

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

Ein Bergbau-Job mit sieben Gebieten, drei Werkzeugen, 100 Leveln, Öfen, Edelsteinschliff, Aufträgen und einem Markt mit schwankenden Preisen, alles in einem Menü.

Geeignet für Quest- und Erfolgsskripte, die auf Bergbau reagieren, Wirtschafts- und Job-Skripte, die Marktpreise auslesen, Radialmenüs und Handys, die das Menü öffnen, sowie Admin-Tools, die Level festlegen oder XP vergeben.

Zur vollen Doku

Client-Exports

OpenMenu(page)

Öffnet das Menü, zum Beispiel über ein Radialmenü oder eine Handy-App. page ist overview (Standard), market, tools, smelter, cutting oder contracts.

Beispiel zeigen

Öffnet das Menü auf der Marktseite über dein eigenes Radialmenü oder deine Handy-App.

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

Schließt das Menü und gibt die Maus zurück ans Spiel.

Beispiel zeigen

Schließt das Menü, bevor sich dein eigenes Menü öffnet.

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

True, solange das Menü geöffnet ist.

Beispiel zeigen

Verhindert, dass sich dein Menü über dem Bergbaumenü öffnet.

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

True, solange der Spieler abbaut oder einen Edelstein schleift.

Beispiel zeigen

Verhindert, dass dein Script die Bergbau- oder Abbauanimation unterbricht.

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

Das Mining-Level des Spielers.

Beispiel zeigen

Liest die Stufe des Spielers aus, zum Beispiel für ein HUD oder eine Handy-App.

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

Server-Exports

GetLevel(source)

Das Mining-Level eines Spielers, 0, wenn der Spieler unbekannt ist.

Beispiel zeigen

Prüft die Bergbaustufe auf dem Server, bevor dein Script etwas erlaubt.

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

Level und Fortschritt als { level, xp, need, pct, max }.

Beispiel zeigen

Liest Stufe und Fortschritt aus, zum Beispiel für eine Handy-App oder eine Rangliste.

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

Fügt XP hinzu, einschließlich Levelaufstiegen und der zugehörigen Nachricht. Gibt true zurück, wenn der Spieler gefunden wurde.

Beispiel zeigen

Vergibt Bergbau-XP als Belohnung für deine eigene Quest oder dein eigenes Event.

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

Legt das Level zwischen 1 und dem höchsten Level fest und setzt die XP auf 0.

Beispiel zeigen

Legt die Stufe fest, zum Beispiel über dein eigenes Admin-Tool.

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

Was der Spieler bisher getan hat: { mined, smelted, cut, broken, sold, earned, contracts }.

Beispiel zeigen

Liest aus, was ein Spieler abgebaut und verdient hat, für eine Rangliste oder Erfolge.

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

Der aktuelle Marktpreis eines Gegenstands pro Stück.

Beispiel zeigen

Liest den aktuellen Marktpreis aus, zum Beispiel für einen Börsenticker oder einen Shop, der dieselben Gegenstände ankauft.

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

Ereignisse

agency-minerjob:mined

Wird auf dem Server ausgelöst, nachdem ein Abbau vergütet wurde, mit source, item, count und dem Abbaugebiet. Mit AddEventHandler abonnieren, zum Beispiel für Quests oder Statistiken.

Beispiel zeigen

Reagiert auf dem Server auf jeden Bergbauvorgang, bei dem eine Auszahlung erfolgt.

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

Wird auf dem Server nach einem Verkauf ausgelöst, mit source, item, count und dem insgesamt gezahlten Betrag.

Beispiel zeigen

Reagiert auf dem Server auf jeden Verkauf, für Logs oder Statistiken.

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

Wird auf dem Server ausgelöst, wenn ein Auftrag abgegeben wurde, mit source, item, count und der Bezahlung.

Beispiel zeigen

Reagiert auf dem Server, wenn ein Auftrag ausgeliefert wurde.

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

08Agency-Repairkit V2

Realistischer Fahrzeugschaden mit vier Reparaturkits, Skill-Checks und einem Mechaniker-Bonus.

Passt zu Mechaniker- und Abschleppjobs, zu Shops, die Kits verkaufen, und zu jedem Script, das auf eine abgeschlossene Reparatur oder die Schadensstufe des Autos reagieren soll, das ein Spieler fährt.

Zur vollen Doku

Client-Exports

IsRepairing()

Gibt true zurück, während der lokale Spieler an einem Fahrzeug arbeitet, zum Beispiel um dein eigenes Menü geschlossen zu halten.

Beispiel zeigen

Hält dein eigenes Menü geschlossen, während der Spieler ein Fahrzeug repariert.

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

Motor, Karosserie und Tank in %, die Reifen, der Schmutz, die Schadensstufe und ob der Tank leckt. Ohne Argument liest es das Fahrzeug aus, in dem der Spieler sitzt.

Beispiel zeigen

Liest den Zustand des Fahrzeugs aus, das der Spieler fährt.

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

Öffnet das /arepairkit-Menü, zum Beispiel aus einer Phone-App oder einem Radialmenü.

Beispiel zeigen

Öffnet das Reparaturkit-Menü aus deinem eigenen Radialmenü oder deiner Phone-App.

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

Schließt das Menü und gibt die Maus zurück ans Spiel.

Beispiel zeigen

Schließt das Menü, zum Beispiel vor einer eigenen Cutscene.

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

Gibt true zurück, solange das Menü offen ist.

Beispiel zeigen

Prüft, ob das Menü offen ist, bevor deine eigene Oberfläche erscheint.

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

Server-Exports

UseKit(source, kit)

Startet ein Kit für einen Spieler, als wäre das Item benutzt worden, mit allen Prüfungen. Gibt true zurück, oder false und den Grund. Für eigene Inventare und Shops.

Beispiel zeigen

Startet das Notfall-Reparaturkit für einen Spieler aus einem eigenen Inventar.

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

Fügt einem Spieler Kits über das erkannte Inventar hinzu. Gibt bei Erfolg true zurück.

Beispiel zeigen

Gibt einem Spieler zwei Reifen-Reparaturkits über das erkannte Inventar.

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

true, solange dieser Spieler an einem Fahrzeug arbeitet.

Beispiel zeigen

Überspringt eine Aufgabe, während der Spieler repariert.

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

Jedes konfigurierte Kit mit Item, Label, Arbeitsart und Dauer.

Beispiel zeigen

Listet jedes Kit mit seinem Item und Label auf.

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

Der ox_inventory-Item-Export. Die Item-Einträge in install/ox_inventory.lua verweisen darauf; er ist nicht dafür gedacht, direkt aufgerufen zu werden.

Beispiel zeigen

Der Item-Eintrag, der ox_inventory mit den Kits verbindet.

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

Ereignisse

agency-repairkit:repaired

Wird auf dem Server mit (source, netId, kit) ausgelöst, nachdem eine Reparatur abgeschlossen und das Kit aufgebraucht wurde. Gut für Logs, Zahlungen oder Job-Fortschritt.

Beispiel zeigen

Protokolliert jede abgeschlossene Reparatur auf dem Server.

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

Wird auf dem Client des reparierenden Spielers mit (netId, kit) ausgelöst, wenn eine Reparatur abgeschlossen ist.

Beispiel zeigen

Reagiert auf dem Client des reparierenden Spielers.

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

Wird auf dem Client des Fahrers mit (level, vehicle) ausgelöst, wenn sich die Schadensstufe ändert: ok, light, medium, heavy oder critical.

Beispiel zeigen

Folgt der Schadensstufe des Fahrzeugs, das der Spieler fährt.

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

09Agency-Vehiclekeys V2

Universelle Fahrzeugschlüssel mit Schlüsselbund und Fernbedienung, gespeicherten und temporären Schlüsseln, Jobs-Schlüsseln, Schlösserknacken und Überbrücken mit Polizeialarm sowie einer Admin-Seite.

Geeignet für Garagen, Fahrzeughändler und Mietstationen, die Schlüssel ausgeben, Jobs-Skripte mit eigenen Fahrzeugen, Raub- und Autodiebstahl-Skripte, die Schlüssel überprüfen oder ausgeben sollen, HUDs, die den Motorstatus anzeigen, sowie Radialmenüs oder Telefone, die den Schlüsselbund öffnen.

Zur vollen Doku

Client-Exports

HasKeys(plate)

True, wenn der Spieler einen Schlüssel für dieses Kennzeichen besitzt: als Besitzer, geteilt oder temporär. Jobfahrzeuge lassen sich anhand ihres Modells öffnen und werden hier nicht berücksichtigt.

Beispiel zeigen

Überprüft den Schlüssel, bevor dein Skript dem Spieler erlaubt, das Auto zu benutzen.

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

Alle Schlüssel des Spielers als Liste von { plate, kind }. kind ist owner, shared oder temp.

Beispiel zeigen

Listet alle Schlüssel des Spielers auf, zum Beispiel für eine Telefon-App.

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

Ver- oder entriegelt ein Fahrzeug, für das der Spieler einen Schlüssel hat, mit derselben Animation und denselben Prüfungen wie bei G. Wenn kein Fahrzeug angegeben ist, wird das nächstgelegene Fahrzeug in Reichweite verwendet.

Beispiel zeigen

Ver- oder entriegelt das nächste Auto über dein eigenes Radialmenü.

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

Startet oder stoppt den Motor des Fahrzeugs, das der Spieler fährt, wie bei U.

Beispiel zeigen

Startet oder stoppt den Motor über dein eigenes Menü oder Fahrzeug-HUD.

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

Öffnet den Schlüsselbund, zum Beispiel über ein Radialmenü oder eine Handy-App.

Beispiel zeigen

Öffnet den Schlüsselbund über dein eigenes Radialmenü oder deine Telefon-App.

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

Schließt den Schlüsselbund und gibt die Maussteuerung an das Spiel zurück.

Beispiel zeigen

Schließt den Schlüsselbund, bevor sich dein eigenes Menü öffnet.

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

True, solange der Schlüsselbund geöffnet ist.

Beispiel zeigen

Verhindert, dass sich dein Menü über dem Schlüsselbund öffnet.

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

Startet einen Dietrichversuch am Fahrzeug vor dem Spieler oder ein Hotwiring auf dem Fahrersitz. Vorgesehen für ox_inventory-Gegenstände: client = { export = 'Agency-Vehiclekeys.useLockpick' }.

Beispiel zeigen

Ermöglicht Spielern, den Dietrich über das ox_inventory-Menü zu verwenden.

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

Server-Exports

GiveKeys(source, plate, mode, hours)

Gibt einen Schlüssel aus. mode 'temp' (Standard) ist ein temporärer Schlüssel, optional für eine bestimmte Anzahl von Stunden, 'perm' ein gespeicherter Schlüssel. Als Quelle kann source oder eine Kennung verwendet werden.

Beispiel zeigen

Vergibt einen temporären Schlüssel, zum Beispiel wenn ein Auto gemietet oder durch einen Job gespawnt wird.

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

Entzieht einen geteilten oder temporären Schlüssel. Gibt true zurück, wenn ein Schlüssel vorhanden war.

Beispiel zeigen

Entzieht den Schlüssel wieder, wenn die Miete endet oder der Job abgeschlossen ist.

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

True, wenn der Spieler einen Schlüssel für das Kennzeichen besitzt, einschließlich Jobschlüsseln für ein Fahrzeug in der Nähe.

Beispiel zeigen

Prüft auf dem Server, ob der Spieler den Schlüssel wirklich besitzt.

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

Macht den Spieler zum Besitzer eines Kennzeichens, für Garagen und Shops auf Standalone-Servern. Ein vorheriger Besitzer verliert den Schlüssel.

Beispiel zeigen

Macht den Käufer auf Standalone-Servern zum Besitzer des Autos.

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

Entfernt den Besitzer, den dieses Script für ein Kennzeichen gespeichert hat.

Beispiel zeigen

Entfernt den gespeicherten Besitzer, wenn das Auto verkauft oder verschrottet wird.

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

Die Kennung des Besitzers und ihre Herkunft: 'framework' für eigene Fahrzeuge von QBCore, Qbox oder ESX, 'store' für Besitzer, die von diesem Script gespeichert wurden.

Beispiel zeigen

Ermittelt den Besitzer eines Kennzeichens, etwa für Polizei-Tools oder Abschlepp-Scripts.

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

Alle anderen Personen mit einem Schlüssel für das Kennzeichen, als Liste von { identifier, kind, name, expires }.

Beispiel zeigen

Zeigt allen an, wer einen Schlüssel für ein Auto besitzt, zum Beispiel in einem Polizeicomputer.

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

Sperrt oder entsperrt ein Fahrzeug für alle, ohne Schlüsselprüfung. Für Scripts, die ein Fahrzeug öffnen müssen.

Beispiel zeigen

Öffnet oder verriegelt ein Auto für alle, ohne den Schlüssel zu prüfen.

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

True, wenn das Fahrzeug abgeschlossen ist.

Beispiel zeigen

Liest den Verriegelungsstatus auf dem Server aus.

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

Das Framework, das das Script erkannt hat: qbcore, esx oder standalone.

Beispiel zeigen

Ermöglicht deinem Script, das Framework zu verwenden, das das Schlüssel-Script erkannt hat.

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

Ereignisse

Agency:Keys:GiveServer

Fordert einen temporären Schlüssel für ein Kennzeichen an, wie Agency Garage und Agency Vehicleshop. Vom Client mit dem Kennzeichen auslösen. Das Fahrzeug muss neben dem Spieler stehen oder ihm gehören.

Beispiel zeigen

Fordert einen Schlüssel für ein Auto an, das gerade neben dem Spieler gespawnt wurde.

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

Das Schlüssel-Event von qb-vehiclekeys, mit derselben Bedeutung, damit Garagen und Shops, die für qb-vehiclekeys entwickelt wurden, weiterhin funktionieren.

Beispiel zeigen

Scripts, die für qb-vehiclekeys geschrieben wurden, funktionieren ohne Änderungen weiter.

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

Client-Event, das viele Garagen und Shops nach dem Spawnen eines Fahrzeugs auslösen. Vergibt nach denselben Prüfungen auf dem Server einen temporären Schlüssel für dieses Kennzeichen.

Beispiel zeigen

Das Event, das viele Garagen nach dem Spawnen eines Autos auslösen, gibt dem Spieler einen Schlüssel.

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

Das Client-Event von qb-vehiclekeys zum Ausgeben von Schlüsseln, mit derselben Bedeutung.

Beispiel zeigen

Händigt einen Schlüssel aus, wie qb-vehiclekeys.

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

Wird auf dem Client ausgelöst, wenn der Motor mit einem Schlüssel gestartet oder ausgeschaltet wird, damit HUDs wie Agency-Hud den Motorstatus verfolgen können.

Beispiel zeigen

Lässt dein HUD dem Motorstatus folgen, wenn du ihn mit einem Schlüssel startest oder abstellst.

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

10Agency-Vending

Verkaufsautomaten mit Spielerbesitz, Bar- oder AgencyPay-Kartenzahlung.

Kombiniere mit Agency-Phone's AgencyPay-Export für Kartenzahlungen. Nutze in Jobs wo Spieler Vending-Standorte besitzen (Tankstellen, Büros, Apartments) für passives Einkommen.

Zur vollen Doku

Ereignisse

agency-vending:notify

Allgemeiner server-gesteuerter Benachrichtigungs-Dispatcher fuer die Vending-Resource.

Beispiel zeigen

Sendet dem Spieler nach einem Kauf eine generische Vending-Benachrichtigung.

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

Startet eine AgencyPay-Kasse ueber die agency-phone-Integration mit Haendler-Metadaten.

Beispiel zeigen

Startet einen Agency-Pay-Checkout per Telefon mit den Kiosk-Haendlerdaten.

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

Ergebnis eines Maschinenkaufs, an die NUI fuer Rueckmeldung weitergeleitet.

Beispiel zeigen

Leitet das Buy-Machine-Ergebnis an eine eigene Shop-NUI fuer Feedback weiter.

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

Broadcast, dass eine neue spieler-eigene Maschine erstellt wurde; aktualisiert lokalen Cache und benachrichtigt Besitzer.

Beispiel zeigen

Sendet einen neu erstellten spielerbesessenen Automaten an alle Clients.

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

Server-verifiziertes Oeffnen des Besitzer-Verwaltungsmenues mit Items, Einnahmen und Label.

Beispiel zeigen

Oeffnet die verifizierte Management-UI mit Artikeln, Einnahmen und Label.

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

Oeffnet die Besitzer-Uebersicht-NUI mit allen Maschinen des Spielers samt Strassennamen.

Beispiel zeigen

Oeffnet die Besitzeruebersicht-NUI mit allen Automaten des Spielers.

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

Admin-Spawner-Broadcast, dass eine neue gespawnte Maschinen-Entitaet erstellt wurde.

Beispiel zeigen

Informiert alle Clients, dass ein Admin einen neuen Automaten spawnte.

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

Admin-Spawner-Broadcast, dass eine gespawnte Maschinen-Entitaet geloescht wurde.

Beispiel zeigen

Teilt allen Clients mit, dass ein Admin einen gespawnten Automaten geloescht hat.

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

Oeffnet die Admin-Spawner-NUI, nachdem die server-seitige Berechtigungspruefung bestanden ist.

Beispiel zeigen

Oeffnet die Admin-Spawner-NUI zum Platzieren von Weltautomaten.

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

Spieler kauft einen Verkaufsautomaten eines bestimmten Typs an angegebenen Koordinaten/Heading.

Beispiel zeigen

Spieler kauft einen Sprunk-Automaten an seinen aktuellen Koordinaten von einem NPC.

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

Aufrufer fordert die Liste seiner eigenen Maschinen fuer die Besitzer-Uebersicht-UI an.

Beispiel zeigen

Fordert vom Server die Liste der spielereigenen Automaten an.

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

Aufrufer fordert eine vollstaendige Synchronisierung aller spieler-eigenen Maschinen vom server an.

Beispiel zeigen

Fordert eine frische Vollsynchronisierung aller spielereigenen Automaten an.

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

Server-verifiziertes Oeffnen der Verwaltungs-UI fuer eine eigene Maschine.

Beispiel zeigen

Fordert serverseitig verifizierte Management-UI fuer den geklickten Automaten an.

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

Aufrufer fordert die Liste der admin-gespawnten Maschinen fuer die Spawner-UI an.

Beispiel zeigen

Fordert die Liste aller vom Admin gespawnten Automaten fuer die Spawner-UI an.

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

Admin platziert nach Berechtigungspruefung server-seitig ein neues Verkaufsautomaten-Prop.

Beispiel zeigen

Admin spawnt nach Berechtigungspruefung ein neues Snack-Automaten-Prop.

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

Admin loescht server-seitig ein zuvor gespawntes Verkaufsautomaten-Prop.

Beispiel zeigen

Admin entfernt serverseitig ein zuvor gespawntes Automaten-Prop.

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

11Agency-Admin

Vollwertiges Admin-Panel mit Glas-UI, AgencyAI-Chat und über 60 Admin-Tools.

Die Events eignen sich perfekt als "Primitives" für Anti-Cheat, Moderations-Bots oder automatisierte Tools, rufe sie aus deinem Server-Script auf um zu freezen/kicken/benachrichtigen, ohne eine eigene UI zu schreiben.

Zur vollen Doku

Ereignisse

agency-admin:client:refreshStaffRanks

Loest den Client aus, die Staff-Ranks-Daten erneut abzurufen.

Beispiel zeigen

Aktualisiert den Staff-Rang-Cache fuer jeden Online-Admin nach einer Befoerderung.

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

Friert die Weltzeit auf dem Client zur angegebenen Stunde/Minute ein bzw. gibt sie frei.

Beispiel zeigen

Anti-Cheat friert die Weltuhr auf Mittag ein, waehrend ein Spieler geprueft wird.

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

Sendet einen einzelnen Dashboard-Kartenwert (z. B. Live-Zaehler) an die Panel-UI.

Beispiel zeigen

Sendet die aktuelle Anzahl Online-Spieler an die Admin-Dashboard-Karte.

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

Teleportiert den Aufrufer zu den angegebenen Weltkoordinaten.

Beispiel zeigen

Teleportiert einen Spieler nach einem Respawn-Ereignis zu den gespeicherten Koordinaten.

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

Zeigt einen serverweiten Ankündigungs-Banner an.

Beispiel zeigen

Sendet ein serverweites Ankuendigungsbanner von einem benannten Systemabsender.

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

Sendet eine Benachrichtigung an einen bestimmten Admin.

Beispiel zeigen

Sendet dem Spieler eine gestaltete Benachrichtigung, wenn sein Antrag genehmigt wird.

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

Friert den Zielspieler an Ort und Stelle ein.

Beispiel zeigen

Friert einen verdaechtigen Spieler ein, damit das Team in Ruhe ermitteln kann.

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

Stellt HP/Rüstung des Ziels wieder her.

Beispiel zeigen

Heilt den Patienten vollstaendig nach Abschluss der RP-Behandlung.

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

Belebt den Zielspieler wieder.

Beispiel zeigen

Wiederbelebt einen ausgeknockten Spieler nach erfolgreichem EMS-Minigame.

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

Teleportiert den lokalen Spieler an den angegebenen Koordinatenvektor.

Beispiel zeigen

Teleportiert den lokalen Spieler an die uebergebenen Koordinaten.

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

Öffnet die Admin-Panel-UI (erfordert ACE-Berechtigung).

Beispiel zeigen

Oeffnet die Haupt-Admin-Panel-UI fuer das Teammitglied beim Diensteintritt.

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

Server-gesteuerter Trigger zum Oeffnen des Admin-Tools-Untermenues.

Beispiel zeigen

Oeffnet das Admin-Tools-Untermenue, wenn der Staff-Hotkey gedrueckt wird.

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

Server-gesteuerter Trigger zum Schliessen der Admin-Panel-UI.

Beispiel zeigen

Erzwingt das Schliessen der Admin-Panel-UI, wenn der Admin geprueft wird.

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

Server-gesteuerter Trigger zum Oeffnen des In-Game-Kleidungsmenues fuer den Spieler.

Beispiel zeigen

Oeffnet das Kleidungsmenue, nachdem der Spieler ein Outfit beim Schneider gekauft hat.

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

Fordert die aktuelle Online-Spielerliste fuer das Admin-Panel an.

Beispiel zeigen

Fordert die aktuelle Online-Spielerliste vom Server fuer das Panel an.

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

Fordert die Panel-Berechtigungstabelle fuer den Rangeditor an.

Beispiel zeigen

Fragt den Server nach der Panel-Berechtigungstabelle fuer den Rang-Editor.

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

Fordert den Staff-Ranks-Datensatz fuer das Panel an.

Beispiel zeigen

Fordert den vollstaendigen Staff-Rangdatensatz fuer ein eigenes CRM-Widget an.

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

Erstellt einen neuen Staff-Rang mit Metadaten und Berechtigungen.

Beispiel zeigen

Erstellt einen neuen Staff-Rang aus einer externen HR-Portal-Synchronisierung.

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

Aufrufer fordert seinen eigenen aufgeloesten Panel-Berechtigungssatz an.

Beispiel zeigen

Fordert die aufgeloesten Panel-Berechtigungen des Aufrufers beim UI-Oeffnen an.

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

Aufrufer fordert vom server das Standard-Sync-Payload (Dienst/Rechte/etc.) an.

Beispiel zeigen

Zwingt den Server, das Standard-Duty/Perms-Sync-Paket an den Aufrufer zu senden.

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

Aufrufer fordert seine aktuellen Admin-Dienst-Rangdaten an.

Beispiel zeigen

Fordert den aktuellen Admin-Duty-Rang des Aufrufers fuer ein eigenes HUD an.

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

Aufrufer fordert die Liste der admin-gespawnten Weltobjekte an.

Beispiel zeigen

Fordert die Liste der vom Admin gespawnten Weltobjekte fuer das Minimap-Overlay an.

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

12Agency-Anticheat

Ein Anticheat für FiveM, der deinen Server kennenlernt. Er prüft jeden Spieler serverseitig, dort wo sich ein Cheat nicht verstecken kann: Godmode, Superjump, Schadensmultiplikatoren, Teleports und verbotene Waffen werden aus dem synchronisierten Spielzustand gelesen. Querprüfungen fangen, was einzelne Werte übersehen: ein tödlicher Treffer, den das Opfer überlebt, ein Pistolen-Kill aus 500 Metern, Zielstatistiken und mehrere schwache Signale, die zusammen ein Muster ergeben. Der Weltschutz bricht gespawnte Panzer, Explosionen, Feuer und Partikelspam ab, bevor sie jemand sieht. Bans decken Identifier und Hardware-Tokens ab, sodass ein neuer Account auf demselben PC draußen bleibt, und ein Lockdown schließt den Server von selbst, wenn mehrere Cheater gleichzeitig angreifen. Eine frische Installation läuft 48 Stunden im Learning-Modus und bestraft niemanden. Das eigene Ingame-Panel (/acpanel) zeigt alles live und führt jede Aktion aus, auf jedem Server. Mit Agency Admin sind dessen Admins automatisch ausgenommen und dieselbe Seite steckt auch in diesem Panel; mit AgencyMod erreichen Bans auch deinen Discord. Keine Datenbank, kein Abo, 25 Sprachen, QBCore, Qbox, ESX oder Standalone.

Zur vollen Doku

Server-Exports

AllowTeleport(source: number, seconds?: number)

Rufe es direkt auf, bevor dein Script einen Spieler bewegt, dann zählt der Sprung nicht als Teleport. Standard 5 Sekunden.

SetExempt(source: number, seconds: number)

Nimmt einen Spieler für eine Weile von allen Prüfungen aus, zum Beispiel bei einem Event mit Godmode. 0 beendet es.

Flag(source: number, detail: string)

Deine eigene Erkennung. Zählt wie jeder andere Treffer, unter der Erkennung external.

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

Bannt einen Online-Spieler über Identifier und Hardware-Tokens. Dauer in Sekunden, 0 ist dauerhaft. Gibt die Ban-ID zurück.

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

Kickt einen Spieler und protokolliert es in Discord.

Unban(banId: string, by?: string)

Hebt einen Ban auf, zum Beispiel AC-7K3P9.

SetMode(mode: string)

Schaltet den Modus live um: learning, relaxed, balanced oder strict.

SetDetection(key: string, enabled: boolean)

Schaltet eine Erkennung live ein oder aus.

SetLockdown(on: boolean, by?: string)

Startet oder beendet einen Lockdown.

IsExempt(source: number)

Gibt zurück, ob ein Spieler von den Prüfungen ausgenommen ist.

IsKnownPlayer(source: number)

Gibt zurück, ob ein Spieler lange genug ohne Treffer hier gespielt hat, um als bekannt zu gelten.

GetStatus()

Gibt alles zurück, was das Panel zeigt: Modus, Ebenen, Wissen, heutige Zahlen, Serverlast und jede Erkennung mit ihrer Regel.

GetDetections(limit?: number)

Gibt die letzten Erkennungen zurück, neueste zuerst.

GetBans()

Gibt jeden aktiven Ban mit seinen Beweisen zurück.

GetPlayers()

Gibt die Online-Spieler mit Risikowert und offenen Strikes zurück, höchstes Risiko zuerst.

Ereignisse

Agency-Anticheat:detection

Wird bei jedem Treffer ausgelöst, mit Spieler, Erkennung, Detail, Aktion und Strikes.

Agency-Anticheat:banned

Wird nach jedem Ban ausgelöst, mit dem vollständigen Ban-Datensatz.

Agency-Anticheat:unbanned

Wird ausgelöst, nachdem ein Ban aufgehoben wurde.

Agency-Anticheat:lockdown

Wird ausgelöst, wenn ein Lockdown startet oder endet.

Agency-Anticheat:learned

Wird ausgelöst, wenn der Anticheat einen neuen Teleportpunkt deines Servers gelernt hat.

13Agency-Reports V2

Modernes Report-System mit Live-Chat pro Report und KI-gestützten Antworten.

Nutze es als "Support-Ticket"-Rückgrat für den ganzen Server. Deine Scripts können automatisch Reports öffnen wenn etwas schiefgeht (festgefahrene Fahrzeuge, duplizierte Items, fehlgeschlagene SQL-Saves).

Zur vollen Doku

Ereignisse

agency-reports:client:notify

Sendet eine "neuer Report"-Benachrichtigung an einen bestimmten Admin.

Beispiel zeigen

Server-Benachrichtigung, die die UI-Benachrichtigungseinstellung des Spielers beruecksichtigt.

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

Öffnet die Report-UI auf Spielerseite.

Beispiel zeigen

Oeffnet die Spieler-Report-UI mit Kategorien, offenen Reports und AI/Discord-Einstellungen.

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

Öffnet die Report-Liste auf Admin-Seite.

Beispiel zeigen

Oeffnet das Admin-Report-Dashboard mit dem vollstaendigen Report-Datensatz.

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

Teleportiert den aufrufenden Admin zu den angegebenen Koordinaten (fuer goto-Aktionen).

Beispiel zeigen

Teleportiert den Admin zu den angegebenen Koordinaten fuer Goto-Aktionen.

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

Heilt den Ped des aufrufenden Admins vollstaendig.

Beispiel zeigen

Heilt den Admin-Ped vollstaendig nach Bearbeitung eines Reports.

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

Reicht einen neuen Report außerhalb der UI ein.

Beispiel zeigen

Spieler reicht einen neuen Report mit Titel, Kategorie und Beschreibung ein.

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

Aufrufer fordert sein eigenes Report-Payload an; oeffnet optional die Spieler-UI bei Antwort.

Beispiel zeigen

Aufrufer fordert seine Report-Daten an, oeffnet optional die Spieler-UI in Antwort.

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

Admin fordert den vollstaendigen Reports-Datensatz an und oeffnet bei Berechtigung das Admin-Dashboard.

Beispiel zeigen

Admin fordert den vollstaendigen Report-Datensatz an und oeffnet das Dashboard wenn erlaubt.

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

Sendet eine Chat-Nachricht an einen offenen Report.

Beispiel zeigen

Sendet eine Chatnachricht in einem bestimmten Report-Thread fuer Admin oder Spieler.

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

14Agency-Doorlock

Abschließbare Türen mit Einrichtung im Spiel und Zugang pro Tür nach Job, Gang oder Spieler.

Für Housing-, Immobilien- oder Schlüssel-Scripts: einem Spieler einen Schlüssel für eine bestimmte Tür geben und wieder nehmen. Schlüssel werden in der Datenbank gespeichert und sofort übertragen, niemand braucht Admin-Rechte.

Zur vollen Doku

Client-Exports

ToggleNearestDoor()

Schließt die Tür auf oder zu, an der der Spieler steht. Der Server prüft den Zugang genau wie bei der Taste E.

Beispiel zeigen

Legt eine eigene Taste (L) an, die die Tür am Spieler auf- oder zuschließt. Der Zugang wird weiter auf dem Server geprüft.

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

Liefert die Nummer der Tür, an der der Spieler steht, oder nil.

Beispiel zeigen

Liest aus, an welcher Tür der Spieler steht, etwa um sie in deinem Script einem Haus zuzuordnen.

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

Liefert alle Türen als { id, label, locked, static, leaves, access }. Die PIN ist nie dabei.

Beispiel zeigen

Listet alle Türen mit Nummer und Zustand auf. Die PIN ist nie in den Daten enthalten.

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

Liefert die Position des ersten Türflügels als { x, y, z }, oder nil.

Beispiel zeigen

Setzt einen GPS-Wegpunkt zu einer Tür, etwa um einen Spieler zu seinem neuen Haus zu führen.

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

Server-Exports

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

Gibt einem Spieler Zugang zu einer Tür. Wird in der Datenbank gespeichert und sofort an alle Spieler übertragen. Liefert true, sonst false und einen Grund. true, "unchanged", wenn der Spieler schon Zugang hatte.

Beispiel zeigen

Ein Hausbesitzer gibt einem anderen Spieler einen Schlüssel. Dein Script prüft den Besitz, Agency-Doorlock speichert den Schlüssel und überträgt ihn sofort. Niemand bekommt Admin-Rechte.

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)

Nimmt den Zugang wieder weg. Wird sofort gespeichert und übertragen. Liefert true, sonst false und einen Grund. true, "unchanged", wenn es nichts zu entfernen gab.

Beispiel zeigen

Nimmt einen Schlüssel wieder weg, etwa wenn ein Mieter auszieht. Mit der citizenid klappt das auch, wenn der Spieler offline ist.

-- 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, wenn der Spieler auf der Spielerliste der Tür steht. Zugang über Job, Gang oder "everyone" zählt hier nicht.

Beispiel zeigen

Prüft, ob ein Spieler einen eigenen Schlüssel für diese Tür hat. Zugang über Job, Gang oder "everyone" zählt nicht.

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

Liefert eine Kopie der Spielerliste der Tür, oder nil, wenn es die Tür nicht gibt.

Beispiel zeigen

Listet alle Schlüsselinhaber einer Tür auf, etwa für ein Menü "Schlüssel verwalten". Liefert eine Kopie, Änderungen daran bewirken nichts.

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

false, solange die Türen nach einem Start noch aus der Datenbank laden, danach true.

Beispiel zeigen

Wartet nach einem Serverstart, bis die Türen geladen sind, bevor dein Script Schlüssel vergibt.

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)

Ereignisse

agency-doorlock:accessChanged

Wird auf dem Server ausgelöst, nachdem AddPlayerAccess oder RemovePlayerAccess eine Tür geändert hat. Argumente: doorId, identifier, granted (true / false). Mit AddEventHandler abhören.

Beispiel zeigen

Serverseitiges Protokoll jedes vergebenen oder entzogenen Schlüssels, etwa für einen Discord-Webhook.

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

Animiertes HUD mit Fahrzeug-Dashboard, Statusleisten, Tacho und Sicherheitsgurt-Integration.

Wenn du eine Custom-Economy oder ein Needs-System hast, steuer den HUD aus deinem eigenen Script mit diesen Settern, der HUD übernimmt Animation und Persistenz für dich.

Zur vollen Doku

Client-Exports

GetVehicleSettings()

Liefert die aktuelle Fahrzeugeinstellungs-Tabelle.

Beispiel zeigen

Liest die lokale Fahrzeug-HUD-Einstellungstabelle zur Pruefung oder Synchronisation.

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

Schaltet den Tacho zwischen 'mph' und 'kmh' um.

Beispiel zeigen

Stellt den Fahrzeug-Tacho auf Meilen pro Stunde um und speichert lokal.

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

Setzt den Wert der Hunger-Leiste (0-100).

Beispiel zeigen

Uebertraegt den aktuellen Hungerwert des Spielers ins HUD.

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

Setzt den Wert der Durst-Leiste (0-100).

Beispiel zeigen

Uebertraegt den aktuellen Durstwert des Spielers ins HUD.

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

Setzt den Wert der Stress-Leiste (0-100).

Beispiel zeigen

Aktualisiert die Stressanzeige im HUD aus einem eigenen Stress-System.

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

Setzt den angezeigten Bargeld-Stand.

Beispiel zeigen

Aktualisiert den im HUD angezeigten Bargeldbetrag.

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

Setzt den angezeigten Kontostand (für eigene Wirtschafts-Scripts).

Beispiel zeigen

Aktualisiert den im HUD angezeigten Kontostand.

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

Setzt das angezeigte Job-Label.

Beispiel zeigen

Setzt das angezeigte Job-Label, wenn der Spieler den Beruf wechselt.

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

Setzt den angezeigten Job-Rang/Grad.

Beispiel zeigen

Aktualisiert den neben dem Job-Label angezeigten Rang.

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

Liefert den Framework-String ("qb", "esx", "standalone"), den der HUD automatisch erkannt hat.

Beispiel zeigen

Liest den erkannten Framework-Schluessel fuer eigene HUD-Logik aus.

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

Ereignisse

Agency-HUD:client:applyVehicleSettingsPatch

Wendet einen partiellen Fahrzeug-Einstellungs-Patch auf den lokalen Fahrzeug-HUD an.

Beispiel zeigen

Wendet einen partiellen Fahrzeug-HUD-Einstellungspatch auf dem lokalen Client an.

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

Öffnet das HUD-Admin-Menü (erfordert Berechtigung).

Beispiel zeigen

Oeffnet die Admin-HUD-Menue-NUI beim empfangenden Client.

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

Prüft die Admin-Rechte des Aufrufers und öffnet bei Erfolg das Admin-Menü.

Beispiel zeigen

Fordert den Server auf, Adminrechte zu pruefen und das HUD-Admin-Menue zu oeffnen.

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

Nur-Admin-Speicherung globaler HUD-Einstellungen; sendet Sync-Broadcast.

Beispiel zeigen

Speichert eine neue globale HUD-Konfiguration (nur Admin) und sendet sie.

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

Gibt die aktuellen globalen Einstellungen an den anfragenden Client zurück.

Beispiel zeigen

Fordert beim Start der Ressource die aktuellen globalen HUD-Einstellungen an.

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

Gibt die aktuelle Serverzeit für die HUD-Uhr an den Aufrufer zurück.

Beispiel zeigen

Fragt die Serverzeit jede Minute ab, um die HUD-Zeit zu aktualisieren.

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

16Agency-Progressbar V2

Animierte Fortschrittsleiste mit Glas-UI, 4 Themes, abbrechbaren Aktionen und client/server Exports.

Nutze es überall wo du normalerweise "mache X für Y Sekunden" anzeigst. Ersetzt mehrere alte Progressbar-Ressourcen mit einem einheitlichen UI für den ganzen Server.

Zur vollen Doku

Client-Exports

StartProgress(data: table)

Startet eine Fortschrittsleiste mit einer vollständigen Options-Tabelle. Kehrt sofort zurück; Callbacks feuern bei Abschluss/Abbruch.

Beispiel zeigen

Startet einen 8-Sekunden-Lockpick-Fortschritt mit Animation und Finish-Callback.

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)

Stoppt die aktuell laufende Fortschrittsleiste. Übergib true, um als abgebrochen zu markieren.

Beispiel zeigen

Bricht den aktiven Fortschrittsbalken ab, wenn der Spieler X drueckt.

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

Liefert true, wenn aktuell eine Fortschrittsleiste angezeigt wird.

Beispiel zeigen

Verhindert eine neue Crafting-Aktion, solange ein Fortschrittsbalken laeuft.

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

Liefert den aktuellen Füllstand in Prozent (0-100).

Beispiel zeigen

Loest einen Minigame-Tick aus, sobald der Balken zu mehr als 75 Prozent voll ist.

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)

Wechselt das Theme zur Laufzeit: 'modern', 'neon', 'minimal' oder 'classic'.

Beispiel zeigen

Aendert das Aussehen des aktiven Fortschrittsbalkens auf das moderne Theme.

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

Ändert die Position: 'top', 'bottom', 'center'.

Beispiel zeigen

Verschiebt den aktiven Fortschrittsbalken in die untere Mitte des Bildschirms.

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

Spielt die Nachlade-Sequenz im ESX-Stil ab.

Beispiel zeigen

Startet einen serverseitig validierten Nachladevorgang mit einer 9mm-Box.

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

Spielt die Ess-/Trink-Animation mit Fortschrittsleiste ab.

Beispiel zeigen

Spielt die Trink-Animation ab und erhoeht den Durstwert bei Wassernutzung.

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

Server-Exports

StartProgressForPlayer(playerId: number, data: table)

Löst eine Fortschrittsleiste auf einem bestimmten Client vom Server aus.

Beispiel zeigen

Startet einen 5 Sekunden Hebe-Fortschritt fuer den anfordernden Spieler.

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

Bricht die Fortschrittsleiste eines bestimmten Spielers per Fernzugriff ab.

Beispiel zeigen

Bricht die aktive Fortschrittsleiste eines Zielspielers vom Server aus ab.

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

Sendet eine Fortschrittsleiste an alle verbundenen Clients.

Beispiel zeigen

Sendet einen 30 Sekunden Sturmwarnung-Fortschritt an jeden Spieler.

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

Bricht die Fortschrittsleiste jedes Spielers ab (z. B. Rundenende).

Beispiel zeigen

Stoppt die globale Sturmwarnungs-Fortschrittsleiste bei allen Spielern.

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

Ereignisse

Agency:Progressbar:LoadSettings

Lädt spielerspezifische UI-Einstellungen (Position, Farbe, Skalierung, Stil) aus der DB in den Client.

Beispiel zeigen

Laedt die gespeicherten Fortschrittsbalken-Einstellungen des Spielers beim Spawn.

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

Startet die Fortschrittsanzeige auf dem empfangenden Client mit den übergebenen Daten.

Beispiel zeigen

Startet einen abbrechbaren 12-Sekunden-Motorreparatur-Fortschritt.

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

Stoppt die aktive Fortschrittsanzeige mit einem Abschluss-Flag.

Beispiel zeigen

Bricht den aktiven Fortschrittsbalken ab, wenn der Spieler gefesselt wird.

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

Inventory-Bridge zum Verzehr eines Essens-Items (Animation + abgesicherte Server-Anwendung).

Beispiel zeigen

Loest die Inventar-Food-Bruecke aus, um ein Sandwich zu verzehren.

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

Inventory-Bridge zum Verzehr eines Getränke-Items (Animation + abgesicherte Server-Anwendung).

Beispiel zeigen

Loest die Inventar-Trink-Bruecke aus, um eine Tasse Kaffee zu konsumieren.

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

Validiert und speichert die Progress-Bar-UI-Einstellungen des Spielers in der DB.

Beispiel zeigen

Speichert die UI-Vorlieben des Spielers fuer den Fortschrittsbalken in der DB.

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

Serverseitiger Trigger zum Starten einer Fortschrittsanzeige auf einem Ziel (oder selbst).

Beispiel zeigen

Serverseitiger Trigger, um eine 6-Sekunden-Beladebar bei einem Ziel zu starten.

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

Serverseitiger Trigger zum Stoppen einer Fortschrittsanzeige auf einem Ziel (oder selbst).

Beispiel zeigen

Serverseitiger Trigger, um den Balken eines Ziels mit Cancel-Status zu stoppen.

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

Validiert Munition/Waffe/Item, bevor dem anfragenden Spieler ein Nachladen gewährt wird.

Beispiel zeigen

Bittet den Server, Munition zu pruefen und eine Pistolen-Nachladung zu gewaehren.

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

Validiert das Inventar, entfernt ein Item und wendet Hunger-/Durst-Zuwächse an.

Beispiel zeigen

Bittet den Server, das Lebensmittel zu entfernen und Hungerwerte anzupassen.

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

17Agency-Notify V2

Notification-System mit V1/V2-Styles, AgencyAI Smart-Priority, Spam-Schutz und Datenbank-Persistenz.

Ersetze jede andere Notify-Ressource auf deinem Server (qb-notify, esx_notify, mythic_notify, okok-notify, etc.) mit einem einheitlichen Look. Das AgencyAI-Prioritätssystem rate-limitet spam-Notifications automatisch.

Zur vollen Doku

Client-Exports

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

Zeigt eine Benachrichtigung. Akzeptiert { type, title, text, duration, icon, color }.

Beispiel zeigen

Sendet eine 6-sekuendige Erfolgsbenachrichtigung mit einem Heist-Ziel.

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

Ereignisse

Agency:Notify:Send

Wie der Export, ermoglicht das alte Trigger-basierte Pattern.

Beispiel zeigen

Legacy v1 Client-Event, das die gleiche Payload wie der Export anzeigt.

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

Wendet spielerspezifisch gespeicherte UI-Einstellungen (Position, Farbe, Skalierung, Stil) vom Server an.

Beispiel zeigen

Laedt die gespeicherten Notify-UI-Einstellungen je Spieler beim Spawn.

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

Validiert und speichert die Notify-Einstellungen des Spielers (Position, Akzentfarbe, Skalierung, Stil).

Beispiel zeigen

Speichert Notify-Position, Akzent und Skalierung des Spielers in der DB.

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

18Agency-Seatbelt V2

Sicherheitsgurt mit Auswurfphysik, 3D-Sounds, Multi-Insassen-Support und HUD-Integration.

Plug den Status in dein eigenes HUD, oder force-aktiviere es am Anfang einer Polizei-Verfolgung / Heist-Escape. Die Force-Enable/Disable-Exports sind super für RP-Momente.

Zur vollen Doku

Client-Exports

isSeatbeltOn()

Liefert true, wenn der Spieler aktuell den Sicherheitsgurt anhat.

Beispiel zeigen

Deaktiviert das Aussteigen, solange der Sicherheitsgurt angelegt ist.

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

Erzwingt den Sicherheitsgurt (z.B. bei Polizei-Festnahme).

Beispiel zeigen

Schnallt den Sicherheitsgurt des lokalen Spielers mit HUD- und Sound-Feedback an.

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

Erzwingt das Loesen des Gurts (Cutscenes, RP-Szenarien).

Beispiel zeigen

Loest den Sicherheitsgurt des lokalen Spielers beim Aussteigen.

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

Schaltet den Sicherheitsgurt um (was die Standardtastenbelegung macht).

Beispiel zeigen

Schaltet den Sicherheitsgurt des lokalen Spielers per Tastendruck um.

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

Gibt true zurück, solange der Gurt vom Auto angelegt wurde und nicht vom Spieler.

autoBuckle(on: boolean)

Legt den Gurt als Automatikgurt an oder löst ihn, so wie es ein selbstfahrendes Auto macht.

getSeatbeltState()

Gibt eine Tabelle mit dem Gurtzustand zurück, ob er automatisch ist, dem Sitz und dem Fahrzeug.

setSeatbeltEnabled(on: boolean)

Schaltet den gesamten Gurt für diesen Spieler aus oder ein, für Zwischensequenzen oder Admin-Situationen.

isPlayerSeatbeltOn(serverId: number)

Gibt den Gurtzustand eines anderen Spielers zurück, gelesen aus der replizierten State Bag.

bucklesItselfVehicle(vehicle: number)

Gibt zurück, ob dieses Fahrzeug seine Insassen selbst anschnallt, laut Modellliste oder State Bag agAuto.

openSettings()

Öffnet die Einstellungskarte.

closeSettings()

Schließt die Einstellungskarte.

isSettingsOpen()

Gibt zurück, ob die Einstellungskarte offen ist.

Server-Exports

isSeatbeltOn(source: number)

Gibt auf dem Server den Gurtzustand eines Spielers zurück, gelesen aus der replizierten State Bag.

getBuckledPlayers()

Gibt die Server-IDs aller Spieler zurück, die gerade angeschnallt sind.

setSeatbelt(source: number, on: boolean)

Legt vom Server aus den Gurt eines Spielers an oder löst ihn.

Ereignisse

Agency-HUD:seatbeltStateChanged

Wird bei jeder Änderung mit dem neuen Zustand ausgelöst. Agency-HUD hört darauf, jede andere Resource darf das auch.

19Agency-Elevator

Realistisches Aufzugssystem mit Liquid Glass UI und Konfigurator.

Perfekt in Apartment-/Housing-Scripts, Polizei-HQ, Krankenhaus oder jedem multi-floor Interior. Nutze den Konfigurator um Aufzüge visuell zu platzieren ohne Config-Dateien anzufassen.

Zur vollen Doku

Ereignisse

Agency-Elevator:server:requestTravel

Server-validierte Anfrage fuer Stockwerksfahrt.

Beispiel zeigen

Fordert den Server auf, den Zugang zu pruefen und in Etage 3 zu fahren.

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

Bestätigt die Ankunft des Clients und sendet die Benachrichtigung 'Etage erreicht'.

Beispiel zeigen

Teilt dem Server mit, dass Etage 3 erreicht wurde, um die Ankunft zu melden.

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

Synchronisiert die geladene Aufzugsliste aus der Datenbank zum anfragenden Client.

Beispiel zeigen

Fordert die vollstaendige Aufzugsliste beim Initialisieren des Clients an.

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

Berechtigungsgeprüfter Upsert eines Aufzugs (id/label/floors) in MySQL.

Beispiel zeigen

Admin-Upsert eines Aufzugs mit einem einzigen Lobby-Etageneintrag.

TriggerServerEvent('Agency-Elevator:server:saveElevator', { id = 'lspd-tower-1', label = 'LSPD HQ', floors = { { name = 'Lobby', coords = vector3(441.0, -981.5, 30.7) } } })
Agency-Elevator:server:loadElevator

Spawnt/laedt einen gespeicherten Aufzug aus der Datenbank.

Beispiel zeigen

Laedt die Daten eines einzelnen Aufzugs zum Bearbeiten in die Konfigurator-NUI.

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

Speichert UI-Einstellungen (Position/Skalierung/Akzentfarbe) in MySQL und synchronisiert alle Clients neu.

Beispiel zeigen

Speichert UI-Position, Akzentfarbe und Skalierung und synchronisiert alle Clients.

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

Startet eine Aufzugsfahrt-Cutscene fuer den Spieler.

Beispiel zeigen

Spielt Fade und Animation und teleportiert den Ped in Etage 2 der Garage.

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

Sendet UI-Einstellungen (Akzentfarbe/Skalierung/Position) an die NUI.

Beispiel zeigen

Wendet Akzent, Skalierung und Position der Aufzug-NUI auf dem Client an.

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

Oeffnet den In-Game-Aufzug-Konfigurator (nur Admin).

Beispiel zeigen

Oeffnet das Admin-Konfigurator-NUI mit der aktuellen Aufzugsliste.

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

Aktualisiert den geöffneten Konfigurator nach Speichern/Löschen, ohne ihn zu schließen.

Beispiel zeigen

Aktualisiert das geoeffnete Konfigurator-NUI nach dem Speichern, ohne es zu schliessen.

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

20Agency-Multicharacter

Eine filmische Charakterauswahl und -erstellung für FiveM. Jeder Charakter steht in einer Szene, die zu seinem Job passt: Polizisten am Streifenwagen, Mediziner am Krankenwagen, Mechaniker in der Werkstatt, gekleidet im gespeicherten Outfit, mit eigenem Porträtbild, Job, Gang, Bargeld, Bankkonto, Telefonnummer, Spielzeit und letztem Aufenthaltsort auf einer übersichtlichen Karte. Für neue Charaktere gelten Namens- und Altersregeln, eine durchsuchbare Nationalitätenliste sowie Körpergröße, danach öffnet sich das Clothing Script des Servers von selbst. Slots können über Tebex verkauft werden: Käufer schalten sie mit ihrer Transaktions-ID frei. Spieler wechseln Charaktere mit /logout. Framework, Clothing Script, Inventar, Spawn Selector und Ladebildschirm werden automatisch erkannt; vorhandene Charaktere, Spielzeiten und gekaufte Slots aus dem alten Multicharacter werden übernommen. QBCore, Qbox, ESX oder komplett standalone mit eigenem Charakterspeicher, 25 Sprachen, die Farbe passt sich dem Server-Logo an.

Zur vollen Doku

Client-Exports

IsOpen()

True while the character selection is open.

OpenSelection()

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

Server-Exports

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.

Ereignisse

agency-multicharacter:server:loaded

A character was loaded or created (source, charid, isNew).

agency-multicharacter:server:deleted

A character was deleted (source, charid).

agency:selection

true while a selection screen is open, HUDs can hide themselves.

21Agency-Spawn

Ein Spawn Selector mit Live-Kamera für FiveM. Während der Spieler stöbert, fliegt die Kamera über Los Santos zu jedem Ort; die Auswahl bringt ihn direkt aus dem Himmel zu seinem Charakter herab. Er bietet den letzten Standort, öffentliche Spawns aus einer kommentierten Liste, Job- und Gang-Spawns, die nur berechtigte Charaktere sehen, jedes Agency Housing Haus, das der Charakter besitzt oder für das er Schlüssel hat, qb-apartments und einen festen Ankunftspunkt für neue Charaktere. Spieler können Auto-Spawn am letzten Standort aktivieren. Er reagiert auf die Events von qb-spawn und Apartments, sodass die meisten Multicharacter-Scripts ihn ohne Änderungen öffnen, und arbeitet Hand in Hand mit Agency Multicharacter. QBCore, Qbox, ESX oder standalone, 25 Sprachen, die Farbe passt sich dem Server-Logo an.

Zur vollen Doku

Client-Exports

Open(options)

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

IsOpen()

True while the selector is open.

Ereignisse

agency-spawn:client:spawned

The character landed (id, kind).

agency-spawn:server:spawned

A player spawned (source, id, kind).

qb-spawn:client:setupSpawns / openUI

Answered when qb-spawn is not running, so other multicharacters open Agency Spawn.

22Agency-Housing

Datenbankgestütztes Housing-System für FiveM. Erkennt QBCore, QBox und ESX selbstständig oder läuft komplett ohne Framework. Häuser werden im Spiel über einen Schritt-für-Schritt-Creator erstellt statt über eine Config-Datei: Interiors, Shells, MLOs und ganze Apartmentgebäude mit bis zu 40 Wohnungen hinter einer Haustür, jedes Grundstück mit einer Grundstücksgrenze, die aus der Luft markiert wird. Spieler kaufen Häuser, verkaufen sie untereinander, mieten und vermieten, durchstöbern alle Angebote im Markt und zahlen Miete im Voraus. Geld, das eingeht, während sie offline sind, wird beim nächsten Login ausgezahlt. Schlüssel, MLO-Türverriegelung mit Auto-Lock und Türklingel, Einrichtung aus einem Katalog mit über 1.300 Props, Sicherheitskameras und der eingebaute Kleiderschrank sind enthalten. Eine Housing-App bringt Schlosssteuerung und Live-Kameras auf Agency Phone, Agency Pad, lb-phone und qs-smartphone-pro. Inventar-, Kleidungs- und Garagen-Scripts werden automatisch gefunden, die Datenbank aktualisiert sich selbst, und alles wird in MySQL gespeichert.

Zur vollen Doku

Client-Exports

IsInsideHouse()

Gibt true zurück, solange der Spieler in einem Haus ist.

GetCurrentHouse()

Das Haus, in dem der Spieler gerade ist, oder nil.

LeaveHouse()

Bringt den Spieler durch den Eingang wieder nach draußen.

GetHouseAtPoint(coords)

Das erste Haus, zu dessen Grundstücksgrenze dieser Boden gehört.

GetHousesAtPoint(coords)

Alle Häuser, zu denen dieser Boden gehört, für überlappende Grundstücke wie ein Wohnblock.

GetCurrentProperty()

Das Grundstück, auf dem der Spieler gerade steht, oder nil.

IsOnProperty(houseId)

Ob der Spieler auf dem Grundstück dieses Hauses steht.

GetHouseZone(houseId)

Die gespeicherte Grenzform eines Hauses.

GetAccent()

Die Akzentfarbe, die der Spieler unter Housing > Einstellungen gewählt hat.

GetAppUrl(theme)

Die Adresse der Housing-App-Seite, um die App auf jedem anderen Handy hinzuzufügen. Übergib 'light' oder 'dark', um ein Design zu erzwingen.

GetAppData()

Alles, was die Housing-App anzeigt: die Häuser, die der Spieler besitzt, mietet oder für die er einen Schlüssel hat.

AppAction(action, houseId)

Führt eine App-Aktion für ein Haus aus: 'waypoint', 'lock' oder 'cams'.

Server-Exports

GetHouses()

Alle Häuser auf dem Server, nach id geordnet.

GetPlayerHouses(source)

Die Häuser, die dieser Spieler besitzt.

HasHouseAccess(source, houseId)

Ob dieser Spieler das Haus besitzt oder einen Schlüssel dafür hat.

GetHouseAtPoint(coords)

Das erste Haus, zu dessen Grundstücksgrenze dieser Boden gehört.

GetHousesAtPoint(coords)

Alle Häuser, zu denen dieser Boden gehört, für überlappende Grundstücke.

GetHouseZone(houseId)

Die gespeicherte Grenzform eines Hauses.

Ereignisse

agency-housing:client:enteredZone

Wird mit (houseId, house) ausgelöst, wenn der Spieler ein Grundstück betritt, damit ein Job- oder Einbruchs-Script nicht ständig abfragen muss.

agency-housing:client:leftZone

Wird mit (houseId, house) ausgelöst, wenn der Spieler ein Grundstück verlässt.

agency-housing:garage:open

Wird mit (houseId, houseName) ausgelöst, wenn eine Hausgarage benutzt wird und Config.Garage.script 'event' ist, damit dein eigenes Garagen-Script sie öffnen kann.

23Agency-Banking

Eine komplette Bank für FiveM, die auf QBCore, Qbox, ESX oder ganz ohne Framework läuft. Spieler bekommen eine Wallet mit Bankguthaben und Bargeld, Bankkarten in vier Designs, Überweisungen per ID oder an Spieler in der Nähe, Festgeld mit Zinsen, die allein der Server festlegt, Aktien- und Kryptohandel, eine Geldautomaten-PIN und eine vollständige Umsatzübersicht. Ohne Framework führt die Bank eigene Konten, und andere Resources nutzen sie über Server-Exports als Geldsystem. Dazu zwei Menü-Designs, 13 Sprachen, Marker oder qb-target / ox_target, ein Regler für die Anzeigegröße für jeden Spieler, Tabellen, die sich beim ersten Start selbst anlegen, und die kostenlose Agency-Companion-App für Kontostand, Überweisungen, Festgeld und Karten unterwegs.

Zur vollen Doku

Client-Exports

OpenBank()

Öffnet die Bank für den lokalen Spieler, egal wo er steht.

OpenATM()

Öffnet für den lokalen Spieler den PIN-Bildschirm des Geldautomaten. Der Spieler muss vorher in einer Bank eine PIN eingerichtet haben.

Server-Exports

GetBankBalance(source)

Gibt das Bankguthaben des Spielers zurück, auf jedem Framework und standalone.

GetCashBalance(source)

Gibt das Bargeld des Spielers zurück.

AddBankMoney(source, amount, reason)

Schreibt dem Bankguthaben Geld gut. Gibt bei Erfolg true zurück, eine offene Bank aktualisiert sich selbst.

RemoveBankMoney(source, amount, reason)

Bucht Geld vom Bankguthaben ab. Gibt false zurück, wenn das Guthaben nicht reicht, dann wird nichts abgebucht.

AddCashMoney(source, amount, reason)

Gibt Bargeld dazu. Gibt bei Erfolg true zurück.

RemoveCashMoney(source, amount, reason)

Nimmt Bargeld weg. Gibt false zurück, wenn nicht genug da ist, dann wird nichts genommen.

AddTransaction(identifier, type, amount, reason)

Schreibt einen Eintrag in die Umsatzübersicht eines Spielers, anhand des Identifiers (citizenid bei QBCore und Qbox, identifier bei ESX, Lizenz im Standalone-Betrieb).

GetFramework()

Gibt das erkannte Framework zurück: qbcore, esx oder standalone.

Ereignisse

agency_banking:client:OpenBank

Vom Server auslösen, um die Bank für diesen Spieler zu öffnen.

agency_banking:client:MoneyChanged

Vom Server auslösen, nachdem ein anderes Script das Geld eines Spielers geändert hat, dann aktualisiert sich eine offene Bank.

Kommst du nach dieser Seite nicht weiter? Dann übernimmt unser Support.

Kommst du nach dieser Seite nicht weiter? Dann übernimmt unser Support.