FVS-Tablet
Mobiles Tablet-System mit FVS-Anbindung, SSO-Login, Apps und Lizenz-Verwaltung. Das Tablet ist ein physisches Inventar-Item und unterstützt ox_inventory und core_inventory (sowie qb/ps) mit automatischer Erkennung.
Überblick – der komplette Ablauf
- SQL einspielen.
- Ressource kopieren + in der
server.cfgeintragen. - Inventar-Items
tablet(+ optionaltablet_charger) anlegen. - Config prüfen (Inventar, Item, ACE-Rechte, Identifier).
- Lizenz-Key anfragen und setzen.
- Prüfen mit
tabletfvs status/showurls.
Voraussetzungen
tablet-license.devhive.app erreichen können.0 · Build.BAT / build.sh ausführen
Einmalig die Build-Dateien ausführen. Damit werden die benötigten Node.js-Abhängigkeiten installiert.
1 · SQL installieren
mysql -u DEIN_USER -p DEINE_DB < sh_fvs_tablet/sql/tablet.sql
tablet.sql enthält bereits den aktuellen Stand und reicht
komplett aus. Dateien unter sql/migrations/ sind nur für alte Bestands-Datenbanken relevant.
2 · server.cfg
oxmysql und das Inventar müssen vor
sh_fvs_tablet geladen werden.
ensure oxmysql ensure ox_inventory # ODER: ensure core_inventory ensure sh_fvs_tablet # NUI-DevTools nur auf Test-Servern: setr ui_useNuiDevTools "true" # ----- Admin-Rechte (ACE) ----- add_ace group.admin fvs.tablet.admin allow
3 · Inventar-Item anlegen
Bei Config.RequireItem = true muss das Item tablet im Inventar
existieren. Lege es je nach deinem Inventar-System an. Das Tablet erkennt das System
automatisch (Config.Inventory = 'auto').
🟦 ox_inventory — data/items.lua
['tablet'] = { label = 'Tablet', weight = 500, stack = false, -- WICHTIG: sonst teilen sich mehrere Tablets eine device_id close = true, consume = 0, client = { export = 'sh_fvs_tablet.tablet' } }, ['tablet_charger'] = { label = 'Tablet Power-Bank', weight = 300, stack = true, close = true, client = { export = 'sh_fvs_tablet.tablet_charger' } },
stack = false beim tablet ist Pflicht – sonst teilen sich
mehrere Tablets dieselbe device_id. consume = 0 sorgt dafür, dass das
Item beim Benutzen nicht verbraucht wird.
🟩 core_inventory
Trage die Items in deiner core_inventory-Item-Konfiguration ein. Wichtig:
unique = true, damit jedes Tablet seine eigene Metadata (device_id) behält und
nicht stapelt.
['tablet'] = { name = 'tablet', label = 'Tablet', weight = 500, type = 'item', unique = true, -- jedes Tablet eigenständig (eigene device_id) useable = true, shouldClose = true, description = 'FVS Tablet', }, ['tablet_charger'] = { name = 'tablet_charger', label = 'Tablet Power-Bank', weight = 300, type = 'item', useable = true, shouldClose = true, description = 'Lädt den Tablet-Akku auf', },
CreateUseableItem bzw. RegisterUsableItem.
Die device_id-Bindung übernimmt das Tablet anschließend automatisch über core_inventory.
Inventar fest setzen (optional)
Schlägt die Auto-Erkennung fehl, in sh_fvs_tablet/shared/config.lua erzwingen:
Config.Inventory = 'ox' -- 'auto' | 'ox' | 'core' | 'qb' | 'ps' | 'generic'
[FVS-Tablet] Inventar-System: ox (Item: tablet) bzw.
... core (Item: tablet)und die Bestätigung, dass das Item verlinkt wurde.
4 · Wichtige Config-Werte
In sh_fvs_tablet/shared/config.lua:
| Key | Standard | Bedeutung |
|---|---|---|
Config.ItemName | 'tablet' | Inventar-Item-Name |
Config.RequireItem | true | Item zum Öffnen nötig |
Config.OpenKey | 'F5' | Default-Hotkey |
Config.Inventory | 'auto' | auto / ox / core / qb / ps / generic |
Config.PlayerIdentifier | 'char' | Tablet-Bindung (char = multichar) |
Config.AllowMultipleTablets | true | Mehrere Tablets pro Spieler erlauben |
Config.DeviceIdPrefix | 'FVS' | Präfix der Geräte-IDs |
Config.Battery.charger.itemName | 'tablet_charger' | Power-Bank-Item |
License-Endpunkte (bereits vorkonfiguriert, normalerweise nicht ändern):
licenseVerifyUrl = 'https://tablet-license.devhive.app/ucp/licensen' defaultApiBaseUrl = 'https://tablet-api.devhive.app' fvsSocketUrl = 'https://fvs-socket.devhive.app'
5 · Lizenz-Key anfragen & setzen
Der Bearer-Token ist der ADMIN_API_KEY aus der
.env des Servers (nicht der Lizenz-Key!).
curl -X POST https://tablet-license.devhive.app/admin/licenses \ -H "Authorization: Bearer <ADMIN_API_KEY_AUS_DER_.ENV>" \ -H "Content-Type: application/json" \ -d '{ "server_name": "[FVS-OS]-Socket", "prefix": "FVSOS" }'
Die Antwort enthält den license_key (z. B. FVSOS:Ab12Cd34Ef56Gh78Ij90).
tabletfvs setlicense FVSOS:Ab12Cd34Ef56Gh78Ij90
6 · Prüfen
tabletfvs status tabletfvs showurls
Der Status muss aktiv zeigen; showurls listet die geladenen URLs (api / socket / banking / akten).
Leitstelle / LiveMap (optional)
Die Leitstelle ist eine neue App (Leaflet-Karte), die alle Dienstfahrzeuge der eigenen Fraktion live auf einer Karte zeigt. Sie wird über den DevStore installiert und ist job- & dienst-gated. Für die Einrichtung sind zwei zusätzliche Schritte nötig: OneSync und ein GTA-V-Tileset.
Der Server-Tracker nutzt GetAllVehicles() + Entity-Natives – ohne OneSync bleibt die Karte leer.
Die Karte erwartet Kacheln unter TILE_URL (Standard /map/{z}/{x}/{y}.png). Lege das Community-Tileset hier ab:
sh_fvs_tablet/web/public/map/{z}/{x}/{y}.png
Alternativ in web/src/lib/leitstelle.ts die Konstante TILE_URL auf eine CDN-/Server-URL setzen.
cd sh_fvs_tablet/web npm install # zieht u.a. leaflet npm run build # schreibt nach web/dist/
Als Fraktionsmitglied mit verknüpftem FVS-Konto im DevStore die App Leitstelle installieren. Ein im Fuhrpark eingetragenes Dienstfahrzeug erscheint als Marker.
/leitstelle # abonnieren (Test ohne UI) /fvsunits # Einheiten-Liste
Config Config.Leitstelle
| Key | Standard | Bedeutung |
|---|---|---|
enabled | true | Leitstelle-Tracker an/aus |
tickMs | 1500 | Intervall des Server-Scans (ms) |
requireGpsMeta | false | true = nur Fahrzeuge mit GPS-Meta zeigen |
duty.useEsxOnDuty | true | Dienst-Status aus ESX onDuty |
duty.externalResource | nil | Optionaler externer Dienst-Export (z. B. esx_policejob) |
gateJob/gateDuty):
Nur Spieler mit Fraktions-Job sehen sie, und nur im Dienst ist sie nutzbar.
CCTV-App
Das Tablet zeigt die CCTV-App zum Live-Beobachten der Kameras. Die gesamte
Ingame-Logik (Kamera-Items, Platzieren, Map-Import, Blackout, Alarm) läuft jedoch im
PC-Script sh_fvs_pc.
sh_fvs_pc installiert und
eingerichtet sein. Die komplette CCTV-Einrichtung (Items, SQL, Befehle, Config) findest du unter
FVS-PC · CCTV-Überwachung.
Befehlsliste
/)
oder im F8/Chat (mit /) und benötigen die ACE-Permission
fvs.tablet.admin.
Spieler / Client
| Befehl | Beschreibung |
|---|---|
| Item benutzen | Öffnet das Tablet (über Inventar) |
Hotkey F5 | Tablet öffnen/schließen – änderbar in den FiveM-Tasteneinstellungen |
Admin – Tablet-Verwaltung
| Befehl | Beschreibung |
|---|---|
tabletlist <player_id> | Listet alle Tablets eines Spielers |
tabletinfo <device_id> | Details zu einem Tablet |
tabletunlock <device_id> | Sperre eines Tablets aufheben |
tabletreset <device_id> | Tablet auf Werkseinstellungen zurücksetzen |
tabletgive <player_id> | Spieler ein neues Tablet geben |
tablettype <device_id> <standard|locked> [apps] | Tablet-Typ + freigeschaltete Apps setzen |
tabletphone <device_id> [nummer] | Telefonnummer setzen (leer = neue generieren) |
Admin – Lizenz / FVS (tabletfvs)
| Befehl | Beschreibung |
|---|---|
tabletfvs setlicense XXXX:YYYY | Lizenz setzen + verifizieren + speichern |
tabletfvs status | Lizenz-Status anzeigen |
tabletfvs verify | Bestehende Lizenz neu verifizieren |
tabletfvs showkey | Gespeicherten License-Key anzeigen |
tabletfvs showurls | Geladene URLs anzeigen |
tabletfvs clear | Lizenz entfernen |
tabletfvs testapi <user> <pw> | API-Login testen |
tabletfvs testsso <app> <player_id> | SSO-Auto-Login-Flow testen |
Troubleshooting
| Symptom | Ursache / Fix |
|---|---|
| Tablet öffnet nicht übers Item | Item fehlt bzw. client.export (ox) / useable = true (core) nicht gesetzt – siehe Schritt 3 |
Start-Log zeigt Inventar-System: generic | Erkennung fehlgeschlagen → Config.Inventory fest auf 'ox' bzw. 'core' setzen, Inventar vor sh_fvs_tablet ensuren |
Mehrere Tablets teilen eine device_id | ox: stack = false setzen · core: unique = true setzen |
Lizenz status zeigt „nicht verifiziert" | tabletfvs verify ausführen; Server muss tablet-license.devhive.app erreichen |
| Power-Bank lädt nicht | Item tablet_charger anlegen & Config.Battery.charger.enabled = true prüfen |
| Leitstelle-Karte bleibt leer | OneSync aktivieren & GTA-Tileset unter web/public/map/ bereitstellen |