Skip to main content

Dependências

pma-voice (adaptado)

Versão do pma-voice fornecida com o script, já adaptada para integração com o Five Radio. Substitui o pma-voice padrão do servidor.

Qualquer framework

A integração com o framework é feita adaptando config/functions.lua, sem acoplamento direto.
O Five Radio precisa de pequenas adaptações no pma-voice para funcionar. Use a versão fornecida com o script ou aplique as alterações manualmente no seu pma-voice — veja a seção Adaptação do pma-voice.
O Five Radio não cria tabelas no banco de dados. Nenhuma configuração de MySQL é necessária.

Instalação do Recurso

1

Substitua o pma-voice

Remova o pma-voice atual do servidor e coloque no lugar a versão fornecida com o Five Radio.
2

Copie a pasta do recurso

Coloque a pasta core-radio dentro do diretório de recursos do seu servidor (ex: resources/[core]/).
3

Adapte o config/functions.lua

Este é o único arquivo que precisa ser editado para integrar ao seu framework. Veja a seção Adaptação de Framework abaixo.
4

Configure o recurso

Edite config/config.lua conforme descrito na seção Configuração.
5

Adicione à server.cfg

Certifique-se de iniciar o pma-voice antes do core-radio.

Adaptação de Framework

Toda a comunicação com o framework está isolada em config/functions.lua.
Usada para validar o acesso a frequências restritas. Recebe a lista de grupos configurada em RestrictedFrequencies e retorna true se o jogador tiver ao menos um deles.
Verifica se o jogador possui o item configurado em Radio.RequiredItem antes de permitir a abertura do rádio.

Adaptação do pma-voice

A versão do pma-voice fornecida com o script já contém todos os ajustes abaixo. Use essa versão sempre que possível. Se você já tem uma versão modificada do pma-voice no servidor (com outras adaptações que não quer perder), aplique manualmente as alterações abaixo no arquivo client/module/radio.lua do seu pma-voice.
1

Adicione a função helper de animação

No topo do arquivo client/module/radio.lua do pma-voice (antes do RegisterCommand("+radiotalk", ...)), adicione:
Esta função consulta o export getRadioAnimData do Five Radio para descobrir qual animação o jogador selecionou. Se o Five Radio não estiver iniciado, usa a animação genérica de fallback.
2

Substitua a animação no comando +radiotalk

Dentro do RegisterCommand("+radiotalk", function() ... end), substitua o trecho que toca a animação fixa pelo bloco abaixo:
O bloco if ad.bone then cria e attacha o prop 3D apenas para animações que tenham a posição configurada — nas animações genéricas isso é ignorado.
3

Substitua a verificação no loop de fala

Dentro da CreateThread do +radiotalk (loop while radioPressed do), substitua a verificação de animação fixa por:
Isso garante que a animação correta seja reaplicada caso o jogador seja interrompido (ex: hit reaction).
4

Substitua a animação no comando -radiotalk

Dentro do RegisterCommand("-radiotalk", function() ... end), substitua o StopAnimTask fixo por:
E garanta que o prop seja removido logo em seguida:
Após aplicar os 4 passos, reinicie o servidor. A integração estará completa — quando o jogador trocar de animação no painel do Five Radio, o pma-voice passará a usar a nova animação automaticamente na próxima vez que apertar para falar.

Configuração

Define quais frequências exigem permissão específica para acesso. A validação é feita server-side.
Os valores devem corresponder ao sistema de grupos do seu framework, pois são passados diretamente para Functions.hasPermission.
Define as 18 animações disponíveis para seleção na interface. Cada entrada pode conter:
As animações personalizadas (pazeee@radio*) já estão na pasta stream/ do recurso e são carregadas automaticamente pelo FiveM. Não é necessário instalar nada extra.