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 comCases.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.Adaptação de Framework
Toda a comunicação com o vRP fica concentrada emconfig/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
Log de compras
Cada compra chamaFunctions.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.
