Skip to main content

Dependências

O Five Bennys usa oxmysql para persistência e, por padrão, a base vRP (Creative Enchanted) através da camada de framework. A integração com qualquer outra base é feita adaptando apenas os arquivos server/framework.lua e client/framework.lua — o resto do resource não conhece o seu framework.

oxmysql

Dependência obrigatória. Responsável por toda a comunicação com o banco MySQL/MariaDB (@oxmysql/lib/MySQL.lua).

vRP / seu framework

Por padrão usa vRP via Tunnel/Proxy. Para ESX, QBCore, ox_core ou standalone, adapte a tabela Framework nos dois framework.lua.
O manifesto já declara @vrp/lib/utils.lua, @vrp/config/Global.lua e as interfaces Tunnel/Proxy. Ao trocar de base, remova/ajuste esses @vrp no fxmanifest.lua e reescreva o corpo das funções de Framework.

Estrutura do resource


Banco de dados

A tabela é criada automaticamente na primeira inicialização do resource — a estrutura abaixo serve apenas como referência. Cada tunagem é única por placa + modelo.
Na inicialização, o resource também detecta bancos antigos (com PK só na plate) e migra automaticamente a chave primária para (plate, model). Todo o cache de tunagens é carregado em memória (TuningCache) para leitura rápida.

Instalação do recurso

1

Copie a pasta do recurso

Coloque a pasta five-bennys dentro do diretório de recursos do servidor (ex: resources/[core]/).
2

Adapte a camada de framework

Ajuste server/framework.lua e client/framework.lua para o seu framework. Veja a seção Adaptação de Framework.
3

Configure as oficinas e regras

Edite config/config.lua (oficinas, permissões, regras de serviço) e, se quiser, os demais arquivos de config/. Veja a página de Configuração.
4

Integre ao seu sistema de veículos

Faça o seu sistema de garagem/spawn reaplicar as tunagens salvas usando os exports do Five Bennys. Veja a seção Integração com o sistema de veículos.
5

Adicione à server.cfg

Inicie o recurso depois do oxmysql e do seu framework.

Adaptação de Framework

Toda a comunicação com a sua base está isolada na tabela Framework em server/framework.lua (identidade, permissão, veículo, pagamento, banco, notificação) e client/framework.lua (hud e notificação). Adapte apenas o corpo de cada função.
O resource usa um identificador numérico único por jogador (o “Passport”).
Controla quem trabalha em cada oficina (WorkPermission), quem acessa (AccessPermission) e quem é admin.
O /bennys (admin) usa uma checagem reforçada em server.lua: vRP.HasGroup(Passport, Permission, 2). Ajuste Core.CheckPlayerPermission se o seu framework não tiver grupos com nível.
A tabela é criada dentro de DatabaseReady, então essas funções precisam estar operacionais antes do primeiro ensure five-bennys.
O resource dispara Framework.Notify(source, style, content, time). Os estilos usados internamente são sucesso, aviso e negado. O evento client five-bennys:notifyBennys já normaliza vários apelidos (verde/success, amarelo/info, vermelho/error) para success / warn / error na NUI.
Para usar o sistema de notificação do seu servidor, troque o corpo desse evento no client por uma chamada ao seu próprio evento/lib.notify.
Chamados quando o painel abre e fecha — use para esconder/mostrar HUD, por exemplo.

Integração com o sistema de veículos

Esta é a integração essencial: sozinho, o Five Bennys salva a tunagem por placa, mas quem spawna os veículos (garagem, aluguel, admin) precisa reaplicá-la quando o veículo aparece. Use os exports server-side HasTuning e ApplyStoredTuning.
server
Faça a checagem GetResourceState("five-bennys") == "started" antes de chamar os exports, para o seu sistema de veículos continuar funcionando mesmo com o Bennys desligado.
Para descobrir o som de motor salvo de um veículo (ex: reaplicar áudio em outro fluxo), use a função de interface Core.GetStoredEngineSound(Plate, Model) do resource. Veja os Exports.

Migração de tunagens antigas

Se você vinha de uma versão que guardava os mods em entitydata (chaves Mods:passport:model), o resource registra o comando de console convertBennys para migrar tudo em lote para a nova tabela.
Execute o comando no console do servidor. Ele lê entitydata WHERE dkey LIKE '%Mods%', converte cada registro para o novo formato e grava em core_bennys_tuning, imprimindo o total de convertidos e falhas.