Skip to main content

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 em server/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.
Em outros frameworks, getUserId deve retornar o identificador permanente do jogador (identifier no ESX, citizenid no QBCore): é essa chave que fica salva nas tabelas do script, não o source.
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>.
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

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.
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.