--:--:--
FVS-PC
Home/Wiki/FVS-PC
FiveM ESX Lua 5.4 oxmysql Lizenz

FVS-PC

Fraktions- & Unternehmens-PC-System. PCs sind feste Monitore in der Welt — Zugang nur für Mitglieder des zugeordneten Jobs/der Fraktion, Login passwortlos über automatische Spieler-Erkennung. Mit DevStore, Apps, Firmen-Verwaltung und optionalem USB-Hack-Verbrechen.

Ressource: sh_fvs_pc Version: V3.5.41 Abhängigkeit: oxmysql Zugang: Job / Grade
ℹ️ FVS-PC und FVS-Tablet sind eigenständige Scripts. Der PC wird per Interaktion am Terminal geöffnet — nicht per Tablet-Item. Das Tablet findest du unter FVS-Tablet.

🧭 Überblick

Ein PC ist ein ausgewählter Monitor in der Welt. Spieler stellen sich davor, drücken E und werden – sofern ihr Job/Grade Zugang hat – automatisch eingeloggt.

🖥️
Welt-Terminals
Beliebige Monitore per Befehl als PC anlegen.
🔐
Job-Zugang
Zugang nach Job & Grade aus der users-Tabelle.
🏢
Firmen-Verwaltung
Verwaltungs-PC steuert alle Firmen-PCs (ab Grade 95).
📹
CCTV
Kamera-Überwachung mit Items, Map-Import, Blackout & Alarm.
🕵️
USB-Hack
Optionales mehrstufiges Eindring-Verbrechen.

⚙️ Voraussetzungen

🗄️
oxmysql
Pflicht – Datenbank-Layer.
👔
users-Tabelle
Mit Spalten job / job_grade (ESX-Standard).
🌐
Internet-Zugriff
Server muss tablet-license.devhive.app erreichen.
🛰️
OneSync
Nur für die Leitstelle/LiveMap – der Fahrzeug-Tracker nutzt OneSync-Natives.
Sind Tablet und PC installiert, reicht es, die Lizenz einmal am Tablet zu setzen – der PC zieht sie über Config.PC.tabletResource ('sh_fvs_tablet').

🗄️ 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_pc/sql/fvs_pc.sql
ℹ️ Alternativ legt der PC das Schema beim Start selbst an. Mit dem Befehl fvspcschema kann es jederzeit manuell nachgezogen werden.

📄 2 · server.cfg

server.cfg
ensure oxmysql

ensure sh_fvs_pc

# NUI-DevTools nur auf Test-Servern:
setr ui_useNuiDevTools "true"

# ----- Admin-Rechte (ACE) -----
add_ace group.admin fvs.pc.admin allow

🔧 3 · Config & Job-Anbindung

In sh_fvs_pc/shared/config.lua – die wichtigsten Werte:

KeyStandardBedeutung
Config.PC.interactKey38 (E)Taste zum Nutzen des PCs
Config.PC.interactDistance2.0Reichweite in Metern
Config.PC.adminAce'fvs.pc.admin'ACE-Recht für /fvspc…
Config.PC.companyModeMinGrade95Grade ab dem der Unternehmensmodus öffnet
Config.PC.managementMinGrade95Grade für den Verwaltungs-PC
Config.PC.tabletResource'sh_fvs_tablet'Lizenz-Quelle, falls PC keine eigene hat
Config.DeviceIdPrefix'PC'Präfix der Terminal-IDs
Config.PlayerIdentifier'char'Bindung (char = multichar)

Job-System (Config.Jobs)

Der PC liest Job & Grade direkt aus der users-Tabelle. Standard-Spalten: job, job_grade, identifier. Ausgestempelte werden über offDutyPrefix = 'off_' erkannt (z. B. off_police zählt als police), unemployed erhält keinen Zugang.

🏗️ 4 · PC-Terminal anlegen

Vor den Monitor stellen & Terminal anlegen
ingame
/fvspcadd <job> [job2 ...] [grade:N] [label:Name]

Legt an deiner aktuellen Position ein Terminal an. Zugriff erhalten die angegebenen Jobs (optional ab grade:N).

(Optional) Verwaltungs-PC markieren
ingame
/fvspcmaster      # nächstgelegenes Terminal als Verwaltungs-PC (Toggle)
Prüfen
ingame
/fvspclist        # alle Terminals auflisten

🔑 5 · Lizenz

Ist das Tablet bereits lizenziert, übernimmt der PC die Lizenz automatisch. Andernfalls eine eigene Lizenz in der Server-Konsole setzen:

konsole
pcfvs setlicense FVSOS:Ab12Cd34Ef56Gh78Ij90
pcfvs status
pcfvs showurls
ℹ️ Der Key wird genau wie beim Tablet über den License-Server erstellt (POST /admin/licenses) – siehe FVS-Tablet · Lizenz.

🛰️ Leitstelle / LiveMap (optional)

Die Leitstelle-App (Leaflet-Karte) zeigt alle Dienstfahrzeuge der eigenen Fraktion live auf einer Karte. Am PC-Terminal ist sie job-gated (das Terminal selbst ist bereits job-beschränkt). Installiert wird sie über den DevStore.

OneSync aktivieren

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

GTA-V-Tileset bereitstellen
pfad
sh_fvs_pc/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_pc/web
npm install
npm run build
App installieren & testen

Im DevStore die App Leitstelle installieren. Test ohne UI:

konsole / chat
/leitstelle      # abonnieren
/fvsunits        # Einheiten-Liste
ℹ️ Die Config Config.Leitstelle (enabled, tickMs, requireGpsMeta, Duty-Resolver) ist identisch zum Tablet – Details siehe FVS-Tablet · Leitstelle.

