Pular para o conteúdo

Personalização

Quase tudo está em config.lua. O resto é texto, dados e a camada fina que conversa com a sua framework.


ArquivoO que ele decideAberto para editar
config.luaFramework, idioma, quem pode pintar, itens, nomes de comandos, marcadores das lojas de pinturaSim
locales/*.luaCada notificação e sugestão de chat, um arquivo por idiomaSim
locales/main.luaA função que escolhe o texto para Config.LocaleSim
bridge/server.luaDetecção da framework, notificações, verificação de admin, empregos, itens utilizáveis, remoção de itensSim
bridge/client.luaDetecção da framework e notificações do lado do jogadorSim
items/ox.lua, items/qb.lua, items/sql.sqlDefinições de itens prontas para copiar para o seu inventárioSim
permissions.jsonOs Steam IDs autorizados a abrir o menu. Gravado pelos comandos give e removeSim
vehicle_original_colors.jsonA cor de cada carro pintado antes de ser pintado pela primeira vez, por modelo e placaSim
html/ui.html, html/style.css, html/script.jsO 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 242Deixe como está
client/main.lua, server/main.luaA lógicaEscrow (criptografado)

OpçãoO que fazPadrã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.LocaleO idioma de todas as mensagens. Veja Idiomas, abaixo"es"
Config.PermissionFileO nome do arquivo JSON que guarda a lista de permissões"permissions.json"

OpçãoO que fazPadrão
Config.PermissionsUsa a lista de permissões em permissions.jsontrue
Config.UseJobsDeixa os empregos em Config.AuthorizedJobs abrirem o menu tambémtrue
Config.AuthorizedJobsOs nomes de empregos permitidos quando UseJobs está ativadomechanic, police

Os dois interruptores se combinam assim:

PermissionsUseJobsQuem pode abrir o menu
ativadoativadoJogadores na lista, e qualquer pessoa cujo emprego esteja em AuthorizedJobs
ativadodesativadoApenas jogadores na lista
desativadoativado ou desativadoTodo 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çãoO que fazPadrão
Config.UseItemsRegistra os 82 itens de pintura e o item de reset como utilizáveistrue
Config.ItemsRequirePermissionFaz os itens de pintura seguirem as mesmas regras do menu. Desativado, qualquer pessoa que tenha um pode usá-lofalse

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.


Cada nome é definido em config.lua, sem a barra.

OpçãoPadrãoQuemO que faz
Config.Chameleon/chameleonQualquer pessoa permitida pelas regras acimaAbre o menu. Você precisa estar em um veículo
Config.ChameleonReset/chameleonresetQualquer pessoaDevolve ao carro em que você está a sua cor original
Config.ChameleonGive/chameleongive [ID]AdminsAdiciona o Steam ID desse jogador à lista de permissões
Config.ChameleonRemove/chameleonremove [ID]AdminsRemove-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.


Config.Locations é uma lista; adicione quantas entradas quiser. Cada uma tem:

CampoO que fazValor padrão
coordsOnde o marcador ficaDois pontos de exemplo perto de Burton
radiusA que distância, em metros, você precisa estar para o aviso aparecer3.0
markerTypeO marcador do FiveM desenhado1 (um anel no chão)
markerColorVermelho, verde, azul e alfaVermelho em um, verde no outro, alfa 100
markerScaleO tamanho dele2.0 × 2.0 × 1.0
notificationO texto de ajuda exibido dentro do raioPress ~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.


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:

  1. Copie locales/en.lua para um novo arquivo, por exemplo locales/nl.lua.
  2. Mude o código de idioma no topo do novo arquivo para nl e traduza o texto.
  3. Adicione locales/nl.lua às duas listas, client_scripts e server_scripts, em fxmanifest.lua, ao lado dos outros arquivos de locale.
  4. Defina Config.Locale = "nl", depois execute refresh e 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.


Dois arquivos em bridge/ são os únicos lugares em que o resource toca na sua framework.

ArquivoO que faz
bridge/server.luaEncontra 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.luaEncontra 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.