--:--:--
FVS-Tablet
Home/Wiki/FVS-Tablet
FiveM ESX Lua 5.4 ox_inventory core_inventory Lizenz

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.

Ressource: sh_fvs_tablet Version: V3.9.40 Abhängigkeit: oxmysql Inventar: ox / core / qb / ps
ℹ️ FVS-Tablet und FVS-PC sind eigenständige Scripts. Diese Seite behandelt nur das Tablet. Die PC-Terminals findest du unter FVS-PC.

🧭 Überblick – der komplette Ablauf

  • SQL einspielen.
  • Ressource kopieren + in der server.cfg eintragen.
  • Inventar-Items tablet (+ optional tablet_charger) anlegen.
  • Config prüfen (Inventar, Item, ACE-Rechte, Identifier).
  • Lizenz-Key anfragen und setzen.
  • Prüfen mit tabletfvs status / showurls.

⚙️ Voraussetzungen

🗄️
oxmysql
Pflicht – Datenbank-Layer für die Tablet-Daten.
🎒
Inventar
ox_inventory oder core_inventory (qb/ps ebenfalls). Wird automatisch erkannt.
🌐
Internet-Zugriff
Der Server muss tablet-license.devhive.app erreichen können.
🛰️
OneSync
Nur für die Leitstelle/LiveMap nötig – der Fahrzeug-Tracker nutzt OneSync-Natives.

🗄️ 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

bash
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.

server.cfg
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

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.

core_inventory items
['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',
},
ℹ️ Bei core_inventory läuft der Item-Use über das Framework (QBCore / QBox / ESX) via 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.lua
Config.Inventory = 'ox'   -- 'auto' | 'ox' | 'core' | 'qb' | 'ps' | 'generic'
Beim Start sollte erscheinen:
[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:

KeyStandardBedeutung
Config.ItemName'tablet'Inventar-Item-Name
Config.RequireItemtrueItem 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.AllowMultipleTabletstrueMehrere 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):

config.lua
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

Key erstellen (License-Server)

Der Bearer-Token ist der ADMIN_API_KEY aus der .env des Servers (nicht der Lizenz-Key!).

bash
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).

Key auf dem FiveM-Server setzen
konsole
tabletfvs setlicense FVSOS:Ab12Cd34Ef56Gh78Ij90

6 · Prüfen

konsole
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.

OneSync aktivieren

Der Server-Tracker nutzt GetAllVehicles() + Entity-Natives – ohne OneSync bleibt die Karte leer.

GTA-V-Tileset bereitstellen

Die Karte erwartet Kacheln unter TILE_URL (Standard /map/{z}/{x}/{y}.png). Lege das Community-Tileset hier ab:

pfad
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.

NUI neu bauen (nur bei Build aus Source)
bash
cd sh_fvs_tablet/web
npm install      # zieht u.a. leaflet
npm run build    # schreibt nach web/dist/
App installieren & testen

Als Fraktionsmitglied mit verknüpftem FVS-Konto im DevStore die App Leitstelle installieren. Ein im Fuhrpark eingetragenes Dienstfahrzeug erscheint als Marker.

konsole / chat
/leitstelle      # abonnieren (Test ohne UI)
/fvsunits        # Einheiten-Liste

Config Config.Leitstelle

KeyStandardBedeutung
enabledtrueLeitstelle-Tracker an/aus
tickMs1500Intervall des Server-Scans (ms)
requireGpsMetafalsetrue = nur Fahrzeuge mit GPS-Meta zeigen
duty.useEsxOnDutytrueDienst-Status aus ESX onDuty
duty.externalResourcenilOptionaler externer Dienst-Export (z. B. esx_policejob)
⚠️ Die App ist job- & dienst-gated (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.

ℹ️ Damit die CCTV-App funktioniert, muss sh_fvs_pc installiert und eingerichtet sein. Die komplette CCTV-Einrichtung (Items, SQL, Befehle, Config) findest du unter FVS-PC · CCTV-Überwachung.

⌨️ Befehlsliste

ℹ️ Admin-Befehle laufen über die Server-Konsole (ohne /) oder im F8/Chat (mit /) und benötigen die ACE-Permission fvs.tablet.admin.

Spieler / Client

BefehlBeschreibung
Item benutzenÖffnet das Tablet (über Inventar)
Hotkey F5Tablet öffnen/schließen – änderbar in den FiveM-Tasteneinstellungen

Admin – Tablet-Verwaltung

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

BefehlBeschreibung
tabletfvs setlicense XXXX:YYYYLizenz setzen + verifizieren + speichern
tabletfvs statusLizenz-Status anzeigen
tabletfvs verifyBestehende Lizenz neu verifizieren
tabletfvs showkeyGespeicherten License-Key anzeigen
tabletfvs showurlsGeladene URLs anzeigen
tabletfvs clearLizenz entfernen
tabletfvs testapi <user> <pw>API-Login testen
tabletfvs testsso <app> <player_id>SSO-Auto-Login-Flow testen

🛠️ Troubleshooting

SymptomUrsache / Fix
Tablet öffnet nicht übers ItemItem fehlt bzw. client.export (ox) / useable = true (core) nicht gesetzt – siehe Schritt 3
Start-Log zeigt Inventar-System: genericErkennung fehlgeschlagen → Config.Inventory fest auf 'ox' bzw. 'core' setzen, Inventar vor sh_fvs_tablet ensuren
Mehrere Tablets teilen eine device_idox: 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 nichtItem tablet_charger anlegen & Config.Battery.charger.enabled = true prüfen
Leitstelle-Karte bleibt leerOneSync aktivieren & GTA-Tileset unter web/public/map/ bereitstellen