📹 CCTV-Überwachung

Komplettes Kamera-Überwachungssystem: Kameras als Items platzieren, vorhandene Map-Kameras importieren, live über die CCTV-App beobachten – inklusive Sabotage (Blackout) und Alarm. Die gesamte Ingame-Logik läuft im PC-Script (sh_fvs_pc); das Tablet zeigt nur die App. Standardmäßig auf den Job police beschränkt.

Kamera-Items (4 Stufen)

ItemStufeQualitätBesonderheit
cctv_cam_lowLowlow
cctv_cam_sdSDsd
cctv_cam_highHighhd
cctv_cam_360360°hdRundumsicht

Beim Benutzen öffnet sich das Platzier-Tool: Mausrad/Pfeiltasten wechselt die Prop-Variante, [E] platziert (verbraucht 1 Item), [ESC] bricht ab.

🟦 ox_inventory data/items.lua

items.lua
['cctv_cam_low']  = { label = 'Überwachungskamera (Low)',  weight = 250, stack = true, close = true },
['cctv_cam_sd']   = { label = 'Überwachungskamera (SD)',   weight = 250, stack = true, close = true },
['cctv_cam_high'] = { label = 'Überwachungskamera (HD)',   weight = 300, stack = true, close = true },
['cctv_cam_360']  = { label = 'Überwachungskamera (360°)', weight = 350, stack = true, close = true },

🟩 ESX Legacy / core_inventory — DB items-Tabelle

sql
INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
  ('cctv_cam_low',  'Überwachungskamera (Low)', 250, 0, 1),
  ('cctv_cam_sd',   'Überwachungskamera (SD)',  250, 0, 1),
  ('cctv_cam_high', 'Überwachungskamera (HD)',  300, 0, 1),
  ('cctv_cam_360',  'Überwachungskamera (360°)',350, 0, 1);
ℹ️ Das „usable" registriert das Script selbst (ESX RegisterUsableItem / QBCore CreateUseableItem). Bei ox_inventory genügt die Item-Definition.

Datenbank

Die Tabelle fvs_cctv_cameras legt der PC beim Start automatisch an und rüstet fehlende Spalten (z. B. is360) selbst nach. Für eine manuelle Migration liegt sql/migrations/002_cctv_items_is360.sql bei.

Map-Kameras importieren

In der Nähe vorhandener Kamera-Props stehen und ausführen (ACE command.cctvimport):

konsole / chat
/cctvimport          # Standard-Radius (150 m)
/cctvimport 300      # eigener Radius

Qualität und 360° werden automatisch erkannt; bereits vorhandene Kameras werden übersprungen.

Wichtige Config (Config.Cctv)

KeyStandardBedeutung
jobs{ 'police' }Jobs, die die App sehen/nutzen dürfen
manageJobs{ 'police' }Jobs, die Kameras platzieren/entfernen dürfen
importAdminAce'command.cctvimport'ACE für den Map-Import
adjustAce'command.cctvadjust'ACE für den Kamera-Justier-Modus
blackout.adminCommand'cctvblackout'Befehl für manuellen Blackout
blackout.cutItem'hacking_device'Item zum Kappen der Kabel
alarm.enabledtrueAlarm bei Sabotage
nightvision.enabledtrueNachtsicht (HD-Kameras, 21–6 Uhr)

Admin-Befehle

BefehlACEWirkung
/cctvimport [radius]command.cctvimportVorhandene Map-Kameras importieren
/cctvblackout [minuten]command.cctvblackoutKameras manuell ausschalten (Blackout)
⚠️ Für Blackout (Kabel kappen) und den optionalen Kamera-Hack wird das Item hacking_device benötigt – ggf. in deinem Inventar anlegen.

🕵️ USB-Hack (optional)

Ein mehrstufiges Eindring-Verbrechen: rohen USB-Stick beschaffen → an einem festen Rig entschlüsseln → am Ziel-Terminal hacken. Erfolg gibt eine zeitlich begrenzte Eindringling-Sitzung. Steuerung über Config.Hack.

KeyStandardBedeutung
Config.Hack.enabledtrueHack-System an/aus
Config.Hack.itemName'usb_hack'Inventar-Item (roher USB-Stick)
Config.Hack.sessionDuration240Sekunden Zugriff nach erfolgreichem Hack
Config.Hack.alertJob'police'Job, das den Alarm + Blip erhält
Config.Hack.minCops2 / 3 / 4Mindest-Cops im Dienst je Phase
⚠️ Wird das Hack-System genutzt, muss das Item usb_hack in deinem Inventar existieren. Die festen Entschlüsselungs-Rigs werden per Admin-Befehl (ACE fvs.pc.admin) in der Welt platziert.

⌨️ Befehlsliste

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

Terminal-Verwaltung

BefehlBeschreibung
fvspcadd <job> [grade:N] [label:Name]Terminal an aktueller Position anlegen
fvspcremoveNächstgelegenes Terminal (≤3 m) entfernen
fvspcunlockSperre des nächstgelegenen Terminals aufheben
fvspcmasterTerminal als Verwaltungs-PC markieren (Toggle)
fvspclistAlle angelegten Terminals auflisten
fvspcwhoamiDiagnose: Identifier des Spielers + users-Treffer
fvspcschemaDB-Schema manuell einspielen

Lizenz / FVS (pcfvs)

BefehlBeschreibung
pcfvs setlicense XXXX:YYYYLizenz setzen + verifizieren + speichern
pcfvs statusLizenz-Status anzeigen
pcfvs verifyBestehende Lizenz neu verifizieren
pcfvs showkeyGespeicherten License-Key anzeigen
pcfvs showurlsGeladene URLs anzeigen
pcfvs clearLizenz entfernen