> For the complete documentation index, see [llms.txt](https://hz-script.gitbook.io/hz-script-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hz-script.gitbook.io/hz-script-docs/scripts/hz-television.md).

# HZ-Television

{% embed url="<https://www.youtube.com/watch?v=8FtW4lCHC2E>" %}

## Overview

**HZ-Television** turns every interactive screen on your FiveM server into a fully functional Smart TV — including wall-mounted TVs, curved cinema screens, vanilla GTA V huge billboards, and the **dashboard of any vehicle** via the CarPlay feature. Unlimited simultaneous screens, 14 video platforms, persistent account with favorites & history, real-time multi-player sync, and a free-cursor raycast interaction mode.

### Key Features

* **Unlimited Multi-TV** — no more 5-screen cap (removed in v2.3 with the DrawSpritePoly rendering engine). Every nearby TV can play its own content
* **9 original 3D props** streamed with the resource — 3 wall TVs + 3 stand TVs + 3 curved cinema screens. No external packs required
* **CarPlay (v3.2)** — mount a Smart TV on any vehicle dashboard via the `hz_carplay` item + in-vehicle keyboard gizmo. 12 texture-isolated variants so every car gets its own independent content
* **Cabin audio occlusion (v3.3)** — Web Audio pipeline inside the DUI simulates RAGE's native vehicle sound filtering (lowpass + bass shelf + per-door state)
* **Cylindrical cursor raycast (v3.3)** — true ray ↔ cylinder math for pixel-perfect clicks on curved cinema screens. Live preview overlay during `/tvcfg`
* **SmartTV on billboards & cinema (v3.3)** — every screen type runs the same Smart TV UI; render-target auto-detection fixes vanilla GTA V huge billboards
* **Road-placement guard (v3.4)** — opt-in red-outline preview blocks placing props on roads. CarPlay in-vehicle placement is exempt
* **Abandon protection (v3.4)** — `MaxPerPlayer` + `AutoCleanupDays` + `/tvclean` admin command stop long-running servers from filling up with TVs owned by inactive players
* **Routing bucket aware** — TVs and billboards are fully isolated per instance (jails, apartments, jobs, events)
* **Real-time video sync** — all players near the same TV see the same frame (5 s heartbeat, 1.5 s drift tolerance, 0.1 s precision, instant seek/play/pause)
* **Account system + personal playlist** — login from any TV, save favorites / history / per-user settings, build a looping queue with per-item duration
* **LB Phone companion app** (`lb-hztelevision`) — remote any nearby TV from your phone, streamer-mode mute, local-media browser
* **Live `/tvcfg` calibrator** — localized in en/fr/es/de (v3.3), reach distance 25 m for huge billboards

### Supported Platforms (14)

* YouTube (videos + livestreams) · Twitch (native SDK) · Kick · Bilibili · Rumble · Odysee · Streamable · Facebook Video · Youku
* Direct video — MP4, WebM, OGG, MOV · M3U8 / HLS streams · Images (PNG / JPG / GIF)
* Browser mode (any URL) · automatic fallback: unknown URL → native video → browser iframe

**Twitch:** volume, mute, pause and play are controlled via the native Twitch Player API.

### Multi-Framework — Auto Detection

All framework / target / menu / notification / inventory detection is centralized in [HZ-Bridge](/hz-script-docs/free-tools/hz-bridge.md). Configure once there, every Hz-Script inherits.

| System            | Supported Options                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Framework**     | QBCore, QBox, ESX, Standalone                                                                                                  |
| **Target**        | ox\_target, qb-target, TextUI mode                                                                                             |
| **Menu**          | ox\_lib, qb-menu + qb-input                                                                                                    |
| **Notifications** | ox\_lib, QBCore, ESX, native                                                                                                   |
| **Inventory**     | ox\_inventory, qb-inventory, qs-inventory, ps-inventory, codem-inventory, origen\_inventory, core\_inventory, tgiann-inventory |
| **Database**      | oxmysql (optional — required for account, playlist, TV persistence, abandon-cleanup)                                           |

### Performance

| Metric                         | Value                                  |
| ------------------------------ | -------------------------------------- |
| Client idle                    | \~0.01 ms                              |
| Client — 6 TVs on screen       | \~0.03 ms (cached DrawSpritePoly)      |
| Server                         | \~0.00 ms                              |
| Simultaneous TVs               | Unlimited (no engine cap since v2.3)   |
| Simultaneous CarPlays / client | 12 nearest rendered (unlimited placed) |

### Requirements

* FiveM server (latest artifacts recommended)
* [**HZ-Bridge**](/hz-script-docs/free-tools/hz-bridge.md) — **latest version required** — handles all framework / inventory / target / menu / notification detection. Older versions are missing exports HZ-Television v3.4 depends on, so always update HZ-Bridge when you update HZ-Television
* **HZ-PropsCarplay** — **downloaded as a separate Keymaster asset alongside HZ-Television**, ships the 12 CarPlay prop variants (split in v3.4 so CarPlay asset updates no longer touch the logic resource)
* `ox_lib` (recommended) or `qb-menu` + `qb-input`
* `oxmysql` **or** `mysql-async` — required for persistence, accounts, playlist, `AutoCleanupDays`. HZ-Television auto-detects which one is running (v3.4.1+) and works with both
* `ox_target` or `qb-target` — optional (TextUI fallback available)
* `lb-phone` — optional (required for the phone remote app `lb-hztelevision`)

{% hint style="warning" %}
**Always update HZ-Bridge to the latest version alongside HZ-Television.** HZ-Bridge is a free shared dependency and every Hz-Script release is tested against the latest Bridge build. Mismatched versions will surface as "export not found" or missing detection at boot.
{% endhint %}

***

{% hint style="info" %}
**Need help?** Join our [Discord](https://discord.gg/D2jMNswvBM) and open a ticket in #support.
{% endhint %}

## Quick Navigation

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Installation</strong></td><td>Step-by-step setup — dependencies, items, server.cfg, database</td><td><a href="/pages/hiPPVkyUdbnTX3ugwzcn">/pages/hiPPVkyUdbnTX3ugwzcn</a></td></tr><tr><td><strong>Configuration</strong></td><td>TV models, CarPlay, road guard, abandon protection, permissions, channels</td><td><a href="/pages/oOdc9a98eIy0wssNsME4">/pages/oOdc9a98eIy0wssNsME4</a></td></tr><tr><td><strong>Exports &#x26; Events</strong></td><td>Control TVs from other scripts — TV, playlist, streamer mode, local media</td><td><a href="/pages/qQQ2JWTzQradVDyRSKxr">/pages/qQQ2JWTzQradVDyRSKxr</a></td></tr><tr><td><strong>Changelog</strong></td><td>Version history — v3.4 → v1.x</td><td><a href="/pages/w0dmZauFTjToN5Q0wkTi">/pages/w0dmZauFTjToN5Q0wkTi</a></td></tr><tr><td><strong>FAQ</strong></td><td>Common questions — calibration, CarPlay, sync, black screens</td><td><a href="/pages/XFm6uwEIym3C9lFK1vGZ">/pages/XFm6uwEIym3C9lFK1vGZ</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hz-script.gitbook.io/hz-script-docs/scripts/hz-television.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
