QBESXStandalone
Agency-Watch Configuration
A real smartwatch for FiveM, not a HUD. AgencyOS 26.5 on the wrist: six watch faces, seven cases, activity rings.
v26.5Free6 Pages

01Configuration
Quick Installation · config.lua · Agency-Watch
-- ╔══════════════════════════════════════════════════════════════╗
-- ║ A G E N C Y W A T C H ║
-- ║ AgencyOS 26.5 ║
-- ║ Kostenlos von Agency Scripts · discord.gg/RTax3aBMUs ║
-- ║ shop.agencyg.de ║
-- ╠══════════════════════════════════════════════════════════════╣
-- ║ Alles hier ist ohne Programmierkenntnisse anpassbar. ║
-- ║ Abschnitte: ALLGEMEIN · STEUERUNG · GEGENSTAND · ANZEIGE · ║
-- ║ THEME · SPERRE · ZIFFERBLAETTER · APPS · ║
-- ║ PHONE · PRO · TEXTE ║
-- ╚══════════════════════════════════════════════════════════════╝
Config = {}
-- ═══════════════════════════════════════════════════════════════
-- 1 ALLGEMEIN
-- ═══════════════════════════════════════════════════════════════
Config.Framework = 'auto' -- 'auto' | 'qb' | 'esx' | 'standalone'
Config.Locale = 'en' -- Voreinstellung. Alle Codes siehe SprachListe in shared/sprachen.lua
Config.Debug = false -- Zusatzmeldungen in der Konsole
-- ═══════════════════════════════════════════════════════════════
-- 2 STEUERUNG
-- Die Uhr ist nur auf Tastendruck da, genau wie das Agency Phone.
-- ═══════════════════════════════════════════════════════════════
Config.OpenKey = 'Z' -- Voreingestellte Taste (im Spiel umbelegbar)
Config.OpenCommand = 'watch' -- /watch oeffnet und schliesst die Uhr
Config.ToggleMiniCmd = 'watchmini' -- /watchmini schaltet die kleine Dauer-Anzeige
Config.CloseOnEscape = true -- ESC schliesst die Uhr
Config.OpenSound = true -- Ton beim Oeffnen und Schliessen
-- Bedienelemente am Gehaeuse:
-- Krone (rechts oben) = App-Liste, Mausrad darauf = blaettern
-- Seitenknopf (darunter) = Kontrollzentrum
-- Aktionstaste (orange, links) = frei belegbar, siehe unten
--
-- Auf der Aktionstaste liegt IMMER etwas. Eine Taste, die nichts tut, ist
-- schlimmer als gar keine - der Spieler weiss dann nicht, ob sie kaputt ist
-- oder er sie falsch bedient. Steht hier ein unbekannter Name, faellt die
-- Uhr auf die Taschenlampe zurueck.
--
-- Die Beschriftungen stehen hier auf Englisch, weil sie damit uebersetzt
-- werden: solange der englische Standard hier steht, nimmt die Uhr den Text
-- aus shared/sprachen.lua in der eingestellten Sprache. Wer hier etwas
-- anderes eintraegt, behaelt genau seinen Text, in jeder Sprache. Dieselbe
-- Regel gilt fuer Config.Apps, Config.Themes und Config.Komplikationen.
Config.ActionButton = 'lampe'
Config.ActionPresets = {
lampe = { label = 'Flashlight', icon = 'lampe', kind = 'builtin', value = 'lampe' },
wegpunkt = { label = 'Clear waypoint', icon = 'pin', kind = 'builtin', value = 'wegpunkt' },
mini = { label = 'Mini display', icon = 'raster', kind = 'builtin', value = 'mini' },
kz = { label = 'Control Centre', icon = 'regler', kind = 'builtin', value = 'kz' },
pay = { label = 'Agency Pay', icon = 'karte', kind = 'builtin', value = 'pay' },
-- Beispiele fuer Server-Betreiber (auskommentiert): eigene Befehle und Events
-- motor = { label = 'Motor an/aus', icon = 'blitz', kind = 'command', value = 'engine' },
-- winken = { label = 'Winken', icon = 'hand', kind = 'command', value = 'e wave' },
-- eigen = { label = 'Eigenes Event', icon = 'blitz', kind = 'event', value = 'mein-script:client:aktion' },
}
-- Taschenlampe. Sie leuchtet zweifach: das Zifferblatt wird zur weissen
-- Flaeche - so hat es eine Uhr am Handgelenk an sich - und zusaetzlich faellt
-- ein Kegel in die Welt, sonst saehe man im Dunkeln trotzdem nichts.
Config.Lampe = {
-- Reichweite und Helligkeit des Kegels
reichweite = 28.0,
staerke = 6.0,
-- Ohne Uhr in der Hand aus: laeuft die Lampe weiter, waehrend die Uhr
-- eingeklappt ist? true = ja, sie bleibt an bis zum naechsten Druck.
weiterAusserhalb = true,
-- Verfuegbare Leuchtarten. Durchgeschaltet wird auf der Uhr.
arten = { 'weiss', 'blinken', 'rot' },
}
-- ═══════════════════════════════════════════════════════════════
-- 3 GEGENSTAND
-- Ab Werk muss eine Uhr im Inventar liegen - irgendeine. Damit laeuft
-- das Script auf jedem Server sofort, ohne dass jemand erst ein neues
-- Item anlegen muss. Wer ein eigenes Item will, stellt auf 'exact' um.
-- ═══════════════════════════════════════════════════════════════
Config.RequireItem = true -- false = die Uhr geht immer auf
-- 'any' = irgendeine Uhr aus Config.WatchItems reicht (Voreinstellung)
-- 'exact' = nur Config.WatchItem wird akzeptiert
Config.ItemMode = 'any'
-- Bekannte Uhr-Gegenstaende. Der erste, den der Spieler dabei hat, oeffnet
-- die Uhr. Eigene Namen einfach ergaenzen.
Config.WatchItems = {
'rolex', -- QBCore-Standard, heisst im Spiel "Goldene Uhr"
'watch',
'smartwatch',
'agency_watch',
'armbanduhr',
'goldwatch',
'silverwatch',
'diamond_watch',
}
Config.WatchItem = 'smartwatch' -- gilt nur bei Config.ItemMode = 'exact'
Config.Inventory = 'auto' -- 'auto' | 'ox' | 'qb' | 'none'
Config.RemoveOnDeath = false -- Uhr nach dem Tod gesperrt bis zum Wiederbeleben
-- ═══════════════════════════════════════════════════════════════
-- 4 ANZEIGE
-- Position und Groesse sind zusaetzlich in der Uhr selbst einstellbar.
-- ═══════════════════════════════════════════════════════════════
Config.AlwaysOn = false -- false = nur auf Tastendruck
-- Die kleine Dauer-Anzeige waechst mit der Uhr mit. Wer sie unabhaengig
-- kleiner oder groesser will, dreht hier: 1.0 = genauso gross wie die Uhr,
-- 0.7 = deutlich kleiner, 1.3 = groesser.
Config.MiniScale = 1.0
-- Wo genau die kleine Anzeige sitzt. Sie steht am selben Bildrand wie in
-- Config.Position gewaehlt, aber mit eigenem Abstand - dort sitzt auf den
-- meisten Servern das HUD, und zwei Anzeigen uebereinander verdecken sich.
-- hoch = Abstand zum oberen bzw. unteren Rand, in Prozent der Bildhoehe
-- seite = Abstand zum linken bzw. rechten Rand, in Prozent der Bildbreite
-- Ab Werk hoch genug, um ueber einem Tacho am unteren Rand zu bleiben.
Config.MiniAbstand = { hoch = 19.0, seite = 2.4 }
Config.Position = 'bottom-right' -- bottom-left | bottom-right | top-left | top-right
Config.Size = 1.5 -- Groesse, erlaubt sind 0.6 bis 2.0
Config.Appearance = 'dark' -- 'dark' | 'light'
Config.Use24h = true
Config.DefaultFace = 'raster' -- siehe Abschnitt 7
Config.UpdateInterval = 1000 -- Millisekunden zwischen Aktualisierungen
Config.CountSteps = true -- eigener Schrittzaehler
Config.ShowSpeed = true -- Tachoanzeige im Fahrzeug
Config.HideInPauseMenu = true
-- ═══════════════════════════════════════════════════════════════
-- PRO-FASSUNG UND WERBUNG
-- Ohne Agency Phone: vollstaendige kostenlose Uhr mit dezentem Hinweis.
-- Mit erkanntem Agency Phone: Pro-Fassung, keine Werbung mehr.
-- ═══════════════════════════════════════════════════════════════
Config.ShowFreeBranding = true -- Hinweis nur in der kostenlosen Fassung
-- ═══════════════════════════════════════════════════════════════
-- 5 THEME — Metall-Voreinstellungen
-- ═══════════════════════════════════════════════════════════════
Config.Theme = 'titan'
Config.SplitFaceColor = '#00d4ff' -- Akzentflaeche im Zifferblatt "Puls"
-- Grundfarben des Agency-Erscheinungsbilds. Werden an die Oberflaeche
-- durchgereicht und von den Benachrichtigungen der Uhr genutzt.
Config.AccentPrimary = '#00d4ff'
Config.AccentOrange = '#ff6b35'
Config.AccentGreen = '#00ff88'
-- case = Gehaeuse, daraus wird die ganze Metallreihe abgeleitet
-- band = Armband, eigene Reihe
-- accent = Systemfarbe der Oberflaeche
-- mesh = true bei Metallgliedern, false bei einfarbigen Baendern
--
-- Die Toene sind auf die Beschreibung und auf die Agency-Palette abgestimmt:
-- Cyan #00d4ff und Orange #ff6b35 sind die Hausfarben, sie bleiben ueberall
-- der Bezugspunkt.
-- Beschriftungen wieder auf Englisch, damit sie uebersetzt werden. Siehe
-- den Hinweis bei Config.ActionPresets.
Config.Themes = {
-- Warmgraues Titan, wie gebuerstetes Metall
titan = { label = 'Titanium', case = '#b9b4a9', band = '#a9a49a', accent = '#00d4ff', orange = '#ff6b35', mesh = true },
-- Kuehles helles Silber
silber = { label = 'Silver', case = '#dde0e4', band = '#c7cbd1', accent = '#00d4ff', orange = '#ff6b35', mesh = true },
-- Neutrales dunkles Grau
graphit = { label = 'Graphite', case = '#44474e', band = '#383b42', accent = '#00d4ff', orange = '#ff7a30', mesh = true },
-- Fast schwarz mit dem Blaustich des Agency-Navy
mitternacht = { label = 'Midnight', case = '#1f2129', band = '#171922', accent = '#00d4ff', orange = '#ff6b35', mesh = true },
-- Stahlblaues Gehaeuse mit tiefblauem Band
ozean = { label = 'Ocean', case = '#5b6b7d', band = '#1d6fd8', accent = '#00d4ff', orange = '#ff9d5c', mesh = false },
-- Bronze mit dem Orange des Hauses
abendrot = { label = 'Sunset', case = '#8f5c3a', band = '#ff6b35', accent = '#ffc24a', orange = '#ff8a4a', mesh = false },
-- Die Hausfarben selbst
agency = { label = 'Agency', case = '#2a2f3a', band = '#0f1620', accent = '#00d4ff', orange = '#ff6b35', mesh = true },
}
-- ═══════════════════════════════════════════════════════════════
-- 6 SPERRE — Zahlencode beim Oeffnen
-- Ein Rollenspiel-Element, kein Schutz gegen Mitspieler mit Werkzeugen.
-- ═══════════════════════════════════════════════════════════════
-- Die Uhr ist beim ersten Oeffnen gesperrt. Wird ein Agency Phone erkannt,
-- entsperrt sie sich von selbst und fragt nie nach dem Code.
Config.LockScreen = true -- Code beim Oeffnen verlangen
Config.LockCode = '0000' -- vierstellig
Config.LockRemember = true -- Code pro Sitzung nur einmal abfragen
Config.UnlockWithPhone = true -- mit erkanntem Agency Phone ohne Code oeffnen
-- ═══════════════════════════════════════════════════════════════
-- 7 ZIFFERBLAETTER — Reihenfolge ist zugleich die Blaetterreihenfolge
-- puls = Standard: Datum, Ringe, grosse Zeit, Pulskurve, Kurzwahlen
-- raster = dichte Uebersicht mit Werten rundherum
-- digital = grosse Digitalanzeige mit Akzentflaeche
-- klar = reduziert, nur Zeit und Datum
-- zeiger = klassische Zeiger
-- ringe = Aktivitaetsringe
-- ═══════════════════════════════════════════════════════════════
-- Reihenfolge auf der Uhr. Das erste ist zugleich das, was beim Wischen
-- zuerst kommt - deshalb steht das Standardblatt hier vorn.
Config.Faces = { 'raster', 'puls', 'digital', 'klar', 'zeiger', 'ringe' }
-- Welche Zifferblaetter ohne Agency Phone nutzbar sind. Bewusst drei sehr
-- verschiedene: das Standardblatt mit allen Werten, ein reduziertes und ein
-- klassisches. Damit hat auch die kostenlose Uhr eine echte Wahl und wirkt
-- nicht beschnitten.
-- Wer alle sechs will und sie frei belegen moechte, braucht das Phone.
--
-- Das voreingestellte Blatt aus Config.DefaultFace MUSS hier stehen, sonst
-- startet die kostenlose Uhr auf einem gesperrten Zifferblatt.
Config.FreeFaces = { 'raster', 'klar', 'zeiger' }
-- ═══════════════════════════════════════════════════════════════
-- 7b ZIFFERBLATT FREI BELEGEN (nur mit Agency Phone)
-- Die beiden kleinen Werte links neben der Uhrzeit und die Messzeile
-- darunter lassen sich mit einem beliebigen Wert aus dieser Liste belegen.
-- Wer hier etwas ergaenzt, muss den Schluessel auch in der Oberflaeche
-- kennen (html/js/app.js, Funktion komplikation).
-- ═══════════════════════════════════════════════════════════════
-- Beschriftungen wieder auf Englisch, damit sie uebersetzt werden. Siehe
-- den Hinweis bei Config.ActionPresets.
Config.Komplikationen = {
{ id = 'leben', label = 'Health', icon = 'herz', farbe = '#ff453a' },
{ id = 'panzerung', label = 'Armour', icon = 'schild', farbe = '#00d4ff' },
{ id = 'schritte', label = 'Steps', icon = 'schritte', farbe = '#ff9f0a' },
{ id = 'strecke', label = 'Distance', icon = 'karte-pin', farbe = '#5e5ce6' },
{ id = 'kalorien', label = 'Calories', icon = 'blitz', farbe = '#ffd60a' },
{ id = 'puls', label = 'Heart rate', icon = 'herz', farbe = '#ff453a' },
{ id = 'tempo', label = 'Speed', icon = 'tempo', farbe = '#30d158' },
{ id = 'wetter', label = 'Weather', icon = 'sonne', farbe = '#64d2ff' },
{ id = 'kompass', label = 'Compass', icon = 'kompass', farbe = '#a855f7' },
{ id = 'geld', label = 'Agency Pay', icon = 'karte', farbe = '#ff6b35', pro = true },
{ id = 'keine', label = 'None', icon = 'verboten', farbe = '#8e8e93' },
}
-- Voreinstellung der drei Felder auf dem Standardblatt
Config.FaceSlots = {
oben = 'leben', -- oberer kleiner Wert links
unten = 'schritte', -- unterer kleiner Wert links
zeile = 'puls', -- die Messzeile mit Verlaufskurve
}
-- ═══════════════════════════════════════════════════════════════
-- 8 APPS — Reihenfolge, Sichtbarkeit und Pro-Abhaengigkeit
-- ═══════════════════════════════════════════════════════════════
-- DIE GRENZE ZWISCHEN KOSTENLOS UND PRO
--
-- Die Regel dahinter ist bewusst einfach und fuer jeden Spieler auf
-- Anhieb einleuchtend:
--
-- Alles, was eine Uhr aus sich heraus kann, ist kostenlos.
-- Alles, was aus dem Telefon kommt, braucht das Telefon.
--
-- Deshalb ist keine einzige Grundfunktion gesperrt. Zifferblaetter,
-- Themes, Aktivitaet, Sport, Stoppuhr, Timer, Wecker, Wetter, Kompass,
-- Tacho, Mitteilungen, das Kontrollzentrum und saemtliche Einstellungen
-- laufen ohne Telefon vollstaendig. Wer die Uhr kostenlos nutzt, hat ein
-- fertiges Geraet und kein Werbegeruest.
--
-- Gesperrt ist nur, was ohne Telefon technisch gar nicht existieren
-- koennte: Anrufe, Nachrichten, Mail, Kontakte, Bezahlen und die
-- Kopplung mit der Companion-App. Diese Apps waeren ohne Agency Phone
-- keine gesperrten Apps, sondern schlicht leere.
--
-- pro = true -> braucht das Agency Phone
-- pro = false -> laeuft immer
-- ═══════════════════════════════════════════════════════════════
Config.Apps = {
-- ── Braucht das Agency Phone ────────────────────────────────
{ id = 'telefon', label = 'Phone', icon = 'telefon', color = '#34c759', enabled = true, pro = true },
{ id = 'nachrichten', label = 'Messages', icon = 'sprechen', color = '#30d158', enabled = true, pro = true },
{ id = 'mail', label = 'Mail', icon = 'brief', color = '#0a84ff', enabled = true, pro = true },
{ id = 'kontakte', label = 'Contacts', icon = 'personen', color = '#34c759', enabled = true, pro = true },
{ id = 'geld', label = 'Agency Pay', icon = 'karte', color = '#ff6b35', enabled = true, pro = true },
-- Kostenlos: die Uhr hat einen eigenen Draht zur Companion-App und
-- braucht das Agency Phone dafuer nicht mehr (siehe Config.Companion).
{ id = 'companion', label = 'Companion', icon = 'qr', color = '#00d4ff', enabled = true, pro = false },
-- ── Laeuft immer, auch ganz ohne Telefon ────────────────────
-- Mitteilungen sind bewusst kostenlos: die Uhr meldet Wecker, Timer
-- und erreichte Ziele selbst. Mit Telefon kommen dessen Meldungen
-- zusaetzlich dazu, die App ist also nie leer.
{ id = 'meldungen', label = 'Notifications', icon = 'glocke', color = '#ff9f0a', enabled = true, pro = false },
{ id = 'aktivitaet', label = 'Activity', icon = 'herz', color = '#ff2d55', enabled = true, pro = false },
{ id = 'training', label = 'Workout', icon = 'laufen', color = '#a3ff12', enabled = true, pro = false },
{ id = 'stoppuhr', label = 'Stopwatch', icon = 'stoppuhr', color = '#ff9f0a', enabled = true, pro = false },
{ id = 'timer', label = 'Timer', icon = 'sanduhr', color = '#ff9f0a', enabled = true, pro = false },
{ id = 'wecker', label = 'Alarm', icon = 'glocke', color = '#ff9f0a', enabled = true, pro = false },
{ id = 'wetter', label = 'Weather', icon = 'sonne', color = '#64d2ff', enabled = true, pro = false },
{ id = 'kompass', label = 'Compass', icon = 'kompass', color = '#ff453a', enabled = true, pro = false },
{ id = 'karte', label = 'Speedometer', icon = 'karte-pin', color = '#5e5ce6', enabled = true, pro = false },
-- Die Garage zieht ihre Daten aus dem Framework, nicht aus dem Telefon.
-- Sie laeuft deshalb auch kostenlos. Ohne Framework blendet sie sich
-- selbst aus, statt leer dazustehen.
{ id = 'garage', label = 'Garage', icon = 'auto', color = '#0a84ff', enabled = true, pro = false },
{ id = 'zifferblatt', label = 'Watch Face', icon = 'uhr', color = '#ff9f0a', enabled = true, pro = false },
{ id = 'store', label = 'App Store', icon = 'einkauf', color = '#0a84ff', enabled = true, pro = false },
{ id = 'einstellung', label = 'Settings', icon = 'zahnrad', color = '#8e8e93', enabled = true, pro = false },
}
-- ═══════════════════════════════════════════════════════════════
-- 8c WETTER
-- Los Santos kommt aus dem Spiel. Alles andere sind echte Staedte, die
-- Werte holt die Uhr von open-meteo.com - kostenlos, ohne Schluessel und
-- ohne Anmeldung, genau wie das Agency Phone es tut.
--
-- Wer keine echten Staedte will, leert die Liste. Dann zeigt die App nur
-- Los Santos und der Ortswechsel verschwindet.
-- ═══════════════════════════════════════════════════════════════
Config.Wetter = {
staedte = {
'Berlin', 'Hamburg', 'München', 'Wien', 'Zürich',
'London', 'Paris', 'Madrid', 'Rom', 'Amsterdam',
'New York', 'Los Angeles', 'Miami', 'Tokio', 'Dubai',
'Sydney', 'Reykjavik', 'Kapstadt',
},
-- Wie lange geholte Werte gelten, bevor neu gefragt wird (Minuten).
frischeMinuten = 15,
}
-- ═══════════════════════════════════════════════════════════════
-- 8a APP STORE
-- Nicht alles liegt ab Werk auf der Uhr. Was fehlt, holt sich der Spieler
-- im Store, und was er nicht braucht, loescht er wieder. Beides wird pro
-- Figur gemerkt, genau wie Zifferblatt und Code.
--
-- Laenger auf eine App druecken laesst die Liste wackeln: dann kann man sie
-- umsortieren und loeschen.
-- ═══════════════════════════════════════════════════════════════
Config.AppStore = {
enabled = true,
-- Was ab Werk installiert ist. Der Rest steht im Store bereit.
-- Diese Liste leer lassen heisst: alles ist von Anfang an da.
vorinstalliert = {
'telefon', 'nachrichten', 'geld', 'companion', 'meldungen', 'aktivitaet',
'wetter', 'stoppuhr', 'zifferblatt', 'store', 'einstellung',
},
-- Diese lassen sich nie loeschen. Ohne Einstellungen und Store kaeme man
-- an nichts mehr heran, und ohne Zifferblatt-App an kein anderes Blatt.
fest = { 'einstellung', 'store', 'zifferblatt' },
-- Wie lange das Laden im Store dauert (Sekunden). 0 = sofort da.
ladedauer = 2.0,
}
-- ═══════════════════════════════════════════════════════════════
-- 8b GARAGE
-- Fahrzeuge ansehen, orten und rufen. Die Liste kommt aus der Datenbank
-- des Frameworks (QBCore: player_vehicles, ESX: owned_vehicles). Ohne
-- Framework gibt es keine Fahrzeugbesitzer, dann verschwindet die App.
-- ═══════════════════════════════════════════════════════════════
Config.Garage = {
enabled = true,
-- Darf die Uhr Fahrzeuge herbeirufen?
-- false = die App zeigt nur an und ortet.
rufen = true,
-- Das Herbeirufen ist die Fernsteuerung des Fahrzeugs und damit die
-- Pro-Funktion dieser App. Ansehen, orten und abschliessen bleiben immer
-- kostenlos, die App ist ohne Telefon also nie leer.
-- Auf false gesetzt darf jeder rufen.
rufenNurPro = true,
-- Sekunden zwischen zwei Rufen, pro Spieler.
abklingzeit = 45,
-- Kosten pro Ruf. 0 = kostenlos.
-- konto: 'bank' | 'cash'
kosten = 0,
konto = 'bank',
-- Nur Fahrzeuge zeigen, die wirklich eingelagert sind. Ein Fahrzeug,
-- das schon auf der Strasse steht, laesst sich nicht noch einmal rufen.
nurEingelagerte = true,
-- Darf ein bereits ausgeparktes Fahrzeug aus der Ferne geortet werden?
orten = true,
-- Tueren aus der Naehe auf- und zuschliessen (Meter).
schliessweite = 15.0,
-- Auf welche Fahrzeugtabelle wird gelesen. 'auto' waehlt nach Framework.
tabelle = 'auto', -- 'auto' | 'player_vehicles' | 'owned_vehicles'
}
-- Tagesziel fuer Schritte. Steuert die Ringe und die Meldung beim
-- Erreichen. Rein kostenlos, braucht kein Telefon.
Config.Schrittziel = 8000
-- Zu welcher Stunde beginnt der neue Tag? Dann werden Schritte, Strecke,
-- aktive Zeit und Verbrauch auf null gesetzt und der alte Tag wandert in den
-- Verlauf. Massgeblich ist die Spielzeit, nicht die echte.
--
-- 0 = Mitternacht. Wer den Zaehler nicht mitten in der Nacht verlieren will,
-- traegt hier z. B. 4 ein - dann gehoeren 0 bis 3 Uhr noch zum Vortag.
--
-- Ein Neustart des Scripts setzt NICHTS zurueck. Nur der Tageswechsel tut das.
Config.SchritteReset = 0
-- ═══════════════════════════════════════════════════════════════
-- KONTROLLZENTRUM
-- Jede Kachel bewirkt wirklich etwas und wird gemerkt. Eine Akkuanzeige gab
-- es hier einmal - sie ist entfallen, weil es im Spiel nichts zu laden gibt
-- und die Zahl damit reine Zierde war.
--
-- Reihenfolge und Auswahl stehen in 'kacheln'. Was hier nicht steht, taucht
-- auch nicht auf; wer die Reihenfolge aendert, aendert sie auf der Uhr.
--
-- Verfuegbar:
-- mobilfunk Verbindung zum Telefon. Aus = keine Anrufe, keine Mitteilungen
-- wlan Netz. Aus = keine Kopplung, kein Wetter
-- flugmodus schaltet Mobilfunk und WLAN gemeinsam ab
-- lautlos Toene der Uhr aus
-- kino die Uhr meldet sich gar nicht mehr
-- lampe Taschenlampe (siehe Config.Lampe)
-- licht helles oder dunkles Aussehen
-- wecker oeffnet den Wecker
-- wegpunkt loescht den gesetzten Wegpunkt
-- sperren sperrt die Uhr sofort (nur mit gesetztem Code)
-- pay oeffnet Agency Pay (nur mit Agency Phone)
-- garage oeffnet die Garage
-- ═══════════════════════════════════════════════════════════════
Config.ControlCenter = {
kacheln = {
'mobilfunk', 'wlan',
'flugmodus', 'lampe',
'lautlos', 'kino',
'licht', 'wecker',
'wegpunkt', 'sperren',
'pay', 'garage',
},
-- Helligkeitsregler unter den Kacheln
hell = true,
}
-- ═══════════════════════════════════════════════════════════════
-- 9 AGENCY PHONE
-- ═══════════════════════════════════════════════════════════════
Config.EnablePhone = true
Config.PhoneResource = 'agency-phone'
-- Wohin der Knopf in einer gesperrten App fuehrt. Direkt zum Agency Phone,
-- nicht auf die Startseite: wer dort landet, sucht genau dieses Produkt.
Config.ShopUrl = 'https://shop.agencyg.de/en/product/phone'
-- ═══════════════════════════════════════════════════════════════
-- 9b AGENCY COMPANION (Handy-App)
-- Die Uhr kann sich selbst mit der Companion-App koppeln, ganz ohne
-- Agency Phone. Sie meldet sich dafuer beim Relay an und haelt die
-- Verbindung von sich aus offen - der Server waehlt nur nach draussen,
-- es muss also kein Port geoeffnet werden.
--
-- kanal:
-- 'auto' laeuft ein Agency Phone, geht die Kopplung ueber dessen
-- Verbindung (ein Weg nach draussen statt zwei). Ohne Telefon
-- macht die Uhr es selbst.
-- 'immer' die Uhr hat immer ihren eigenen Kanal
-- 'nie' nur ueber das Telefon; ohne Telefon gibt es keine Kopplung
-- ═══════════════════════════════════════════════════════════════
Config.Companion = {
enabled = true,
-- 'immer' ab Werk: die Uhr ist ein eigenstaendiges Geraet und soll auch
-- in der App als eigenes erscheinen, nicht als Anhaengsel des Telefons.
-- Wer nur eine Verbindung nach draussen will, stellt auf 'auto'.
kanal = 'immer',
relay = 'https://api.agencyg.de',
-- Wie lange ein Kopplungscode gilt (Sekunden).
codeDauer = 600,
-- Wie viele Geraete ein Spieler gleichzeitig gekoppelt haben darf.
maxGeraete = 5,
}
-- ═══════════════════════════════════════════════════════════════
-- STURZERKENNUNG UND NOTRUF
-- Die Uhr merkt selbst, wenn etwas passiert ist, kommt von allein hervor
-- und bietet den Notruf an. Das laeuft auch ganz ohne Agency Phone - eine
-- Uhr, die im Notfall nichts kann, waere genau dann nutzlos, wenn sie
-- gebraucht wird.
-- ═══════════════════════════════════════════════════════════════
Config.Sturz = {
enabled = true,
-- Ab wie viel Schaden auf einen Schlag gilt es als Notfall.
-- Der Wert ist bewusst hoch: ein Faustschlag oder ein Sturz von der
-- Bordsteinkante soll die Uhr nicht aufwecken.
schaden = 35,
-- Aufprall im Fahrzeug: Tempoverlust in km/h innerhalb eines Taktes.
-- Zusaetzlich muss Schaden entstanden sein, sonst waere jedes scharfe
-- Bremsen ein Unfall.
tempoverlust = 45,
-- Sturz aus der Hoehe: Schaden waehrend des Fallens.
sturzschaden = 20,
-- Sekunden, die der Bildschirm von selbst stehen bleibt.
dauer = 45,
-- Sekunden Ruhe zwischen zwei Meldungen. Ohne das meldet sich die Uhr
-- bei einer Schlaegerei im Sekundentakt.
abstand = 30,
-- Wohin der Notruf geht, wenn KEIN Agency Phone vorhanden ist.
-- Leer lassen, wenn der Server keinen eigenen Weg hat - die Uhr sagt
-- dann ehrlich, dass sie niemanden erreichen konnte.
-- Beide bekommen: { quelle, art, coords, street }
notrufEvent = '', -- z. B. 'mein-dispatch:server:notruf'
notfallEvent = '', -- Notfallkontakt statt Rettungsdienst
}
-- ═══════════════════════════════════════════════════════════════
-- Bezahlstellen von Agency Pay
-- Die Uhr uebernimmt die Stellen des Agency Phone automatisch. Hier
-- eingetragene kommen dazu - und werden umgekehrt auch beim Telefon
-- angemeldet, sodass beide Geraete dieselben kennen.
-- Ohne Telefon funktionieren diese Stellen trotzdem.
-- ═══════════════════════════════════════════════════════════════
-- Ab Werk leer. Die Stellen des Agency Phone werden ohnehin uebernommen,
-- eine mitgelieferte Stelle waere auf jedem fremden Server ein Punkt, den
-- dort niemand bestellt hat. Eigene Stellen nach diesem Muster eintragen:
--
-- { id = 'meine_stelle', coords = vector3(25.7, -1347.3, 29.5),
-- merchant = '24/7 Strawberry', label = 'Agency Pay', radius = 3.0 },
--
Config.PayPunkte = {}
-- Sollen die eigenen Stellen auch auf der Karte auftauchen?
-- Aus, solange oben nichts steht. Wer eigene Stellen eintraegt und sie
-- auffindbar machen will, setzt das auf true.
Config.PayPunkteBlip = false
-- Welche App auf dem Telefon eine App der Uhr fortsetzt.
-- Auf der Uhr laesst sich lesen, aber nicht schreiben. Tippt man dort eine
-- Nachricht an, holt die Uhr das Telefon hervor, entsperrt es und springt in
-- die passende App. Heisst eine App auf dem Telefon anders, hier eintragen.
Config.PhoneApps = {
nachrichten = 'buzz',
mail = 'postbox',
kontakte = 'contacts',
telefon = 'dialer',
geld = 'wallet',
}
-- Eigenes Symbol der Uhr auf dem Startbildschirm des Phones.
-- Auf false setzen, wenn die vollstaendige Watch-App des Phones genutzt wird,
-- damit nicht zwei Eintraege nebeneinander stehen.
Config.RegisterPhoneApp = false
-- ═══════════════════════════════════════════════════════════════
-- 9b PRO-PRUEFUNG
-- Hier steht KEIN Geheimnis. Das gemeinsame Geheimnis liegt ausschliesslich
-- in der verschluesselten server/security.lua. Die Pro-Fassung wird immer
-- auf dem Server entschieden und dem Client nur mitgeteilt.
-- ═══════════════════════════════════════════════════════════════
Config.Security = {
-- Sekunden zwischen den regelmaessigen Nachpruefungen
RecheckSeconds = 300,
-- Erlaubte Zeitabweichung in Sekunden beim Handschlag
HandshakeSkew = 30,
-- NOTWEG, ab Werk AUS.
-- Der vorgesehene und sichere Weg ist der Handschlag mit dem echten
-- Agency Phone. Er ist ab Phone-Fassung 26.5.4 eingebaut und braucht
-- keinerlei Einrichtung.
--
-- Diesen Schalter nur einschalten, wenn das Agency Phone aelter ist und
-- sich nicht sofort aktualisieren laesst. Dann gilt: Pro bekommt, wer den
-- unten genannten Gegenstand besitzt UND dessen Phone echt wirkt. Das ist
-- schwaecher als der Handschlag.
--
-- Achtung bei der Wahl des Gegenstands: 'phone' ist in QBCore ein
-- Standardgegenstand, den fast jeder Spieler von Beginn an hat. Wer ihn
-- hier eintraegt, verschenkt die Pro-Fassung an alle.
AllowItemFallback = false,
PhoneItem = 'agency_phone',
}
-- ═══════════════════════════════════════════════════════════════
-- 10 EIGENE TEXTE
-- Alle Uebersetzungen stehen in shared/sprachen.lua, zehn Sprachen,
-- dieselben wie im Agency Phone. Hier gehoeren nur eigene Aenderungen
-- hin. Was hier steht, gilt VOR der mitgelieferten Uebersetzung und
-- ueberlebt jede Aktualisierung des Scripts.
--
-- Beispiel:
-- Config.Text = {
-- de = { apps = 'Programme', p_senden = 'Abschicken' },
-- en = { apps = 'Programs' },
-- }
-- ═══════════════════════════════════════════════════════════════
Config.Text = {}
-- Beschriftung nachschlagen. Reihenfolge: eigener Text, gewaehlte Sprache,
-- Englisch als Rueckfall. Der rohe Schluessel erscheint nie.
function T(schluessel)
local code = Config.Locale or 'en'
local eigen = Config.Text[code]
if eigen and eigen[schluessel] then return eigen[schluessel] end
local sprache = Sprachen[code]
if sprache and sprache[schluessel] then return sprache[schluessel] end
return Sprachen.en[schluessel] or ''
end