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).
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:notifyZeigt 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:usePhoneItemLö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:openAppFordert 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:newMailNotifyBenachrichtigt 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:requestPhoneDataFordert 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:cancelCallBricht 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:sendMessageSendet 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:saveSettingSpeichert 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:airdropPayFü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:buyDataPlanKauft 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:createErstellt 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.
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:notifyZeigt 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:openAppAuf 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:newMailNotifyBenachrichtigt 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:hourlyPaycheckBenachrichtigt 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:requestPadDataFordert 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:sendMessageSendet 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:airdropPayFü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:buyDataPlanKauft 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:createErstellt 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:createErstellt 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:adminCreateAdmin 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:startMissionStartet 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:applyToListingSendet 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:createMechanicInvoiceErstellt 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:sendMechanicInvoicePaySendet 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:mdtCreateInvoiceMDT 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.
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.
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:rideStartedEine Fahrt hat begonnen. Enthält das Ziel.
agency-zero:client:rideEndedDie Fahrt ist vorbei, abgebrochen oder angekommen.
agency-zero:client:arrivedDas 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.
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
endServer-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)
endGetAd(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) endIsAdmin(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
endEreignisse
agency-lifeinvader:adShownLokales 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:adBroadcastLokales 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:openMenuAus 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:openRecentMenuAus 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.
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
endServer-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
endSetReputation(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))
endAddCredit(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')
endStartFlashSale(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:dealWird 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:dealerMovedWird 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:flashSaleWird 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.
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
endIsWorking()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
endGetLevel()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
endGetProgress(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:minedWird 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:soldWird 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:contractWird 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.
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
endGetVehicleCondition(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)))
endOpenMenu()Ö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
endServer-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)) endGiveKit(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
endGetKits()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)
enduseKit(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:repairedWird 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:repairedWird 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:damageLevelWird 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.
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
endGetKeys()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)
endToggleLock(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
enduseLockpick()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
endSetOwner(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)
endSetVehicleLocked(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
endGetFramework()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
endEreignisse
Agency:Keys:GiveServerFordert 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:AcquireVehicleKeysDas 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:SetOwnerClient-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:AddKeysDas 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:toggleEngineWird 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.
Ereignisse
agency-vending:notifyAllgemeiner 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:startAgencyPayStartet 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:buyMachineResultErgebnis 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:machineCreatedBroadcast, 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:openManagementVerifiedServer-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:openOwnedListOeffnet 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:spawnMachineCreatedAdmin-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:spawnMachineDeletedAdmin-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:openSpawnerUIOeffnet 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:buyMachineSpieler 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:requestOwnedListAufrufer 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:requestMachinesAufrufer 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:requestManagementServer-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:requestSpawnedMachinesAufrufer 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:adminSpawnMachineAdmin 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:adminDeleteSpawnedAdmin 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.
Ereignisse
agency-admin:client:refreshStaffRanksLoest 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))
endagency-admin:client:freezeTimeFriert 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:dashboardValueSendet 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:teleportToCoordsTeleportiert 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:announceZeigt 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:notifySendet 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:freezeFriert 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:healStellt 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:reviveBelebt 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:teleportTeleportiert 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:openToolsMenuServer-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:closeMenuServer-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:openClothingMenuServer-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:requestPlayersFordert 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:requestPanelPermissionsFordert 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:requestStaffRanksFordert 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:createRankErstellt 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:requestMyPermissionsAufrufer 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:requestSyncAufrufer 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:requestDutyRankAufrufer 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:requestSpawnedObjectsAufrufer 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.
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:detectionWird bei jedem Treffer ausgelöst, mit Spieler, Erkennung, Detail, Aktion und Strikes.
Agency-Anticheat:bannedWird nach jedem Ban ausgelöst, mit dem vollständigen Ban-Datensatz.
Agency-Anticheat:unbannedWird ausgelöst, nachdem ein Ban aufgehoben wurde.
Agency-Anticheat:lockdownWird ausgelöst, wenn ein Lockdown startet oder endet.
Agency-Anticheat:learnedWird 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).
Ereignisse
agency-reports:client:notifySendet 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:teleportTeleportiert 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:healSelfHeilt 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:submitReportReicht 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:requestPlayerDataAufrufer 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:requestAdminDataAdmin 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:sendChatMessageSendet 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.
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)
endGetAllDoors()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'))
endGetDoorCoords(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)
endServer-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)
endGetPlayerAccess(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)
endIsReady()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:accessChangedWird 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.
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')
endEreignisse
Agency-HUD:client:applyVehicleSettingsPatchWendet 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:checkAdminPermissionPrü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:saveGlobalSettingsNur-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:requestGlobalSettingsGibt 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:requestTimeGibt 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.
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)
endIsProgressActive()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:LoadSettingsLä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:startStartet 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:stopStoppt 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:useFoodInventory-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:useDrinkInventory-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:SaveSettingsValidiert 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:startServerseitiger 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:stopServerseitiger 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:requestValidiert 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:applyValidiert 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.
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:SendWie 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:LoadSettingsWendet 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:SaveSettingsValidiert 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.
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)
endenableSeatbelt()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:seatbeltStateChangedWird 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.
Ereignisse
Agency-Elevator:server:requestTravelServer-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:travelCompleteBestä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:requestElevatorsSynchronisiert 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:saveElevatorBerechtigungsgeprü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:loadElevatorSpawnt/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:saveSettingsSpeichert 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:startTravelStartet 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:applySettingsSendet 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:openConfiguratorOeffnet 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:refreshConfiguratorAktualisiert 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.
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:loadedA character was loaded or created (source, charid, isNew).
agency-multicharacter:server:deletedA character was deleted (source, charid).
agency:selectiontrue while a selection screen is open, HUDs can hide themselves.
21Agency-Spawn
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.
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:spawnedThe character landed (id, kind).
agency-spawn:server:spawnedA player spawned (source, id, kind).
qb-spawn:client:setupSpawns / openUIAnswered when qb-spawn is not running, so other multicharacters open Agency Spawn.
22Agency-Housing
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.
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:enteredZoneWird 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:leftZoneWird mit (houseId, house) ausgelöst, wenn der Spieler ein Grundstück verlässt.
agency-housing:garage:openWird 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.
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:OpenBankVom Server auslösen, um die Bank für diesen Spieler zu öffnen.
agency_banking:client:MoneyChangedVom 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.