Personalização
Quase tudo está em config.lua. O resto é texto, dados e a camada fina que conversa com a sua framework.
Qual arquivo decide o quê
Seção intitulada “Qual arquivo decide o quê”| Arquivo | O que ele decide | Aberto para editar |
|---|---|---|
config.lua | Framework, idioma, quem pode pintar, itens, nomes de comandos, marcadores das lojas de pintura | Sim |
locales/*.lua | Cada notificação e sugestão de chat, um arquivo por idioma | Sim |
locales/main.lua | A função que escolhe o texto para Config.Locale | Sim |
bridge/server.lua | Detecção da framework, notificações, verificação de admin, empregos, itens utilizáveis, remoção de itens | Sim |
bridge/client.lua | Detecção da framework e notificações do lado do jogador | Sim |
items/ox.lua, items/qb.lua, items/sql.sql | Definições de itens prontas para copiar para o seu inventário | Sim |
permissions.json | Os Steam IDs autorizados a abrir o menu. Gravado pelos comandos give e remove | Sim |
vehicle_original_colors.json | A cor de cada carro pintado antes de ser pintado pela primeira vez, por modelo e placa | Sim |
html/ui.html, html/style.css, html/script.js | O menu: o título, as amostras e o visual | — |
data/, stream/ | As definições de pintura e as texturas de rampa das cores 223 a 242 | Deixe como está |
client/main.lua, server/main.lua | A lógica | Escrow (criptografado) |
| Opção | O que faz | Padrão |
|---|---|---|
Config.Framework | "auto", "esx" ou "qbcore". O auto usa a que estiver rodando entre es_extended e qb-core; o QBox conta como qb-core por meio da compatibilidade com o QBCore. Fixando, o QBox usa "qbcore" | "auto" |
Config.Locale | O idioma de todas as mensagens. Veja Idiomas, abaixo | "es" |
Config.PermissionFile | O nome do arquivo JSON que guarda a lista de permissões | "permissions.json" |
Quem pode abrir o menu
Seção intitulada “Quem pode abrir o menu”| Opção | O que faz | Padrão |
|---|---|---|
Config.Permissions | Usa a lista de permissões em permissions.json | true |
Config.UseJobs | Deixa os empregos em Config.AuthorizedJobs abrirem o menu também | true |
Config.AuthorizedJobs | Os nomes de empregos permitidos quando UseJobs está ativado | mechanic, police |
Os dois interruptores se combinam assim:
Permissions | UseJobs | Quem pode abrir o menu |
|---|---|---|
| ativado | ativado | Jogadores na lista, e qualquer pessoa cujo emprego esteja em AuthorizedJobs |
| ativado | desativado | Apenas jogadores na lista |
| desativado | ativado ou desativado | Todo mundo |
A lista é indexada pelo identificador da Steam. Um jogador que não está com a Steam aberta não pode ser adicionado; o comando give responde que não conseguiu obter o identificador da Steam dele.
| Opção | O que faz | Padrão |
|---|---|---|
Config.UseItems | Registra os 82 itens de pintura e o item de reset como utilizáveis | true |
Config.ItemsRequirePermission | Faz os itens de pintura seguirem as mesmas regras do menu. Desativado, qualquer pessoa que tenha um pode usá-lo | false |
O item de reset nunca pede permissão. Os nomes dos itens, e onde as definições deles acompanham o resource, estão em Instalação.
Comandos
Seção intitulada “Comandos”Cada nome é definido em config.lua, sem a barra.
| Opção | Padrão | Quem | O que faz |
|---|---|---|---|
Config.Chameleon | /chameleon | Qualquer pessoa permitida pelas regras acima | Abre o menu. Você precisa estar em um veículo |
Config.ChameleonReset | /chameleonreset | Qualquer pessoa | Devolve ao carro em que você está a sua cor original |
Config.ChameleonGive | /chameleongive [ID] | Admins | Adiciona o Steam ID desse jogador à lista de permissões |
Config.ChameleonRemove | /chameleonremove [ID] | Admins | Remove-o de novo |
“Admin” significa o grupo admin ou superadmin no ESX, e a permissão admin ou god no QBCore. As duas verificações ficam em bridge/server.lua, caso as suas tenham outros nomes.
Marcadores das lojas de pintura
Seção intitulada “Marcadores das lojas de pintura”Config.Locations é uma lista; adicione quantas entradas quiser. Cada uma tem:
| Campo | O que faz | Valor padrão |
|---|---|---|
coords | Onde o marcador fica | Dois pontos de exemplo perto de Burton |
radius | A que distância, em metros, você precisa estar para o aviso aparecer | 3.0 |
markerType | O marcador do FiveM desenhado | 1 (um anel no chão) |
markerColor | Vermelho, verde, azul e alfa | Vermelho em um, verde no outro, alfa 100 |
markerScale | O tamanho dele | 2.0 × 2.0 × 1.0 |
notification | O texto de ajuda exibido dentro do raio | Press ~INPUT_CONTEXT~ to open the Chameleon menu |
O marcador é desenhado a partir de 10 metros de distância. O aviso só aparece dentro de radius e em um veículo; E então abre o menu, com a mesma verificação de permissão do comando.
O texto de notification está em config.lua, e não nos locales, então traduza-o lá.
html/ui.html guarda as amostras — uma por ID de cor de 161 a 242 — e o título do menu, “Chameleon Paintings”, que está escrito na página em vez de vir dos locales. html/style.css dá a cada amostra a sua cor de pré-visualização.
Idiomas
Seção intitulada “Idiomas”Nove acompanham o resource em locales/: en, es, fr, de, it, pt, pl, ru e tr. Defina Config.Locale como um desses códigos.
Para adicionar um:
- Copie
locales/en.luapara um novo arquivo, por exemplolocales/nl.lua. - Mude o código de idioma no topo do novo arquivo para
nle traduza o texto. - Adicione
locales/nl.luaàs duas listas,client_scriptseserver_scripts, emfxmanifest.lua, ao lado dos outros arquivos de locale. - Defina
Config.Locale = "nl", depois executerefreshe reinicie o resource.
Uma chave ausente aparece como Translation [key] does not exist em vez de quebrar alguma coisa, o que facilita perceber um arquivo pela metade.
A bridge
Seção intitulada “A bridge”Dois arquivos em bridge/ são os únicos lugares em que o resource toca na sua framework.
| Arquivo | O que faz |
|---|---|
bridge/server.lua | Encontra a framework, envia notificações (esx:showNotification ou QBCore:Notify), decide quem é admin, lê o emprego de um jogador, registra os itens utilizáveis e remove um item após o uso |
bridge/client.lua | Encontra a framework do lado do jogador e exibe notificações (ESX.ShowNotification ou QBCore.Functions.Notify) |
Sem nenhuma framework encontrada, as notificações recorrem a mensagens de chat.
Adaptando-a. Para usar o seu próprio script de notificação, substitua o corpo de Bridge.Notify nos dois arquivos. Para um sistema de admin personalizado, altere Bridge.IsAdmin. Para uma framework que não seja ESX, QBCore ou QBox, preencha cada função Bridge. em bridge/server.lua — detecção da framework, Notify, IsAdmin, GetPlayerJob, RegisterUsableItem e RemoveItem — e o resource não precisa de mais nada.