Petshop
Loja de animais e de roupas para eles. Tem balcão de compra, gestão de estoque, preço e vitrine pelos funcionários, e veterinário. As vendas e consultas vão para o cofre da loja, e a reposição sai dele.
Precisa de: oxmysql, ox_lib, krs_helper, animals
Instalação
ensure animals
ensure petshopColoque depois do krs_helper. As tabelas são criadas sozinhas. Veja a ordem no server.cfg.
- Crie o emprego de
Config.Group, por padrãoPetshop. Cargo 1 é o mais alto. No QBCore e no vRP, ligue o nome emConfig.Groupsdokrs_helper. - Cadastre os itens dos animais, como na página do animals.
- Troque no
config.luaos lugares dePointseShowcase, que usam coordenadas de um mapa específico.
Sem framework, cada funcionário entra pelo server.cfg:
add_ace group.Petshop group.Petshop allow
add_principal identifier.license:LICENSE_DO_JOGADOR group.PetshopSem framework a loja abre, mas não há dinheiro nem itens para vender.
Pacote opcional de modelos
O config.lua procura o resource animals_modelos. Inicie o pacote antes do animals e do petshop.
| Sem o pacote | Com o pacote | |
|---|---|---|
| Animais à venda | Os 14 de Config.Pets | Mais 13, que o pacote soma a Config.Pets com custo próprio |
| Roupas à venda | Todas as peças de clothes.lua, mas nenhum modelo do jogo as veste. Com Enabled.Clothes = false, saem da loja | Servem nos modelos do pacote que têm a peça |
Animal de Config.Pets sem o modelo no servidor some da loja sozinho, com ou sem o pacote.
Como usar
Os balcões abrem pelo target de Config.Target. Sem target, ou com o resource desligado, o jogador chega a 2 m e aperta a tecla de Config.Key.
Compra
Qualquer jogador usa, a até 3 m do balcão.
- Escolha a aba de animais ou o tipo de roupa. O animal aparece em 3D.
- Passe o mouse para provar. Nada é comprado.
- Adicione ao carrinho.
- Pague no cartão. É preciso saldo no banco. No krs, também o cartão do banco.
O animal chega como item. A roupa entra na coleção do personagem e cada peça só se compra uma vez. Se algo não couber, já for do jogador ou estiver sem estoque, fica de fora e o resto é vendido.
Gestão
Exige funcionário em serviço, no balcão de gestão.
| Ação | O que faz |
|---|---|
| Estoque | Mostra custo, quantidade e preço. O preço fica entre o custo e Margin.Max vezes o custo |
| Pedido | Compra estoque pelo custo, com dinheiro do cofre |
| Vitrine | Põe um animal com estoque em cada lugar de Showcase. Ele aparece sentado na loja |
| Cofre | Fora do krs: deposita do banco do funcionário e saca para ele |
Veterinário
Exige funcionário em serviço, na mesa. A tela lista os animais a até Vet.Radius metros. Tratar pede o aceite do dono, cobra Vet.Price no cartão dele e deixa o animal com vida 100, e fome e sede no mínimo 50. Animal desmaiado acorda.
Estoque e loja sem dono
| Situação | Estoque | Dinheiro da venda |
|---|---|---|
| Ninguém no grupo | Infinito, sem mostrar a quantidade | Sai do jogador e não vai a nenhum cofre |
| Alguém no grupo | Real. Começa em zero | Vai para o cofre |
Quando a loja fica sem dono, o estoque é zerado e não volta. O servidor confere a cada 10 s. Com Unowned.Infinite = false, o estoque é sempre real.
| Framework | Quem conta como dono |
|---|---|
| krs, QBCore, vRP | Membros do grupo, online ou não |
| Creative, sem framework | Só membros online. Quando o último sai, o estoque zera |
Onde fica o cofre
| Framework | Cofre |
|---|---|
| krs | Banco da organização. Depósito e saque pelo painel de organizações |
| Outros | Tabela petshop_vault. Depósito e saque na tela de gestão |
Permissão
O grupo é Config.Group. Cada ação exige o cargo mínimo de Config.Levels, onde 1 é o mais alto.
| Framework | Em serviço | Cargo |
|---|---|---|
| krs, Creative | Serviço do framework | O da organização |
| QBCore | Job com serviço ligado | O maior grau do job é o cargo 1 |
| vRP | Basta ter o grupo | Posição do grupo em Config.Groups |
| Sem framework | Estar no add_principal | Sempre 1 |
Configuração
Tudo fica em config.lua.
| Opção | Padrão | O que muda |
|---|---|---|
Group | "Petshop" | Grupo dos funcionários |
Levels | Price = 2, Showcase = 2, Vet = 3, Restock = 4, Vault = 1 | Cargo mínimo. Restock também abre a gestão |
Enabled | todos true | Liga Shop, Manage, Vet e Clothes |
Points | Shop, Manage, Vet | Lugar dos balcões, com vec3 |
Distance | 3.0 | Distância máxima do balcão, em metros |
Showcase | 4 lugares | Vitrine, com vec4(x, y, z, direção) |
Pets | 14 animais do jogo | Item e custo de reposição. O animal precisa existir em Config.Models do animals |
Clothes.Cost | 150 | Custo de reposição de cada peça |
Clothes.Items | vazio | Custo por peça, como petwear_suit = 300 |
Margin.Default | 2.0 | Preço inicial, em vezes o custo |
Margin.Max | 4.0 | Preço máximo, em vezes o custo |
Vet.Price | 1500 | Preço da consulta |
Vet.Radius | 5.0 | Raio da mesa, em metros |
Unowned.Infinite | true | Estoque infinito sem dono |
Line | 50 | Máximo de unidades por item |
Lines | 150 | Máximo de itens diferentes no carrinho |
Target | "target" | "target", "qb-target", "ox_target" ou "" |
Key | "E" | Tecla padrão sem target |
Notify.Time | 5000 | Duração dos avisos, em ms |
Interface.Icons | "" | Imagens dos itens. Vazio usa o inventário do krs. Modelo com {item}, como "nui://qb-inventory/html/images/{item}.png" |
Interface.Color | "#b3c0ff" | Cor de destaque |
Log | true | Registra vendas, reposições, consultas e cofre no log do krs_helper |
Os animais vêm do animals e as roupas do clothes.lua dele. Depois de mudar qualquer um dos dois, reinicie o petshop. O script não traz imagem de item.
Para programadores
server-side/ganchos.lua tem o cofre e a imagem do animal:
Cofre.Saldo(grupo)
Cofre.Depositar(grupo, valor, charId) -- true só se o dinheiro entrou
Cofre.Retirar(grupo, valor, charId) -- só tira se tiver saldo; true/false
Cofre.Painel -- true mostra depósito e saque na gestão
Ganchos.Imagem(item)client-side/ganchos.lua tem os adaptadores de target e a HUD. Os eventos locais petshop:Shop, petshop:Manage e petshop:Vet abrem as telas.
Problemas comuns
| Mensagem | Causa |
|---|---|
X está em Config.Pets, mas não existe em Config.Models do animals; fica fora da loja | Falta o animal no animals ou o pacote opcional |
X: custo inválido (inteiro, 1 ou mais); fica fora da loja | Custo que não é inteiro ou é menor que 1 |
Só funcionários do petshop em serviço. | Sem o grupo ou fora de serviço |
Seu cargo não permite isso. | Cargo abaixo de Config.Levels |
Saldo insuficiente no cofre do petshop. | O cofre não cobre a reposição ou o saque |
Pagamento recusado. É preciso o cartão do banco e saldo suficiente. | Falta saldo ou, no krs, o cartão |
REEMBOLSO FALHOU ou LOJA NÃO RECEBEU no log | Devolva ou credite o valor à mão |
