Personalização
As configurações ficam em config.lua. Os arquivos que se comunicam com o seu framework, o seu inventário e o seu resource de target são abertos, para que servidores com sistemas diferentes possam adaptá-los sem tocar no núcleo protegido por escrow.
Qual arquivo decide o quê
Seção intitulada “Qual arquivo decide o quê”| Arquivo ou pasta | O que decide | Aberto? |
|---|---|---|
config.lua | Todas as configurações desta página, a função de notificação, os itens e as essências | Aberto |
locales/*.lua | Todos os textos: menu, rótulos do target, mensagens. Um arquivo por idioma | Aberto |
server_functions.lua | Obter jogador, adicionar, remover e verificar itens, registrar itens utilizáveis, callback da lista de essências e ReduceStress | Aberto |
client/client_functions.lua | Leitura de dados do jogador e verificação de emprego para o menu de configuração | Aberto |
target/target.lua | Todas as opções de target em narguilés e móveis, para ox_target e qb-target | Aberto |
client/client.lua, server/server.lua, locale.lua | Posicionamento, mangueira, fumaça, propriedade e suprimentos | Protegido (Escrow) |
html/ | O menu de configuração: index.html, style.css, script.js | Arquivos simples |
inventory_items/ | Definições de itens prontas para ESX, ox_inventory e QBCore | Referência |
inventory_images/ | Um ícone por item | Assets |
mic_hookah_prop/stream/ | Os dez modelos de narguilé | Assets, resource separado |
Framework, target e imagens
Seção intitulada “Framework, target e imagens”| Opção | O que faz | Padrão |
|---|---|---|
Config.Locale | Idioma | en |
Config.Framework | esx, qbcore ou qbox | esx |
Config.ESXResourceName | Nome da pasta do ESX | es_extended |
Config.QBResourceName | Nome da pasta do QBCore | qb-core |
Config.QBoxResourceName | Nome da pasta do QBox | qbx_core |
Config.Target | ox_target ou qb-target | ox_target |
Config.QBTargetResourceName | Nome da pasta do qb-target | qb-target |
Config.InventoryImagePath | De onde o menu de configuração carrega os ícones das essências | nui://ox_inventory/web/images/ |
| Opção | O que faz | Padrão |
|---|---|---|
Config.AdminGroups | Grupos que podem abrir o menu e recolher qualquer narguilé ou móvel. false significa que todos contam como administradores | false |
Config.AllowedJobs | Empregos que podem abrir o menu de configuração. false significa qualquer emprego | false |
Por padrão, qualquer pessoa pode gerenciar o narguilé de qualquer outra. Para fazer com que cada narguilé pertença apenas ao jogador que o colocou, liste os grupos da sua equipe em Config.AdminGroups — por exemplo admin e superadmin. No ESX, a lista é comparada com o grupo do jogador; no QBCore e QBox, com o campo permission do jogador.
Com uma lista configurada:
| Quem | Abrir menu de configuração | Recolher | Pegar mangueira |
|---|---|---|---|
| O jogador que o colocou | sim (se o emprego dele for permitido) | sim | sim |
| Um grupo de administrador | sim (se o emprego dele for permitido) | sim | sim |
| Qualquer outra pessoa | não | não | sim |
Config.AllowedJobs protege apenas o menu de configuração. Qualquer pessoa pode pegar a mangueira e fumar em um narguilé aceso.
Fumo e suprimentos
Seção intitulada “Fumo e suprimentos”| Opção | O que faz | Padrão |
|---|---|---|
Config.MaxActiveTime | O que significa “cheio” para carvão e água. Um hookah_coal ou hookah_water enche até este valor | 1800 |
Config.ConsumptionPerPuff | Quanto cada tragada consome de charcoal e water | 10 e 10 |
Config.MaxPuffsPerSession | Calculado a partir dos dois acima (1800 ÷ 10 = 180). Apenas para sua referência; o script não lê este valor | 180 |
Config.MaxHoseDistance | Metros que a mangueira estica antes de se soltar | 3.5 |
Config.MaxSimultaneousUsers | Limite pretendido de pessoas fumando no mesmo narguilé | 4 |
Config.Stress | Chama ReduceStress a cada tragada | true |
O narguilé não queima com o tempo: o carvão e a água só diminuem quando alguém dá uma tragada. Quando qualquer um chega a zero, o narguilé apaga e precisa de recarga.
Estresse
Seção intitulada “Estresse”ReduceStress em server_functions.lua recebe o ID de servidor do jogador a cada tragada quando Config.Stress está ativado. Ele vem vazio, com exemplos comentados: um evento de cliente, um export ou um evento de servidor do seu resource de estresse ou HUD. Coloque sua chamada lá.
| Opção | O que faz | Padrão |
|---|---|---|
Config.Particle | Qual partícula é usada: um dict e um name | scr_recartheft / scr_wheel_burnout |
Config.VapeExhale | Tamanho da fumaça | 0.5 |
A configuração marca esses dois como “não altere a menos que saiba o que está fazendo”. Cada nuvem dura três segundos e é mostrada aos jogadores em um raio de 150 metros.
Narguilés, móveis e essências
Seção intitulada “Narguilés, móveis e essências”As listas completas estão em 🎒 Itens.
Config.HookahItems — nome do item → modelo. Para adicionar um narguilé, o modelo precisa ser transmitido por stream (por exemplo, em mic_hookah_prop/stream/ com uma entrada no seu .ytyp), depois adicione a linha aqui e o item ao seu inventário.
Config.PlaceableProps — nome do item → propModel, type (furniture) e isChair. Qualquer prop do jogo base funciona. Defina isChair = true em qualquer objeto que deva oferecer a opção Sit Down.
Config.Flavors — nome do item → configurações:
| Campo | O que faz |
|---|---|
Label | Nome exibido no menu de configuração |
SmokeColor | Cor R, G, B da fumaça |
ScreenEffect | Nome de um efeito de tela do GTA reproduzido para o fumante, ou false |
EffectDuration | Segundos que o efeito de tela dura |
A configuração traz um link com uma lista de nomes de efeitos de tela ao lado de Config.Flavors. Para adicionar uma essência, copie uma entrada, dê um novo nome de item e adicione o item e seu ícone ao seu inventário.
Notificações
Seção intitulada “Notificações”Config.Notify em config.lua envia todas as mensagens: ShowNotification no ESX, Functions.Notify no QBCore e QBox, ou no console caso contrário. Substitua o corpo da função para usar o seu próprio resource de notificação.
Idiomas
Seção intitulada “Idiomas”Onze arquivos vêm em locales/: en, es, fr, de, it, pt, ru, cn, nl, pl, tr. Escolha um com Config.Locale.
O comentário acima de Config.Locale também menciona jp, mas nenhum arquivo em japonês vem incluído; defini-lo exibe “Locale [jp] does not exist”.
Cada arquivo cobre o menu de configuração, os rótulos do target e as mensagens. Algumas palavras estão escritas diretamente no Lua em vez dos arquivos de idioma: as dicas de posicionamento (Rotate Right, Rotate Left, Height Up, Height Down, Place Prop, Cancel), “You are already placing an object” e “None” para quando não há essência.
Para adicionar um idioma: copie locales/en.lua, mude a chave no topo para o seu código e traduza. O manifesto carrega tudo em locales/ automaticamente, então não há mais nada para registrar. Defina Config.Locale, execute refresh e reinicie.
Adaptando ao seu servidor
Seção intitulada “Adaptando ao seu servidor”| Para alterar | Edite |
|---|---|
| Um framework personalizado | O objeto do framework no final de config.lua, e as funções em server_functions.lua e client/client_functions.lua |
| Um inventário diferente | AddItem, RemoveItem e HasItem em server_functions.lua, e o registro de itens utilizáveis abaixo deles |
| Um target diferente | target/target.lua — as listas de opções são compartilhadas, apenas as duas chamadas addModel / AddTargetModel mudam |
| Rótulos, ícones ou distância target | target/target.lua para ícones e distância, locales/ para rótulos |
| Regras de emprego | CheckJobAccess em client/client_functions.lua |
No QBCore e QBox com ox_inventory iniciado, server_functions.lua também registra cada item de narguilé e móvel através do próprio hook de uso do ox_inventory, como alternativa para configurações onde a ponte de itens do QBCore não repassa o uso.
Teclas e comandos
Seção intitulada “Teclas e comandos”| Tecla ou comando | Quando | O que faz |
|---|---|---|
| E | Segurando um narguilé | Começa a posicioná-lo |
| X | Segurando um narguilé | Guarda sem posicionar |
| Roda do mouse | Posicionando | Gira a prévia |
| Seta para cima / baixo | Posicionando | Sobe ou desce a prévia |
| E | Posicionando | Coloca no chão |
| X | Posicionando | Cancela |
| E | Segurando a mangueira acesa | Dá uma tragada |
| X (“Hookah - Stand Up X”) | Sentado | Levanta. Pode ser redefinido nos atalhos de teclado do FiveM de cada um |
/hookah:chair:stand_up | Sentado | O mesmo, como comando |