Loja de animações
Loja de animações pagas com diamantes, que são as gemas do krs_helper. O jogador compra pela raridade, gira uma roleta ou usa uma escolha grátis do VIP. A animação vendida fica trancada no menu do anim até o jogador ter.
Precisa de: oxmysql, ox_lib, krs_helper. O manifesto não exige o anim, mas é ele que tranca as animações, mostra os detalhes e faz o "Experimentar".
Instalação
ensure anim
ensure kay_animshopColoque depois do krs_helper. As tabelas são criadas sozinhas. Veja a ordem no server.cfg.
Krs e Creative usam os diamantes do framework. QBCore, vRP e o modo sem framework usam os do krs_helper.
Pacote opcional de animações
O catálogo procura um pacote separado de animações. Inicie o pacote antes do anim e da loja.
| Sem o pacote | Com o pacote | |
|---|---|---|
| Catálogo | As 2 animações de shared-side/catalogo.lua | As mesmas, mais as do pacote, inclusive exclusivas |
| Roleta | Sorteia só entre essas 2 | Sorteia em todas as raridades com animação à venda |
Trava no anim | Só as 2 | Também as do pacote |
Como usar
| Comando | O que faz |
|---|---|
/animshop | Abre a loja em tela cheia. Esc ou o X fecham |
Com o resource phone ligado, a loja também vira um app do tablet.
- Comprar: clique na animação, em Comprar e confirme. Experimentar mostra a animação antes, se o
animestiver ligado. - Roleta: cada giro cobra
Spine sorteia só o que o jogador ainda não tem. Primeiro a raridade, pelo peso, depois uma animação dela. - Escolha grátis: cada compra de VIP dá 1 e elas acumulam. Vale para qualquer animação à venda, não para as exclusivas.
- Exclusiva: não é vendida nem sai na roleta. Só chega por outro script.
Não há comando de admin para dar animação.
Configuração
Tudo fica em config.lua.
| Opção | Padrão | O que muda |
|---|---|---|
Price | comum = 1000, raro = 2000, epico = 3500, lendario = 6000 | Preço em diamantes. Mínimo 1 |
Spin | 500 | Preço do giro. Mínimo 1 |
Rates | comum = 70, raro = 22, epico = 6, lendario = 2 | Peso na roleta. 0 tira a raridade. Tudo 0 desliga a roleta |
Preview | 20000 | Duração do "Experimentar", em ms |
Command | "animshop" | Comando da tela cheia. "" desliga |
Vip.Resource | "pause" | Resource que pode disparar o evento do VIP |
Vip.Event | "pause:PremiumBought" | Evento do VIP. "" desliga |
Vip.Plans | Bronze, Prata, Ouro | Planos que dão escolha grátis |
Grantors | pause, kay_missoes | Resources que podem usar Grant e AddFree. Apagar a linha tira a permissão |
App.Identifier | "animshop" | Nome interno do app |
App.Name, App.Description | "app.name", "app.description" | Texto ou chave de locales/*.json |
App.Developer | "Kroma Systems" | Desenvolvedor mostrado no app |
App.Default | true | App já instalado no tablet |
Notify | Color = "verde", Time = 8000 | Aviso da escolha grátis |
Catálogo
O arquivo shared-side/catalogo.lua tem uma linha por animação vendida. O anim lê esse arquivo, então não mude o nome, o lugar nem o formato.
{ Id = "dance1007", Nome = "Boate em roda · M5", Raridade = "comum" },| Campo | O que é |
|---|---|
Id | Nome da animação no anim |
Nome | Texto mostrado ou chave de locales/*.json |
Raridade | comum, raro, epico ou lendario |
Exclusivo | Opcional. O valor escolhe o texto exclusive.<valor> dos locales |
Animação fora do catálogo fica livre para todos no menu.
Para programadores
Servidor:
exports.kay_animshop:Grant(charId, "dance1007", "missao") -- só Grantors; true também se ele já tinha
exports.kay_animshop:AddFree(charId) -- só Grantors; dá 1 escolha grátis e avisa
exports.kay_animshop:Owns(charId, "dance1007") -- true/false
TriggerEvent("pause:PremiumBought", charId, "Ouro") -- só vale vindo de Config.Vip.ResourceOutro sistema de VIP pode chamar AddFree ou apontar Vip.Resource e Vip.Event para um evento que mande (charId, plano).
Cliente:
exports.kay_animshop:AnimacaoLiberada("dance1007") -- false se é vendida e o jogador não tem
exports.kay_animshop:AnimacoesLiberadas() -- { [id] = true }O evento de cliente kay_animshop:Owned traz a lista nova a cada compra ou ganho. client-side/ganchos.lua tem as funções do tablet.
Problemas comuns
| Mensagem | Causa |
|---|---|
catálogo: animação X ignorada (raridade Y não existe em Config.Price). | Raridade fora das quatro |
A roleta está desligada neste servidor. | Todos os pesos de Rates em 0 |
Você já tem todas as animações da roleta. | Nada mais a sortear. Sem o pacote, acontece com só 2 animações |
Diamantes insuficientes. | Falta saldo ou o preço está em 0 |
[DEVOLUÇÃO FALHOU] no log | Devolva os diamantes ou a escolha grátis à mão |
