Pular para o conteúdo

Personalização

Cada loja é configurada no painel e armazenada no seu banco de dados — veja 🏪 Criando uma loja. Os arquivos servem para o que todas as lojas têm em comum.


ArquivoO que ele decideAberto?
config.luaFramework, idioma, interação, ped padrão, comando, imagens, categorias, regras de assalto, identificadoresSim
bridge/server.luaDinheiro, contas, itens, inventário, empregos, notificações, callbacks e o alerta policial personalizadoSim
bridge/client.luaNotificações, avisos de ajuda, dados do jogador e callbacks no clienteSim
bridge/target.luaComo vendedores e pontos de loja são adicionados ao ox_target ou qb-targetSim
bridge/utils.luaLê os identificadores de um jogador (Steam, licença, Discord, FiveM, Xbox)Sim
locales/*.luaTextos dentro do jogo: notificações, avisos, mensagens de assaltoSim
html/locales.jsTextos dentro dos painéis e da janela da loja, para todos os doze idiomasLegível
html/index.html, style.css, script.jsOs painéis e a janela da lojaLegível
list/peds.luaOs modelos de ped oferecidos no painelProtegido
mic_shopcreator.sqlAs nove tabelas, importadas uma única vezSim
client.lua, server.luaLógica das lojasProtegido

OpçãoO que fazPadrão
Config.LocaleO idioma, dentro do jogo e nos painéis. Veja Idiomas'en'
Config.Framework'esx' ou 'qbcore'. Não é detectado automaticamente. No QBox, use 'qbcore' — o QBox executa recursos QBCore através da sua camada de compatibilidade'esx'
Config.CommandO comando que abre o painel do Shop Creator'shopcreator'
Config.IdentifierTypeComo donos e funcionários são reconhecidos: 'discord', 'license', 'esx' ou 'citizenid'. Veja Instalação'discord'
OpçãoO que fazPadrão
Config.Interaction'ox_target', 'qb-target' ou 'default' (aviso de ajuda e tecla E)'ox_target'
Config.RadiusInteractCom 'default', quão perto em metros um jogador deve estar2.0
Config.SpawnNPCfalse não coloca vendedores: um marcador (com 'default') ou uma esfera de target marca o local. Sem vendedor também significa que não há ninguém para assaltartrue
Config.DefaultPedModelo usado quando um local não tem modelo definido ou tem um inválido'a_f_m_bevhills_01'
Config.PedSpawnDistanceOs vendedores só existem enquanto houver um jogador dentro dessa distância em metros20.0
OpçãoO que fazPadrão
Config.CategoriesAs categorias oferecidas ao adicionar um produto; a janela da loja agrupa os produtos por elasitems, weapons, misc
Config.InventoryImagePathUma lista de pastas de imagens. Para cada produto, a janela tenta carregar <item name>.png em cada pasta, na ordem, e usa a primeira que carregarnui://ox_inventory/web/images/
Config.AllowEmployeesAddProductsEm lojas de jogadores, define se os funcionários podem adicionar novos produtos. Os donos sempre podem; os funcionários sempre podem gerenciar os existentesfalse

Não usa ox_inventory? Aponte o Config.InventoryImagePath para a pasta de imagens do seu inventário, por exemplo nui://qb-inventory/html/images/. Adicione uma segunda entrada se as suas imagens estiverem divididas em mais de uma pasta.

OpçãoO que fazPadrão
Config.BlacklistWeaponsPensado para ser a lista de armas que não podem iniciar um assalto. Esta versão não lê essa opção: qualquer arma inicia um assalto, e apenas mãos vazias nunca iniciamweapon_unarmed, weapon_nightstick, weapon_stungun
Config.RobberyNotifyJobsEmpregos alertados quando um assalto começapolice
Config.PoliceAlert"default" alerta os empregos acima com uma notificação e um blip por um minuto. "custom" chama TriggerPoliceAlert em bridge/server.lua"default"
Config.RobberyCooldownTempo de recarga padrão para uma loja que não tenha nenhum salvo. O código conta em minutos, assim como o campo por loja (o comentário no config.lua diz segundos)300
Config.TakeRobberyMoneyFromVaultEm lojas de jogadores, as recompensas em dinheiro saem do cofre da loja — e param quando ele esvaziatrue
OpçãoO que fazPadrão
Config.ScreenshotAnexa uma captura da tela do jogador aos logs do Discord. Precisa do screenshot-basic em execuçãotrue

A URL do webhook em si é definida por loja diretamente no painel, e não aqui.


ComandoQuem pode usarO que faz
/shopcreatorACE mic_shop.openAbre o painel do Shop Creator. Renomeado com Config.Command e pode ser vinculado a uma tecla nas configurações do FiveM como qualquer comando

Donos de lojas e funcionários não precisam de permissão ACE: a janela da loja mostra um botão de engrenagem para Shop Settings quando eles abrem uma loja da qual são donos ou onde trabalham.


Doze idiomas vêm incluídos: en, es, fr, de, it, pt, ru, ja, ko, zh-CN, ar e nl. Os textos ficam em dois lugares, e ambos seguem o Config.Locale:

  • locales/<code>.lua — o que o jogo mostra: notificações, avisos de ajuda, mensagens de assalto.
  • html/locales.js — o que os painéis e a janela da loja mostram, um bloco por idioma.

Adicionando um idioma:

  1. Copie locales/en.lua para locales/<code>.lua e traduza o texto à direita de cada linha. Mantenha as chaves e qualquer %s.
  2. Adicione locales/<code>.lua em shared_scripts no fxmanifest.lua, ao lado dos outros, para que os jogadores o baixem.
  3. Em html/locales.js, copie o bloco 'en', renomeie-o para o seu código e traduza-o.
  4. Defina Config.Locale com o seu código, dê refresh e reinicie.

Uma chave que esteja faltando no seu arquivo Lua aparece no jogo como Translation not found: <key>.


Quatro arquivos abertos em bridge/. Mantenha os nomes das funções — o código da loja as chama pelo nome.

bridge/server.lua — um bloco para ESX e um para QBCore, escolhido por Config.Framework.

FunçãoPara que serve
GetPlayer, GetPlayerJobO objeto do jogador e o seu emprego
GetMoney, AddMoney, RemoveMoneyDinheiro em mãos (cash)
GetAccount, AddAccountMoney, RemoveAccountMoneyContas nomeadas: bank, black_money
GetInventoryItem, AddInventoryItem, RemoveInventoryItemItens. Lê diretamente pelo ox_inventory quando ele está em execução
GetPlayerInventoryO inventário do dono, listado quando ele abastece sua loja
ShowNotificationNotificações do lado do servidor
RegisterServerCallbackCallbacks através do ESX ou QBCore
TriggerPoliceAlert(x, y, z, shopLabel)Chamado em todo assalto quando Config.PoliceAlert = "custom". Vazio por padrão — coloque a chamada do seu dispatch aqui

bridge/client.lua — ShowNotification, ShowHelpNotification, GetPlayerData e TriggerServerCallback. No QBCore, ShowHelpNotification vem vazio; preencha-o com sua própria chamada de texto de ajuda ou draw-text se você usar Config.Interaction = 'default' ou se quiser ver o aviso de convite de funcionário.

bridge/target.lua — adiciona a opção de “abrir loja” a cada vendedor (ou a uma pequena esfera quando Config.SpawnNPC está desativado) para ox_target ou qb-target, e os remove novamente quando as lojas mudam.

Dispatch policial personalizado: defina Config.PoliceAlert = "custom" e escreva o alerta do seu recurso de dispatch dentro de TriggerPoliceAlert em bridge/server.lua. Ele recebe as coordenadas do vendedor e o nome da loja.


Exports de cliente para abrir lojas a partir de outro recurso:

ExportArgumentosO que faz
OpenShopID da loja, ID do localAbre a janela daquela loja, respeitando seu tempo de recarga e restrição de emprego
OpenShopAsEmployeeID da loja, ID do localO mesmo que OpenShop; a engrenagem de Shop Settings aparece se o jogador for dono ou trabalhar lá
OpenShopAsOwner—Abre o painel do Shop Creator, caso o jogador tenha a permissão mic_shop.open

Recursos de target também podem chamar o evento de cliente mic_shopcreator:client:openShop passando shopId e locationId nos dados, que é exatamente o que as opções de target integradas fazem. Os IDs de loja e de local são aqueles exibidos no painel.