Instalacao
Etapa 1 — Download
Apos sua compra em hzscripts.com/shop, sua conta FiveM Keymaster recebe dois assets separados:
- Faca login em keymaster.fivem.net (ou portal.cfx.re/assets)
- Va em Granted Assets
- Baixe os dois:
hz_television — o script principal
* hz_televisionprops — as 12 variantes de props DashScreen no veiculo (entregues como um asset dedicado para que atualizacoes de props nao forcem um novo download do recurso logico completo)
hz_television, os 12 modelos de props DashScreen nao serao transmitidos e a colocacao de DashScreen ficara bloqueada silenciosamente em lib.requestModel.Etapa 2 — Dependencias
Obrigatorias
- hz_lib — asset gratuito em hzscripts.com/shop. Gerencia a deteccao de framework / inventario / target / menu / notificacao. Use sempre a versao mais recente — cada release do HZ-Television e testada com a versao mais recente do Bridge. Deve iniciar antes do HZ-Television. Veja Instalacao hz_lib.
- HZ-TelevisionProps — baixado separadamente do Keymaster ao lado do HZ-Television (veja Etapa 1). Transmite as 12 variantes de props DashScreen (
hz_dashscreen+hz_dashscreen_1..11) + seu JSON de calibracao. Deve iniciar antes do HZ-Television. - Um sistema de menu — pelo menos um dos seguintes:
- Um driver SQL (necessario para persistencia, contas, playlists, limpeza de abandono). HZ-Television detecta automaticamente os dois na inicializacao:
Opcionais
- ox\_target ou qb-target — para interacao por mira (caso contrario fallback TextUI / DrawText3D)
- lb-phone — necessario para o aplicativo companheiro de celular
lb-hztelevision
oxmysql ou mysql-async e instala o shim MySQL.Async correspondente. Voce vera uma destas linhas no console do servidor na inicializacao:
[hz_television] SQL compat: detected oxmysql, MySQL.Async shim installed
[hz_television] SQL compat: detected existing MySQL.Async (mysql-async or compatible)
Se voce ver um ERROR: no SQL resource detected em vermelho, certifique-se de que ensure oxmysql (ou ensure mysql-async) esta antes de ensure hz_television no seu server.cfg.
hz_lib/config.lua e cada Hz-Script herda. Veja Configuracao hz_lib.Etapa 3 — Arquivos
- Extraia os dois arquivos (
hz_television.zipehz_televisionprops.zip) baixados do Keymaster na Etapa 1 - Coloque as duas pastas resultantes no seu diretorio
resources/— agrupa-las em uma pasta de categoria comum como[hz-scripts]/ajuda a manter tudo organizado
server/
├── resources/
│ ├── ox_lib/
│ ├── oxmysql/ ← ou mysql-async (ambos sao suportados)
│ ├── [hz-scripts]/
│ │ ├── hz_lib/
│ │ ├── hz_televisionprops/ ← 2o download do Keymaster (12 props DashScreen + calibration.json)
│ │ ├── hz_television/ ← 1o download do Keymaster (o script principal)
│ │ │ ├── client/
│ │ │ ├── server/
│ │ │ ├── html/
│ │ │ ├── config.lua
│ │ │ ├── fxmanifest.lua
│ │ │ └── ...
Etapa 4 — Itens de inventario
O HZ-Television vem com 10 itens colocaveis prontos para uso. Definicoes de itens pre-configuradas para cada inventario suportado estao em hz_television/items/.
Itens inclusos
| Item | Prop | Descricao |
|---|---|---|
hz_tv_s / hz_tv_m / hz_tv_l | hz_tv_* | Smart TVs de parede — pequena / media / grande |
hz_tv_s_stand / hz_tv_m_stand / hz_tv_l_stand | hz_tv_*_stand | Smart TVs com suporte — pequena / media / grande |
curved_screen_s / curved_screen_m / curved_screen_l | prop_curved_screen_* | Telas de cinema curvas |
hz_dashscreen | hz_dashscreen + 11 variantes | DashScreen no veiculo (colocado via gizmo de teclado) |
Para ox\_inventory
Abra ox_inventory/data/items.lua e adicione o conteudo de hz_television/items/ox_inventory.txt (10 entradas incluindo hz_dashscreen).
Exemplo de entrada:
['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'
}
},
Para qb-inventory / qs-inventory / ps-inventory
Copie o conteudo do arquivo hz_television/items/<inventory>.txt correspondente para o arquivo de itens do seu inventario.
HZ-Television:useItem, que o script intercepta e redireciona para o fluxo de colocacao correto (gizmo estatico para TVs, gizmo de teclado no veiculo para DashScreen).Etapa 5 — Banco de dados (recomendado)
Ative no config.lua:
Config.Placer = {
Persistence = true, -- TVs + DashScreens colocados sobrevivem ao reinicio
MaxPerPlayer = 0, -- 0 = ilimitado, N = limite por identificador do proprietario
AutoCleanupDays = 0, -- 0 = desativado, N = remocao automatica apos N dias de inatividade
AutoCleanupInterval = 6, -- horas entre os ciclos de limpeza (0 = apenas na inicializacao)
BlockOnRoad = false, -- true = bloqueia colocacao de props nas estradas (DashScreen isento)
CleanupAdminPermission = 'admin', -- permissao ACE para /tvclean
}
As seguintes tabelas sao criadas automaticamente na primeira inicializacao (todas usam CREATE TABLE IF NOT EXISTS + migracoes aditivas ALTER TABLE ADD COLUMN IF NOT EXISTS):
hz_television_placed— TVs estaticas colocadas (parede, suporte, curvas, paineis)hz_dashscreen_placed— colocacoes DashScreen indexadas por placa do veiculohz_tv_users,hz_tv_sessions,hz_tv_favorites,hz_tv_history,hz_tv_playlists,hz_tv_playlist_items— conta / login / favoritos / historico / playlists (alimentados no primeiro login Smart TV)
Instalacao manual (fallback — v3.4.3+)
Se uma tabela nao puder ser criada automaticamente (usuario MySQL sem permissao CREATE, string de conexao apontando para o banco errado, etc.), voce vera um erro vermelho no console do servidor logo apos [hz_television] SQL compat: ... com o nome exato da tabela + o erro. Nesse caso, execute o arquivo install.sql fornecido manualmente:
mysql -u <user> -p <database> < resources/[standalone]/hz_television/install.sql
...ou abra hz_television/install.sql no phpMyAdmin / HeidiSQL / DBeaver e execute-o no banco de dados do seu servidor. Depois reinicie hz_television. O script contem apenas instrucoes CREATE TABLE IF NOT EXISTS, entao executa-lo duas vezes e seguro.
Table 'yourdb.hz_tv_sessions' doesn't exist no login agora falha de forma limpa com uma resposta db_not_ready em vez de crashar, e o log do servidor direciona voce para install.sql. Versoes anteriores faziam o fluxo de sessao crashar.Etapa 6 — server.cfg
Adicione os recursos ao seu server.cfg nesta ordem:
# Dependencias (devem iniciar ANTES do hz_lib)
ensure oxmysql # ou `ensure mysql-async` — HZ-Television suporta ambos
ensure ox_lib # ou qb-menu + qb-input
ensure ox_target # ou qb-target (opcional)
# Framework (se aplicavel)
ensure qbx_core # ou ensure qb-core, ou ensure es_extended
# ensure qb-core
# ensure es_extended
# HZ-Scripts — a ordem importa
ensure hz_lib # gerencia a deteccao automatica
ensure hz_televisionprops # transmite as 12 variantes de props DashScreen (download Keymaster separado)
ensure hz_television # o recurso logico de TV
hz_lib, hz_televisionprops e seu driver SQL (oxmysql ou mysql-async) devem todos iniciar antes do hz_television. Se hz_televisionprops nao estiver garantido, os 12 modelos de variantes DashScreen nao serao transmitidos e a colocacao de DashScreen falhara silenciosamente em lib.requestModel. Se nenhum driver SQL estiver garantido, a persistencia para de funcionar silenciosamente.Etapa 7 — Configuracao
Abra hz_television/config.lua e adapte os parametros. Veja Configuracao para cada opcao em detalhe.
Config.Locale—'en'/'fr'/'es'/'de'Config.Permissions— quem pode usar/tvcfg, colocar TVs, usar as TVsConfig.Placer.Persistence—truepara ativar a persistencia no bancoConfig.Placer.BlockOnRoad—truese voce quiser bloquear colocacao nas estradasConfig.Placer.MaxPerPlayer+Config.Placer.AutoCleanupDays— protecao de abandonoConfig.BillboardUseSmartTV— quais modelos de paineis/cinema devem usar a interface Smart TV completa (padrao: os 3 props de cinema curvos + 2 grandes paineis vanilla)
Etapa 8 — Verificacao
- Inicie o servidor
- O console deve exibir (nesta ordem):
[hz_lib] <framework> detected, <inventory> detected, ...
* [hz_televisionprops] shared/models.lua loaded
[hz_television] SQL compat: detected oxmysql, MySQL.Async shim installed (ou detected existing MySQL.Async (mysql-async or compatible))*
* [hz_television] v3.4.1 loaded successfully
* [hz_television] Database tables initialized
- Conecte-se ao jogo
- Aproxime-se de um prop de TV (TV de parede, tela de cinema curva, ou use o item
hz_dashscreenem um veiculo) - Selecione Power On → Smart TV → cole uma URL de video
Solucao rapida de problemas
O script nao inicia
Verifique:
- As pastas estao corretamente nomeadas
hz_television,hz_televisionprops,hz_lib(sensivel a maiusculas/minusculas) - Os tres estao com
ensurenoserver.cfgna ordem correta (Bridge → TelevisionProps → Television) - Sua licenca FiveM e valida no Keymaster
- Um sistema de menu (
ox_libouqb-menu) esta comensureantes do hz_lib
Erro "Framework not detected"
A deteccao e gerenciada pelo hz_lib. Certifique-se de que:
es_extended,qb-coreouqbx_coreesta comensureantes do hz_lib- hz_lib esta com
ensureantes do HZ-Television - Verifique a linha do console do hz_lib para confirmar a deteccao automatica
- Force um framework se necessario no
config.luado hz_lib — ex.HZBridge.Framework = 'esx'
A colocacao de DashScreen falha silenciosamente
Causa mais comum: hz_televisionprops nao esta iniciado. lib.requestModel(hz_dashscreen) fica bloqueado indefinidamente porque o modelo nao esta sendo transmitido.
hz_televisionprops e um download separado no Keymaster — nao esta incluso com hz_television. Confirme:
- Os dois assets estao listados nos seus Granted Assets do Keymaster e foram baixados
- A pasta
hz_televisionpropsesta ao lado dehz_televisionemresources/ ensure hz_televisionpropsesta no seuserver.cfgantes deensure hz_television- O recurso esta listado como
startedno console do servidor
As TVs colocadas nao sao salvas apos reinicio / Erro "no SQL resource detected"
HZ-Television precisa de oxmysql ou mysql-async em funcionamento. Na inicializacao, o console do servidor exibe uma das seguintes mensagens:
[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)
Se voce receber o erro vermelho:
- Certifique-se de que
ensure oxmysql(ouensure mysql-async) esta noserver.cfg - Deve estar posicionado antes de
ensure hz_television— se o recurso SQL carregar depois, a deteccao em runtime o perde - Ambos os drivers sao suportados — escolha um; nao execute os dois simultaneamente
Erro "Table 'yourdb.hz_tv_sessions' doesn't exist" quando um jogador se conecta em uma Smart TV
A etapa de criacao automatica nao conseguiu construir uma ou mais tabelas. Voce vera linhas vermelhas logo apos SQL compat: detected ... durante a inicializacao:
[hz_television] CREATE TABLE hz_tv_sessions FAILED: <error>
[hz_television] Import hz_television/install.sql manually to create the missing tables.
Correcao (v3.4.3+):
mysql -u <user> -p <database> < resources/[standalone]/hz_television/install.sql
Ou abra hz_television/install.sql no phpMyAdmin / HeidiSQL / DBeaver e execute-o no banco de dados do seu servidor. Depois reinicie hz_television. O arquivo contem apenas instrucoes CREATE TABLE IF NOT EXISTS — executa-lo duas vezes e seguro.
Causas comuns da falha na criacao automatica:
- O usuario MySQL configurado em
set mysql_connection_stringnao tem permissaoCREATEno banco de destino → concedaCREATE, ALTER, INDEXe reinicie - A string de conexao aponta para um banco que o usuario pode ler mas nao escrever → verifique o nome do banco
- MySQL esta rodando em modo STRICT com parametros de sessao incompativeis →
install.sqldefine explicitamenteSQL_MODE = ''no topo para contornar esse problema
Se voce ver SQL Error 1067 (
Invalid default value for 'last_login') ou SQL Error 1075 (Incorrect table definition; there can be only one auto column and it must be defined as a key) ao importar install.sql, voce esta em uma versao antiga do HZ-Television. Ambos os erros foram corrigidos na v3.4.6 — atualize e re-execute o novo install.sql.
Na v3.4.3+, o fluxo de login agora falha de forma limpa com db_not_ready quando as tabelas estao ausentes, em vez de crashar no meio da consulta.
A tela fica preta / sem exibicao
- Use
/tvcfgperto da TV para calibrar Scale/Offset/Rotation (o preview ciano ao vivo mostra exatamente onde esta a zona de clique do cursor) - Teste primeiro com um simples arquivo de video direto (nao um livestream)
- Verifique o console F8 para erros JavaScript
- Para grandes paineis vanilla, certifique-se de que o modelo esta em
Config.BillboardUseSmartTV(a deteccao automatica do render target na v3.3 os gerencia)
Sem som ou som global
- Aumente
Config.Display.MaxSoundDistancenoconfig.lua - Certifique-se de que a TV esta ligada
- Aproxime-se (o volume diminui entre
MinSoundDistanceeMaxSoundDistance) - Para o DashScreen especificamente: o audio tem alcance de cabine de 5 m com oclusao Web Audio. O motorista + passageiros tem som limpo e completo; ouvintes externos recebem som filtrado e atenuado
Os itens de TV nao aparecem no inventario
- Adicione os itens de
hz_television/items/<inventory>.txtno arquivo de itens do seu inventario - Reinicie o servidor completamente apos adicionar os itens (nao apenas o recurso)
- Para ox\_inventory o caminho e
ox_inventory/data/items.lua - Para QBCore/QBox e
qb-core/shared/items.luaouqbx_core/shared/items.lua
