Clothing store
Uma loja de roupas com outfits salvos, guarda-roupas de empresa e um editor que define os preços do catálogo de dentro do jogo. Todos os componentes e todos os props, comprados peça por peça ou como look inteiro, com um registro no servidor que impede qualquer um de vestir o que não pagou.
O que ele faz
Defina os preços do catálogo sem tocar num arquivo
Um painel de admin dentro da loja. Clique numa peça e defina o preço dela, esconda ela do catálogo, reserve para um emprego, dê armazenamento de verdade para uma mochila, declare um vínculo de componentes ou esconda só uma variação de cor. Tudo é escrito em `config/clothes_overrides.lua` e sobrevive a um restart. Sem editar arquivo, sem downtime, e sem reiniciar o servidor para mudar um preço.
Especificações
técnicas
Tudo o que
você recebe
-
Quinze arquivos de idioma, entregues preenchidos
Seus jogadores leem o script no idioma deles desde o primeiro start, e os arquivos ficam fora do escrow, então você corrige qualquer linha em produção. Nota honesta: eles são traduzidos e revisados por nós, não revisados por nativos dos quinze idiomas. Diga o que soa errado no seu e a gente corrige.
-
Oito bridges, um arquivo cada
Framework, notificações, interação, roupas, inventário, decorações, screenshots e compat. Cada arquivo documenta seus alvos, o que detecta e o que cada alvo custa para você. A detecção testa o export real em vez do estado do resource, então um export renomeado degrada em silêncio em vez de estourar no boot.
-
O catálogo inteiro fica aberto
Lojas, seções, preços, imposto e desconto, drawables bloqueados, listas VIP e os overrides que o editor no jogo escreve. `config/*.lua`, `locales/*.lua` e `bridges/*.lua` estão fora do escrow e são editáveis em produção.
-
Um relatório de instalação para colar no suporte
`/avenida_clotheshops_check` imprime qual bridge foi escolhido para cada categoria, se as tabelas e colunas existem, e qual build do jogo o seu servidor realmente roda. Ele responde à maioria das dúvidas de integração antes de você precisar perguntar.
Guia de integração
Instalação
-
Coloque o resource
Baixe o script pela sua conta Tebex, copie a pasta
avenida_clotheshops/para o seu diretório de resources e adicioneensure avenida_clotheshopsna config do servidor, depois deensure oxmysql. -
Rode o SQL
Rode a seção [A] do
INSTALL.sqlno seu banco. A seção [B] é condicional, o cabeçalho do arquivo diz quando você precisa dela. -
Dê as permissões de admin
Adicione
add_ace group.admin avenida_clotheshops.admin alloweadd_ace group.admin avenida_clotheshops.vip allowna config do servidor. A primeira abre o editor de catálogo, a segunda libera o que você colocar atrás da lista VIP. -
Defina os preços do catálogo de dentro do jogo
Coloque
Config.DevMode.Enabled = true, entre numa loja e abra o editor. Defina preços, esconda o que você não vende, reserve o que pertence a um emprego. Tudo cai emconfig/clothes_overrides.lua. Desligue o DevMode quando terminar, ele é checado de novo no servidor a cada save. -
Verifique as integrações
Coloque
Config.Debug = true, reinicie e leia o console: uma linha por categoria de bridge nomeia o alvo escolhido.Config.Debugsó controla os logs, não é a flag do editor.
Início rápido
Precificar uma seção de três jeitos
Cada loja declara as próprias seções, e cada seção declara o próprio modo de preço. Uma taxa fixa para a seção inteira, um multiplicador que encarece os drawables seguintes, ou uma tabela quando só algumas peças merecem preço próprio.
-- config/clothes_shops.lua
categories = {
tops = {
enabled = true,
price = { mode = 'fixed', base = 300 },
},
pants = {
enabled = true,
-- price = base + index * mult
price = { mode = 'multiplier', base = 100, mult = 2 },
},
mask = {
enabled = true,
price = { mode = 'table', map = { [12] = 900, [45] = 1500 } },
-- only these drawables are offered
whitelist = { 12, 45, 51 },
},
}Referência da API
Exports públicos agrupados por domínio. Cada linha mostra a assinatura da chamada e o que ela faz, não como faz.
Client
GetSkinData
exports['avenida_clotheshops']:GetSkinData()A roupa que o jogador usa, componente por componente, props incluídos. É o que a loja escreve na compra, então bate sempre com o que o guarda-roupa mostra.
ApplySkin
exports['avenida_clotheshops']:ApplySkin(data, ped)Aplica uma aparência completa num ped. Vestir uma roupa esvazia o slot de decoração, então essa chamada recoloca depois o trabalho da barbearia e da tatuagem em vez de deixar a pele nua.
ApplyClothing
exports['avenida_clotheshops']:ApplyClothing(data, ped, temporary)Troca a roupa e mais nada. Com
temporaryem true a roupa só vale durante a sessão, e é assim que um uniforme entregue por um emprego tem que funcionar.
Server
GetBagStorage
exports['avenida_clotheshops']:GetBagStorage(sex, drawable) --> { weight, slots } | nilA capacidade que um drawable de mochila dá, peso e slots, ou nil quando esse drawable não carrega nada. Chame esse export do seu resource de inventário para que uma mochila comprada na loja guarde alguma coisa de verdade.
Receitas
Exemplos de copiar e colar para os casos mais comuns. Você cola na sua resource, ajusta os valores e já está em produção.
Uma loja é uma entrada só. Ela carrega o nome de exibição, o meio de pagamento, o símbolo da moeda, um imposto e um desconto opcionais sobre o total do carrinho, e as seções que oferece. Mantenha a chave estável: ela é o id de loja salvo dentro dos outfits, e renomear ela depois que os jogadores já compraram ali quebra os dados deles.
-- config/clothes_shops.lua
Config.Clothes.Shops[22] = {
name = 'Ponsonbys - Rockford Hills',
payment = 'bank',
currency = '$',
tax = 0.20, -- +20% on the cart
discount = 0.00,
outfitMode = true,
blip = { sprite = 73, color = 4, scale = 0.7, coords = vec3(-708.2, -152.2, 37.4) },
categories = {
tops = { enabled = true, price = { mode = 'fixed', base = 900 } },
shoes = { enabled = true, price = { mode = 'fixed', base = 450 } },
},
}Uma peça restrita fica escondida de quem não passa na checagem, então um civil nunca vê a jaqueta da polícia na grade. Os guarda-roupas de empresa vão além: o chefe edita uma lista compartilhada e cada membro veste sem pagar, e é isso que você quer para um recruta no primeiro turno.
-- config/clothes_overrides.lua, or write it from the in-game editor
Overrides['tops'] = {
[56] = { job = 'police', label = 'LSPD jacket' },
[12] = { hidden = true },
[31] = { restricted = true }, -- ACE permission
}Ele vem ligado e é o que impede um client adulterado de vestir o catálogo de graça. Desligue só se outro resource seu vestir os jogadores com peças que eles nunca compraram e você preferir não inicializar esses personagens. Os personagens que já existem são inicializados com o que já estão vestindo, então ligar depois não tira nada de ninguém.
-- config/clothes.lua
Config.Clothes.RequireOwnership = false
-- how far from a store the server still accepts a purchase
Config.Clothes.PurchaseRange = 30.0
-- saved outfits per character, enforced server side
Config.Clothes.MaxOutfits = 30
Config.Clothes.MaxOutfitsRestricted = 50Aplicar um outfit completo limpa o slot de decorações do ped, que é compartilhado pelo servidor inteiro. Se o seu script veste um jogador, leia antes o que esse resource possui e devolva depois, senão as tatuagens e a hair base vão embora junto com a mudança.
local hairbase = exports['avenida_clotheshops']:GetHairbase()
local tattoos = exports['avenida_clotheshops']:GetTattoos()
-- your own clothing work here
if hairbase then
AddPedDecorationFromHashes(PlayerPedId(), hairbase.c, hairbase.t)
end
for _, dec in ipairs(tattoos) do
AddPedDecorationFromHashes(PlayerPedId(), dec.c, dec.t)
endPerguntas frequentes
- Confira o `Config.Clothes.RequireOwnership`. O registro inicializa um personagem com o que ele já está vestindo na primeira vez que o vê, então ligar isso não tira o guarda-roupa de ninguém. O que ele recusa é uma escrita para uma peça sem compra por trás, que é justamente o que um client adulterado manda. Se um resource seu vestir jogadores com peças que eles nunca compraram, registre essas compras ou coloque a flag em false.
- Ele precisa de duas coisas ao mesmo tempo: a permissão ACE `avenida_clotheshops.admin` e `Config.DevMode.Enabled = true`. `Config.Debug` é outra flag e só controla os logs. Cada save é checado de novo no servidor, então não adianta só se dar a permissão dentro do jogo.
- Isso é o GTA. O jogo repete um drawable em vários índices, e a maioria das lojas lista todos eles. Aqui os drawables fantasma são filtrados, então se você ainda vê uma duplicata, normalmente é um pack de roupa que entrega o mesmo asset duas vezes. Esconda a cópia extra pelo editor no jogo, ela cai em `config/clothes_overrides.lua`.
- O corte é declarado por item, então um capacete ou uma máscara que você mesmo adicionou ainda não tem regra. Configure o comportamento do cabelo pelo editor de catálogo, e lembre que existe a preferência do jogador: quem quiser manter o penteado pode dizer isso, e a escolha dele ganha do corte automático.
- Precisam do screenshot-basic, e só para isso. É a única integração opcional da tabela de requisitos cuja falta o jogador percebe: sem ela os outfits salvos funcionam igualzinho, só que a lista mostra nomes em vez de previews.
- QBCore, ESX e vRP, mais um modo standalone que não precisa de framework nenhum e um caminho `custom` em `bridges/framework.lua` para qualquer outro caso. A detecção roda no start e testa o export real. Qbox e ox_core não têm caminho dedicado: eles passam pelo caminho standalone ou custom, não por um alvo testado.
- Pode, é para isso que foram feitos. Esse é o mais invasivo dos três, já que aplicar um outfit limpa o slot de decorações, e por isso ele recoloca o que pertence aos outros dois depois de cada mudança. O que não dá é rodar os resources separados e o pacote `avenida_skin` ao mesmo tempo. O resource detecta a sobreposição e avisa no console no start.
- 0.00ms. Os pontos de interação compartilham uma thread que passa a rodar de segundo em segundo quando não tem ninguém por perto, os blips são criados uma vez, e toda thread de sessão morre na saída. O debounce de preview só existe enquanto um menu está aberto, e dá para ajustar ele em máquinas mais fracas.
O que dizem os compradores
4.8 5 avaliações verificadas
Haldor brilliant scripts and great support 10 /10
BigOppGrimeyy GangWrld NYC 10/10 was having a problem and these guys ain't stop till it was fix customer service is great definitely buying again
00hugi Super scripts and even better and fast support. Thanks a lot!!
reapersrow Amazing support from the developers and a smooth script!
Necro Huston RP Best service Ive ever received! He even helped me fix problems not associated with his script!
DESTAQUE Avenida TeamCore Skin (3 in 1)
Barbearia, estúdio de tatuagem e loja de roupas num único resource FiveM. 1615 tatuagens, todos os componentes e props de roupa, a cabeça e a pele por inteiro, espalhados por 36 lojas. Uma interface, uma câmera, um fluxo de compra, e uma coisa só para instalar em ESX, QBCore, vRP ou standalone.
DESTAQUE Avenida TeamBarber shop
Uma barbearia encenada de ponta a ponta, com uma câmera que o jogador controla de verdade. O personagem entra, senta na cadeira, e o barbeiro começa a trabalhar enquanto uma câmera orbital enquadra a cabeça. Cabelo, barba, overlays e todo o conjunto de detalhes de pele, com preview em tempo real antes de você gastar um dólar.
DESTAQUE Avenida TeamTattoo shop
Todo o catálogo de tatuagens do jogo, com carrinho e uma cadeira em que você senta de verdade. 1615 desenhos espalhados por 26 coleções de DLC, com preview em tempo real no seu personagem conforme você vai adicionando, pagos de uma vez só. Remoção a laser inclusa, e um tatuador que entra e faz o trabalho.