Skip to main content

Dependências

Inicie todas as dependências antes do Five Game.

vRP

O recurso carrega @vrp/lib/utils.lua e usa o framework para identidade, saldo e permissões. Toda a integração fica isolada em um único arquivo.

oxmysql

Guarda o perfil e o ranking dos jogadores. A tabela é criada sozinha na primeira inicialização.

xsound

Responsável pelos sons posicionais da partida, como os efeitos da C4 no Plante/Desarme.

pma-voice

Coloca cada time em um canal de rádio próprio durante a partida. Adaptável em client/class/adapter.lua.
Dois recursos são detectados automaticamente e usados apenas se estiverem rodando: five-skins, que aplica a skin equipada nas armas da partida, e PL_PROTECT, que registra as armas entregues no anticheat. Sem eles, o Five Game segue o fluxo padrão.

Instalação do recurso

1

Copie a pasta do recurso

O pacote vem com a pasta [five_game], contendo five-game e o xsound. Coloque-a dentro do diretório de recursos do seu servidor (por exemplo resources/).A pasta five-game/stream traz os mapas das arenas e o modelo da granada de fumaça. Mantenha-a junto do recurso.
2

Informe o token de licença

Abra o arquivo token.lua na raiz do recurso e substitua o valor pelo token recebido na compra.
token.lua
3

Configure o recurso

Edite shared/config.lua conforme a página de Configuração. É onde ficam comando, teclas, mapas, modos de armas, economia, loja, duelo e apostas.
4

Adicione à server.cfg

Garanta que o Five Game seja iniciado depois das dependências.
5

Confira o console

Na inicialização, o recurso valida a licença e imprime o status no console, com a data de expiração ou o aviso de licença vitalícia.
Sem a autenticação da licença, a API interna do recurso não responde: o tablet abre, mas nenhuma partida é criada ou iniciada.

Banco de dados

O Five Game cria a tabela five_game_profiles automaticamente quando o oxmysql fica pronto. Não é preciso importar nenhum .sql.

Integração com o framework

As funções que conversam com o seu framework ficam em server/class/framework.lua. A versão padrão já vem pronta para vRP. Nenhum outro arquivo chama o framework diretamente — para adaptar a outra base, reescreva apenas as funções abaixo mantendo a mesma assinatura.
Usadas para exibir nomes no lobby, no kill feed e no ranking, e para validar as apostas.
Chamadas apenas quando a partida tem aposta. Uma cobra o valor no início, a outra paga o prêmio aos vencedores.
Se você não usa apostas, basta deixar matches.maxBetValue baixo ou orientar os jogadores a criar partidas sem aposta. As funções de dinheiro só são chamadas quando há valor em disputa.
Libera o administrador a espectar partidas criadas com espectadores desativados. Troque pela checagem de permissão da sua base.
Quando alguma dessas funções falha, o recurso avisa no console com o prefixo [framework.lua] em vez de derrubar a partida. Use esse aviso para achar o ponto que ficou fora do padrão na adaptação.

Pontos de adaptação (server)

O arquivo server/class/adapter.lua reúne o que costuma variar de servidor para servidor: entrada na partida, snapshot do jogador, entrega de armas e skins.
adapter.canJoin(source) decide se o jogador está apto a entrar. A regra padrão impede entrar fora do mundo principal ou com vida muito baixa. Adapte para incluir restrições do seu servidor, como estar preso, algemado ou em outra atividade.
adapter.savePlayerInfos guarda vida, colete, posição, bucket e inventário antes da partida, liga as statebags do jogador e desliga o HUD externo pelo evento hud:Active. adapter.applyPlayerInfos desfaz tudo ao sair.
Se o HUD da sua base usa outro evento para ser escondido, troque essas duas chamadas. O restante do snapshot funciona sem alterações.
Três funções controlam as armas da partida: givePlayerWeapons (loadout do round), givePlayerWeapon (compra na loja ou arma pega do chão) e removePlayerWeapon (venda ou troca).Quando o recurso PL_PROTECT está rodando, elas registram as armas no anticheat antes do fluxo padrão. Se você usa outro anticheat, troque a checagem e os exports["PL_PROTECT"] pelos equivalentes dele.
adapter.getWeaponSkin(passport, weaponName) retorna a skin equipada do jogador. Sem o recurso five-skins rodando, retorna nil e o jogador recebe a arma base.

Pontos de adaptação (client)

O arquivo client/class/adapter.lua concentra a integração com o rádio e com o sistema de skins.
adapter.setRadio(radio) coloca o jogador no canal do time ao entrar na partida e o remove ao sair. Troque o pma-voice pelo seu recurso de voz mantendo a assinatura.
adapter.applyWeaponSkin(weaponName) é chamado depois de toda entrega de arma. Sem o five-skins, o evento simplesmente não tem handler.
Durante a partida o jogador é movido para um routing bucket isolado e tem vida, colete, posição e inventário guardados. Ao sair, tudo é restaurado automaticamente. Você não precisa tratar isso manualmente.

Próximos passos

Configuração

Ajuste comando, teclas, mapas, economia, loja e duelo.

Exports

Use isPlayingGame para liberar checagens da sua base durante a partida.