Skip to main content

Dependências

Inicie os recursos abaixo antes do Five Cases.

Base Five (vRP)

Framework base. Fornece identidade do jogador e saldo bancário usados na compra. A integração fica isolada em config/functions.lua.

Recurso de celular

lb-phone por padrão. O Five Cases chama um export nesse recurso (Cases.Phone.ExportResource) pra trocar o modelo do celular pela skin equipada. Pra usar outro celular, implemente o mesmo export lá e troque essa config — veja Integração com o celular.

oxmysql

Acesso ao banco de dados onde fica o inventário de skins.
A tabela cases_inventory é criada automaticamente na primeira inicialização. Não é necessário rodar nenhum SQL manual.

Instalação do Recurso

1

Copie a pasta do recurso

Coloque a pasta five-cases dentro do diretório de recursos do seu servidor.
2

Informe o token de licença

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

Ajuste o catálogo e as raridades

Edite config/config.lua para adicionar, remover ou reprecificar skins. Veja os detalhes na página de Configuração.
4

Confira a adaptação de framework

Se a sua base for diferente da Five Network (vRP), ajuste config/functions.lua. Veja a seção Adaptação de Framework logo abaixo.
5

Adicione ao server.cfg

Inicie o recurso depois das dependências (e depois do seu recurso de celular).
O painel é entregue já compilado em web/dist, pronto pra uso. Não é necessário nenhum passo de buildweb/dist, pronto pra uso. Não é necessário nenhum passo de build.

Integração com o celular

O Five Cases não sabe nada sobre lb-phone, qb-phone, ox_phone ou qualquer outro — ele só chama um export num resource configurável, sempre que o jogador equipa, desequipa, entra no jogo ou esse resource reinicia com uma skin ativa:
Cases.Phone.ExportResource (em config/config.lua) diz qual resource recebe essa chamada — por padrão 'lb-phone'. Pra usar outro celular, troque esse valor e implemente o export SetCasePhoneSkin nele, com esta assinatura: O export precisa, na prática:
1

Resolver o modelo

model pode vir como string (nome do prop customizado, use GetHashKey/joaat) ou number (hash já resolvido). Cheque IsModelValid antes de usar.
2

Recriar o objeto do celular

Se o celular do jogador já estiver visível, apague o objeto atual e crie de novo com o modelo recebido — CreateObject + AttachEntityToEntity no osso da mão (GetPedBoneIndex(ped, 28422)), usando offset/rotation.
3

Tocar a animação idle (opcional)

Se clipDict/clipAnim vierem preenchidos, dá pra tocar esse clipe no objeto (não no ped) via PlayEntityAnim, pra dar uma “respirada” na skin.
4

Aplicar frameColor (opcional)

Se o seu celular tiver uma cor de moldura/tema configurável na UI, repasse frameColor pra lá. Se não tiver esse conceito, é seguro ignorar esse parâmetro.
5

Tratar model = nil

Quando model vier nil (jogador desequipou), volte pro modelo padrão do seu celular e restaure frameColor original.
Sem esse export implementado, o painel, a compra e o inventário do Five Cases continuam funcionando normalmente — só a troca visual do celular não terá efeito.

Exemplo pronto: lb-phone

O Five Cases já vem configurado com Cases.Phone.ExportResource = 'lb-phone'. Esse export não existe no lb-phone padrão — peça esse patch ao suporte se o seu lb-phone ainda não tiver. Uma vez aplicado, a skin troca o modelo do celular e a cor da moldura automaticamente, funcionando com qualquer variação de celular escolhida (iPhone, Samsung, etc.).
A moldura da tela do celular só aceita cor, não a imagem da skin.

App no celular

Quer que o jogador também abra a loja direto pelo celular, com um ícone na tela inicial, além do comando /cases? Ative em config/config.lua:

Trocar o ícone

Edite Cases.Phone.AppIcon com a URL da sua própria arte. Vem com um ícone simples por padrão.

Trocar a descrição

Cases.Phone.AppDescription é o texto exibido na ficha do app dentro do celular.
Com o app ativado, o botão Inspecionar 3D (visualização de perto, com zoom e rotação) fica disponível só pelo comando /cases — não funciona de dentro do app do celular. Comprar, equipar e desequipar funcionam normalmente nos dois.

Adaptação de Framework

Toda a comunicação com o vRP fica concentrada em config/functions.lua. O arquivo já vem pronto para a base Five Network (vRP). Caso a sua base use nomes diferentes para essas funções, ajuste apenas o conteúdo delas — mantendo o nome e o retorno esperado — sem tocar em nenhum outro arquivo do recurso.
config/functions.lua
Essas são exatamente as funções que quebram quando o Five Cases é instalado em cima de um vRP com nomes diferentes dos usados aqui (por exemplo, vRP.tryBankPayment não existe em todo fork de vRP). Teste uma compra logo após instalar — se aparecer “saldo insuficiente” com saldo de sobra, ou erro de nil no console, o ajuste é sempre aqui em config/functions.lua.

Log de compras

Cada compra chama Functions.Log('caseOpened', dados). Por padrão isso tenta o resource five_logs, se estiver rodando, e cai no fallback de config/webhooks.lua (um webhook do Discord) caso contrário.
config/webhooks.lua
Deixe o link em branco ("") pra desativar o log daquela categoria. Com o five_logs rodando, o conteúdo de config/webhooks.lua é ignorado.