Dependências
Base Five (vRP)
O recurso já vem pré-configurado para a base Five Network (vRP). Toda a integração fica isolada em
server/functions.lua.oxmysql
Obrigatório. O script cria suas próprias tabelas automaticamente no primeiro start (não precisa rodar SQL manual).
five-vehicles
Opcional. Necessário apenas se você usar recompensas do tipo
VEHICLE. A entrega usa o export giveVehicle.O Five Livestream não precisa que você rode nada além do resource em si. A API central de login/streams (que guarda os client secrets de Twitch/Google/Kick/TikTok) já é hospedada pelo Five Network — você só preenche a URL e a chave dessa instalação em
config/server/general.lua, sem instalar nem hospedar nada próprio.O avatar do jogador vem da própria conta vinculada por OAuth. Sem nenhuma conta vinculada ainda, o painel mostra as iniciais do nome.
Instalação do recurso
1
Copie a pasta do recurso
Coloque a pasta
five_livestream dentro do diretório de recursos do seu servidor.2
Configure a API central de login
Preencha
LIVESTREAM_API_URL e LIVESTREAM_API_KEY em config/server/general.lua. Veja Configuração.3
Adapte o functions.lua (se não usar vRP padrão)
O recurso já vem pronto para vRP. Para outro framework, veja a seção Adaptação de framework abaixo.
4
Configure o restante
Jogo/categoria exigida, tag do título, cores e comandos. Veja Configuração.
5
Adicione à server.cfg
Inicie o recurso depois do vrp (e do five-vehicles, se for usar recompensas de veículo).
O banco de dados (6 tabelas: canais, tempo por jogador, metas, resgates, ranking, temporada) é criado automaticamente pelo próprio script ao iniciar. Numa instalação nova (tabelas vazias), o script também já cadastra 5 metas de exemplo (1h a 20h, em gemas) e premiação para as 3 primeiras posições do ranking — só pra não começar com o painel completamente vazio. Edite ou apague pelo próprio painel de admin quando quiser.
Adaptação de framework
Toda a comunicação com o framework está isolada emserver/functions.lua. Nem server/server.lua nem client/client.lua chamam vRP.XXX(...) ou exports[...] de outro resource diretamente. Sempre passam por um export deste arquivo. O arquivo já vem implementado para vRP; para outro framework ou fork, reescreva as funções mantendo o nome e o retorno esperado.
Identidade e permissão do jogador
Identidade e permissão do jogador
Entrega de recompensas
Entrega de recompensas
Recompensas do tipo
COINS não passam por functions.lua: o crédito de gemas roda direto em server/server.lua via oxmysql na tabela accounts (coluna Gemstone), buscando a license pelo getSource/getLicense do adapter. Se o seu banco de contas for diferente, ajuste a função giveCoins em server/server.lua. Recompensas do tipo CAIXA passam pelo mesmo giveItem acima, entregando o item caixa_<rarity>.Catálogo de itens e veículos
Catálogo de itens e veículos
Alimenta o seletor visual de recompensa no painel de admin (foto + nome, com busca e paginação).
Se
five-vehicles não estiver instalado, getVehicleCatalog devolve uma lista vazia e o seletor de veículos simplesmente fica sem opções. O resto do painel continua funcionando normalmente.Performance (StateBags)
Em vez da NUI ficar perguntando pro servidor de tempos em tempos, o servidor empurra atualização só quando o dado muda de verdade, usando statebags do FiveM:livestream_liveStreams(global): lista de “ao vivo agora”, atualizada a cada checagem de Twitch/Kick/YouTube.livestream_analytics(por jogador): tempo total do jogador, atualizado na hora em que ele ganha ou perde tempo. O painel reflete sem esperar o próximo ciclo automático.
Limitações conhecidas
TikTok não tem checagem automática de live
TikTok não tem checagem automática de live
O login/vínculo de conta é OAuth como as demais; só a detecção automática de live ainda não cobre essa plataforma, então não é possível creditar tempo automaticamente para ela.
Cota da API do YouTube
Cota da API do YouTube
Cada busca de “live agora” custa 100 das 10.000 unidades de cota gratuita diária do Google, por isso o intervalo de checagem do YouTube é bem mais espaçado que Twitch/Kick, e escala mal com muitos canais vinculados simultaneamente.

