Installation
Schritt 1 — Download
Nach Ihrem Kauf auf hzscripts.com/shop erhaelt Ihr FiveM Keymaster-Konto zwei separate Assets:
- Melden Sie sich auf keymaster.fivem.net an (oder portal.cfx.re/assets)
- Gehen Sie zu Granted Assets
- Laden Sie beide herunter:
hz_television — das Haupt-Skript
* hz_televisionprops — die 12 DashScreen-Prop-Varianten fuer Fahrzeuge (als dediziertes Asset bereitgestellt, damit Prop-Updates keinen erneuten Download der gesamten Logik-Ressource erzwingen)
hz_television herunterladen, werden die 12 DashScreen-Prop-Modelle nicht gestreamt und die DashScreen-Platzierung bleibt bei lib.requestModel stumm haengen.Schritt 2 — Abhaengigkeiten
Erforderlich
- hz_lib — kostenloses Asset von hzscripts.com/shop. Uebernimmt die Framework- / Inventar- / Target- / Menue- / Benachrichtigungserkennung. Verwenden Sie immer die neueste Version — jede HZ-Television-Version wird mit dem neuesten Bridge-Build getestet. Muss vor HZ-Television starten. Siehe hz_lib Installation.
- HZ-TelevisionProps — separat von Keymaster neben HZ-Television heruntergeladen (siehe Schritt 1). Streamt die 12 DashScreen-Prop-Varianten (
hz_dashscreen+hz_dashscreen_1..11) + deren Kalibrierungs-JSON. Muss vor HZ-Television starten. - Ein Menuesystem — mindestens eines der folgenden:
- Ein SQL-Treiber (erforderlich fuer Persistenz, Konten, Playlists, Verlassens-Cleanup). HZ-Television erkennt beide automatisch beim Start:
Optional
- ox\_target oder qb-target — fuer Fadenkreuz-Interaktion (ansonsten TextUI / DrawText3D-Fallback)
- lb-phone — erforderlich fuer die Begleit-Telefon-App
lb-hztelevision
oxmysql oder mysql-async verwenden und installiert den entsprechenden MySQL.Async-Shim. Sie sehen eine dieser Zeilen in der Serverkonsole beim Start:
[hz_television] SQL compat: detected oxmysql, MySQL.Async shim installed
[hz_television] SQL compat: detected existing MySQL.Async (mysql-async or compatible)
Falls Sie eine rote ERROR: no SQL resource detected-Meldung sehen, stellen Sie sicher, dass ensure oxmysql (oder ensure mysql-async) vor ensure hz_television in Ihrer server.cfg steht.
hz_lib/config.lua und jedes Hz-Script erbt sie. Siehe hz_lib Konfiguration.Schritt 3 — Dateien
- Entpacken Sie beide Archive (
hz_television.zipundhz_televisionprops.zip), die Sie in Schritt 1 von Keymaster heruntergeladen haben - Platzieren Sie beide resultierenden Ordner in Ihrem
resources/-Verzeichnis — ein gemeinsamer Kategorieordner wie[hz-scripts]/haelt alles ordentlich
server/
├── resources/
│ ├── ox_lib/
│ ├── oxmysql/ ← oder mysql-async (beide werden unterstuetzt)
│ ├── [hz-scripts]/
│ │ ├── hz_lib/
│ │ ├── hz_televisionprops/ ← 2. Keymaster-Download (12 DashScreen-Props + calibration.json)
│ │ ├── hz_television/ ← 1. Keymaster-Download (das Haupt-Skript)
│ │ │ ├── client/
│ │ │ ├── server/
│ │ │ ├── html/
│ │ │ ├── config.lua
│ │ │ ├── fxmanifest.lua
│ │ │ └── ...
Schritt 4 — Inventar-Items
HZ-Television wird mit 10 platzierbaren Items geliefert. Vorkonfigurierte Item-Definitionen fuer jedes unterstuetzte Inventar befinden sich in hz_television/items/.
Mitgelieferte Items
| Item | Prop | Beschreibung |
|---|---|---|
hz_tv_s / hz_tv_m / hz_tv_l | hz_tv_* | Smart TV Wandmontage — klein / mittel / gross |
hz_tv_s_stand / hz_tv_m_stand / hz_tv_l_stand | hz_tv_*_stand | Smart TV mit Standfuss — klein / mittel / gross |
curved_screen_s / curved_screen_m / curved_screen_l | prop_curved_screen_* | Gebogene Kinoleinwaende |
hz_dashscreen | hz_dashscreen + 11 Varianten | DashScreen im Fahrzeug (Platzierung ueber Tastatur-Gizmo) |
Fuer ox\_inventory
Oeffnen Sie ox_inventory/data/items.lua und fuegen Sie den Inhalt von hz_television/items/ox_inventory.txt hinzu (10 Eintraege einschliesslich hz_dashscreen).
Beispieleintrag:
['hz_tv_m'] = {
label = 'Smart TV (Medium)',
weight = 12000,
stack = true,
close = true,
description = 'A medium wall-mounted smart TV',
client = {
event = 'hz_television:useItem'
}
},
['hz_dashscreen'] = {
label = 'DashScreen Screen',
weight = 3000,
stack = true,
close = true,
description = 'Dashboard Smart TV — use while sitting in a vehicle',
client = {
event = 'hz_television:useItem'
}
},
Fuer qb-inventory / qs-inventory / ps-inventory
Kopieren Sie den Inhalt der entsprechenden hz_television/items/<inventory>.txt-Datei in die Item-Datei Ihres Inventars.
HZ-Television:useItem, das das Skript abfaengt und zum richtigen Platzierungsfluss weiterleitet (statisches Gizmo fuer TVs, Tastatur-Gizmo im Fahrzeug fuer DashScreen).Schritt 5 — Datenbank (empfohlen)
Aktivieren Sie in config.lua:
Config.Placer = {
Persistence = true, -- platzierte TVs + DashScreens ueberleben Neustarts
MaxPerPlayer = 0, -- 0 = unbegrenzt, N = Limit pro Besitzer-Identifikator
AutoCleanupDays = 0, -- 0 = deaktiviert, N = automatische Loeschung nach N Tagen Inaktivitaet
AutoCleanupInterval = 6, -- Stunden zwischen Cleanup-Zyklen (0 = nur beim Start)
BlockOnRoad = false, -- true = blockiert Prop-Platzierung auf Strassen (DashScreen ausgenommen)
CleanupAdminPermission = 'admin', -- ACE-Berechtigung fuer /tvclean
}
Die folgenden Tabellen werden beim ersten Start automatisch erstellt (alle verwenden CREATE TABLE IF NOT EXISTS + additive ALTER TABLE ADD COLUMN IF NOT EXISTS-Migrationen):
hz_television_placed— statisch platzierte TVs (Wand, Standfuss, gebogen, Werbetafeln)hz_dashscreen_placed— DashScreen-Platzierungen, indiziert nach Fahrzeugkennzeichenhz_tv_users,hz_tv_sessions,hz_tv_favorites,hz_tv_history,hz_tv_playlists,hz_tv_playlist_items— Konto / Login / Favoriten / Verlauf / Playlists (befuellt bei der ersten Smart-TV-Anmeldung)
Manuelle Installation (Fallback — v3.4.3+)
Falls eine Tabelle nicht automatisch erstellt werden kann (MySQL-Benutzer ohne CREATE-Berechtigung, Verbindungsstring zeigt auf falsche Datenbank usw.), sehen Sie direkt nach [hz_television] SQL compat: ... eine rote Fehlermeldung in der Serverkonsole mit dem genauen Tabellennamen + Fehler. Fuehren Sie in diesem Fall die mitgelieferte install.sql manuell aus:
mysql -u <user> -p <database> < resources/[standalone]/hz_television/install.sql
...oder oeffnen Sie hz_television/install.sql in phpMyAdmin / HeidiSQL / DBeaver und fuehren Sie es auf der Datenbank Ihres Servers aus. Starten Sie dann hz_television neu. Das Skript enthaelt nur CREATE TABLE IF NOT EXISTS-Anweisungen, daher ist eine doppelte Ausfuehrung sicher.
Table 'yourdb.hz_tv_sessions' doesn't exist bei der Anmeldung schlaegt jetzt sauber mit einer db_not_ready-Antwort fehl, anstatt abzustuerzen, und das Server-Log verweist auf install.sql. Fruehere Versionen liessen den Sitzungsfluss abstuerzen.Schritt 6 — server.cfg
Fuegen Sie die Ressourcen in Ihre server.cfg in dieser Reihenfolge ein:
# Abhaengigkeiten (muessen VOR hz_lib starten)
ensure oxmysql # oder `ensure mysql-async` — HZ-Television unterstuetzt beide
ensure ox_lib # oder qb-menu + qb-input
ensure ox_target # oder qb-target (optional)
# Framework (falls zutreffend)
ensure qbx_core # oder ensure qb-core, oder ensure es_extended
# ensure qb-core
# ensure es_extended
# HZ-Scripts — Reihenfolge ist wichtig
ensure hz_lib # uebernimmt automatische Erkennung
ensure hz_televisionprops # streamt die 12 DashScreen-Prop-Varianten (separater Keymaster-Download)
ensure hz_television # die TV-Logik-Ressource
hz_lib, hz_televisionprops und Ihr SQL-Treiber (oxmysql oder mysql-async) muessen alle vor hz_television starten. Falls hz_televisionprops nicht mit ensure geladen wird, werden die 12 DashScreen-Varianten-Modelle nicht gestreamt und die DashScreen-Platzierung scheitert stumm bei lib.requestModel. Falls kein SQL-Treiber geladen ist, funktioniert die Persistenz stumm nicht mehr.Schritt 7 — Konfiguration
Oeffnen Sie hz_television/config.lua und passen Sie die Einstellungen an. Siehe Konfiguration fuer Details zu jeder Option.
Config.Locale—'en'/'fr'/'es'/'de'Config.Permissions— wer/tvcfgverwenden, TVs platzieren und TVs nutzen darfConfig.Placer.Persistence—truefuer Datenbank-SpeicherungConfig.Placer.BlockOnRoad—truefalls Platzierung auf Strassen blockiert werden sollConfig.Placer.MaxPerPlayer+Config.Placer.AutoCleanupDays— VerlassensschutzConfig.BillboardUseSmartTV— welche Werbetafel-/Kinomodelle die vollstaendige Smart-TV-Oberflaeche verwenden sollen (Standard: die 3 gebogenen Kino-Props + 2 grosse Vanilla-Werbetafeln)
Schritt 8 — Ueberpruefung
- Starten Sie den Server
- Die Konsole sollte (in dieser Reihenfolge) anzeigen:
[hz_lib] <framework> detected, <inventory> detected, ...
* [hz_televisionprops] shared/models.lua loaded
[hz_television] SQL compat: detected oxmysql, MySQL.Async shim installed (oder detected existing MySQL.Async (mysql-async or compatible))*
* [hz_television] v3.4.1 loaded successfully
* [hz_television] Database tables initialized
- Verbinden Sie sich im Spiel
- Gehen Sie zu einem TV-Prop (Wandfernseher, gebogene Kinoleinwand, oder verwenden Sie das Item
hz_dashscreenin einem Fahrzeug) - Waehlen Sie Power On -> Smart TV -> fuegen Sie eine Video-URL ein
Schnelle Fehlerbehebung
Das Skript startet nicht
Pruefen Sie:
- Die Ordner heissen korrekt
hz_television,hz_televisionprops,hz_lib(Gross-/Kleinschreibung beachten) - Alle drei sind in der
server.cfgmitensurein der richtigen Reihenfolge geladen (Bridge -> TelevisionProps -> Television) - Ihre FiveM-Lizenz ist auf Keymaster gueltig
- Ein Menuesystem (
ox_liboderqb-menu) wird vor hz_lib mitensuregeladen
Fehler "Framework not detected"
Die Erkennung wird von hz_lib uebernommen. Stellen Sie sicher:
es_extended,qb-coreoderqbx_corewird mitensurevor hz_lib geladen- hz_lib wird mit
ensurevor HZ-Television geladen - Pruefen Sie die hz_lib-Konsolenzeile zur Bestaetigung der automatischen Erkennung
- Erzwingen Sie bei Bedarf ein Framework im
config.luavon hz_lib — z. B.HZBridge.Framework = 'esx'
DashScreen-Platzierung scheitert stumm
Haeufigste Ursache: hz_televisionprops ist nicht gestartet. lib.requestModel(hz_dashscreen) haengt endlos, weil das Modell nicht gestreamt wird.
hz_televisionprops ist ein separater Download auf Keymaster — es ist nicht in hz_television enthalten. Bestaetigen Sie:
- Beide Assets sind in Ihren Keymaster Granted Assets gelistet und wurden heruntergeladen
- Der Ordner
hz_televisionpropsbefindet sich nebenhz_televisioninresources/ ensure hz_televisionpropssteht in Ihrerserver.cfgvorensure hz_television- Die Ressource wird in der Serverkonsole als
startedaufgefuehrt
Platzierte TVs werden nach Neustart nicht gespeichert / Fehler "no SQL resource detected"
HZ-Television benoetigt entweder oxmysql oder mysql-async im laufenden Betrieb. Beim Start zeigt die Serverkonsole eine der folgenden Meldungen:
[hz_television] SQL compat: detected oxmysql, MySQL.Async shim installed
[hz_television] SQL compat: detected existing MySQL.Async (mysql-async or compatible)
[hz_television] ERROR: no SQL resource detected (oxmysql or mysql-async)
Falls die rote Fehlermeldung erscheint:
- Stellen Sie sicher, dass
ensure oxmysql(oderensure mysql-async) in derserver.cfgsteht - Es muss vor
ensure hz_televisionplatziert sein — wenn die SQL-Ressource danach laedt, wird die Runtime-Erkennung verfehlt - Beide Treiber werden unterstuetzt — waehlen Sie einen; fuehren Sie nicht beide gleichzeitig aus
Fehler "Table 'yourdb.hz_tv_sessions' doesn't exist" wenn ein Spieler sich am Smart TV anmeldet
Der automatische Erstellungsschritt konnte eine oder mehrere Tabellen nicht anlegen. Sie sehen rote Zeilen direkt nach SQL compat: detected ... waehrend des Starts:
[hz_television] CREATE TABLE hz_tv_sessions FAILED: <error>
[hz_television] Import hz_television/install.sql manually to create the missing tables.
Behebung (v3.4.3+):
mysql -u <user> -p <database> < resources/[standalone]/hz_television/install.sql
Oder oeffnen Sie hz_television/install.sql in phpMyAdmin / HeidiSQL / DBeaver und fuehren Sie es auf der Datenbank Ihres Servers aus. Starten Sie dann hz_television neu. Die Datei enthaelt nur CREATE TABLE IF NOT EXISTS-Anweisungen — eine doppelte Ausfuehrung ist sicher.
Haeufige Ursachen fuer fehlgeschlagene automatische Erstellung:
- Der in
set mysql_connection_stringkonfigurierte MySQL-Benutzer hat keineCREATE-Berechtigung auf der Zieldatenbank -> vergeben SieCREATE, ALTER, INDEXund starten Sie neu - Der Verbindungsstring zeigt auf eine Datenbank, die der Benutzer lesen, aber nicht beschreiben kann -> ueberpruefen Sie den Datenbanknamen
- MySQL laeuft im STRICT-Modus mit inkompatiblen Sitzungseinstellungen ->
install.sqlsetzt explizitSQL_MODE = ''am Anfang, um dies zu umgehen
Falls Sie SQL Error 1067 (
Invalid default value for 'last_login') oder SQL Error 1075 (Incorrect table definition; there can be only one auto column and it must be defined as a key) beim Import von install.sql sehen, verwenden Sie eine aeltere Version von HZ-Television. Beide Fehler wurden in v3.4.6 behoben — aktualisieren Sie und fuehren Sie die neue install.sql erneut aus.
Ab v3.4.3+ schlaegt der Anmeldefluss jetzt sauber mit db_not_ready fehl, wenn Tabellen fehlen, anstatt mitten in der Abfrage abzustuerzen.
Der Bildschirm bleibt schwarz / nichts wird angezeigt
- Verwenden Sie
/tvcfgin der Naehe des TVs, um Scale/Offset/Rotation zu kalibrieren (die Live-Cyan-Vorschau zeigt genau, wo sich die Cursor-Klickzone befindet) - Testen Sie zuerst mit einer einfachen direkten Videodatei (kein Livestream)
- Pruefen Sie die F8-Konsole auf JavaScript-Fehler
- Fuer grosse Vanilla-Werbetafeln stellen Sie sicher, dass das Modell in
Config.BillboardUseSmartTVsteht (die automatische Render-Target-Erkennung in v3.3 uebernimmt dies)
Kein Ton oder globaler Ton
- Erhoehen Sie
Config.Display.MaxSoundDistanceinconfig.lua - Stellen Sie sicher, dass der TV eingeschaltet ist
- Gehen Sie naeher heran (die Lautstaerke nimmt zwischen
MinSoundDistanceundMaxSoundDistanceab) - Speziell fuer DashScreen: Audio hat eine Kabinen-Reichweite von 5 m mit Web-Audio-Okklusion. Fahrer + Beifahrer hoeren sauberen, ungefilterten Ton; Zuhoerer ausserhalb erhalten einen Lowpass-gefilterten und lautstaerkegedaempften Ton
TV-Items erscheinen nicht im Inventar
- Fuegen Sie die Items aus
hz_television/items/<inventory>.txtin die Item-Datei Ihres Inventars ein - Starten Sie den Server komplett neu, nachdem Sie Items hinzugefuegt haben (nicht nur die Ressource)
- Fuer ox\_inventory ist der Pfad
ox_inventory/data/items.lua - Fuer QBCore/QBox ist es
qb-core/shared/items.luaoderqbx_core/shared/items.lua
