Personalização
O comportamento fica no config.lua. Tudo o que toca no seu framework, nas suas notificações ou no que um efeito realmente faz fica na pasta bridge/, que é deixada aberta exatamente por esse motivo.
Qual arquivo decide o quê
Seção intitulada “Qual arquivo decide o quê”| Arquivo ou pasta | O que ele decide | Aberto? |
|---|---|---|
config.lua | Todas as configurações desta página e a lista de vapes | Aberto |
locales/*.lua | Textos de notificação, um arquivo por idioma | Aberto |
bridge/client_bridge.lua | Detecção de framework no cliente, notificações, a barra de progresso e o que cada efeito faz | Aberto |
bridge/server_bridge.lua | Detecção de framework no servidor, remoção de um vape vazio, verificação de inventário e o hook de estresse OnVapePuff | Aberto |
bridge/stress.lua | Uma cópia antiga do hook de estresse. Não é carregada pelo manifesto; edite server_bridge.lua em vez disso | Aberto |
client/client.lua | Pegar o vape, dar a tragada, a fumaça e sua sincronização | Protegido (Escrow) |
server.lua | Registra cada vape como item utilizável e retransmite a fumaça | Protegido (Escrow) |
html/ | A barra de progresso: index.html, style.css, script.js | Arquivos simples |
stream/ | Os dez modelos de vape e def_props.ytyp | Assets |
inventory_items/ | Definições de itens prontas para ESX, ox_inventory e QBCore | Referência |
inventory_images/ | Um ícone por item | Assets |
Configurações gerais
Seção intitulada “Configurações gerais”| Opção | O que faz | Padrão |
|---|---|---|
Config.Locale | Idioma das notificações | en |
Config.ShowNotifications | Exibir notificações em geral. Desativado significa sem mensagens de “pegou”, “em recarga”, “vazio” ou poder | false |
Config.EnableMaxPuffs | Os vapes acabam após atingir sua contagem de puffs | true |
Config.RemoveVapeCommand | Comando de chat que guarda o vape | vape |
Config.PuffKey | Tecla padrão para dar a tragada | E |
Config.DisableCombatButtons | Bloqueia os botões de combate (atacar e mirar) enquanto a fumaça sai | true |
Config.Stress | Chama o hook de estresse a cada tragada (veja Estresse) | true |
Config.PuffKey é um padrão. A tragada é um atalho de teclado do FiveM chamado “Vape Puff”, então cada jogador pode alterá-lo em Configurações › Atalhos de Teclado › FiveM, e uma vez que o jogador tenha o atalho salvo, alterar Config.PuffKey não muda mais a tecla para ele.
Vida, colete e velocidade
Seção intitulada “Vida, colete e velocidade”| Opção | O que faz | Padrão |
|---|---|---|
Config.SpeedVapeInfiniteStamina | O fôlego não diminui durante o efeito de velocidade | true |
Config.StaticHealth | false: cada tragada de vida adiciona Config.Health. true: uma tragada eleva a vida até Config.Health se estiver abaixo | false |
Config.Health | Quantidade adicionada ou o nível para o qual elevar. No modo estático, use 101–200, a escala de vida do jogo | 10 |
Config.StaticArmor | A mesma ideia para o colete: adicionar ou elevar até o valor | false |
Config.Armor | Quantidade adicionada ou o nível para o qual elevar (até 100) | 10 |
A vida é sempre mantida entre 100 e 200, e o colete em 100 ou menos.
| Opção | O que faz | Padrão |
|---|---|---|
Config.VapeExhale | Tamanho da partícula de fumaça | 0.4 |
Config.SmokeOpacity | Quão densa é a fumaça, de 0.0 a 1.0 | 1.0 |
Config.SmokeDelay | Segundos entre a animação da tragada e o aparecimento da fumaça | 1.5 |
Config.Particle | Qual partícula é usada: um dict e um name. Vem como a fumaça de burnout de scr_recartheft | scr_recartheft / scr_wheel_burnout |
Config.SmokeOffset | Onde a fumaça começa em relação à cabeça: PosX, PosY, PosZ, RotX, RotY, RotZ | 0.05, 0.0, 0.5, 0, 0, 0 |
Cada nuvem dura 1,5 segundo e é mostrada para jogadores em um raio de 30 metros.
Os vapes — Config.Vapes
Seção intitulada “Os vapes — Config.Vapes”Cada entrada é nome do item → configurações. A lista completa incluída está em 🎒 Itens.
| Campo | O que faz |
|---|---|
prop | Qual modelo é segurado: mic_black, mic_blue, mic_green, mic_lightblue, mic_orange, mic_pink, mic_purple, mic_red, mic_white, mic_yellow |
Label | Nome usado na barra de progresso |
SmokeColor | Uma cor R, G, B, ou a palavra Rainbow para cores alternadas |
Cooldown | Segundos antes que este vape possa ser tragado novamente |
puffs | Tragadas antes de acabar e remover uma unidade do inventário |
EffectDuration | Segundos que o poder dura. 0 para sabores |
ShowProgress | Mostra a barra de progresso enquanto o poder dura. Desativado em todos os vapes padrão |
SpeedMultiplier | Apenas para speed_vape (corrida) e carspeed_vape (motor) |
power | Opcional. Uma lista de efeitos para executar juntos, cada um com seu próprio número (veja abaixo) |
Qual efeito um vape tem
Seção intitulada “Qual efeito um vape tem”O nome do item decide o efeito. invisibility_vape deixa você invisível porque se chama invisibility_vape; qualquer outro nome sem uma lista power é apenas um sabor.
Os nomes de efeito que a bridge entende: invisibility_vape, speed_vape, superjump_vape, teleport_vape, invincibility_vape, health_vape (ou health), armor_vape (ou armor), carspeed_vape, freeze_vape, gravity_vape — além de random_vape, que escolhe um dos outros.
Combinando efeitos com power
Seção intitulada “Combinando efeitos com power”Dê a um vape uma lista power e ele executará todos os efeitos nela a cada tragada, independentemente do nome do vape. O número ao lado de cada efeito é a sua duração em segundos, exceto para health e armor, onde é a quantidade. vape_custom na configuração é um exemplo funcional: vida 10, colete 10, velocidade por 10 segundos.
Adicionando um vape
Seção intitulada “Adicionando um vape”- Copie uma entrada existente em
Config.Vapese dê a ela um novo nome de item. - Escolha um
prop, umSmokeColor,puffseCooldown. Para um poder, use um dos nomes de efeito acima como nome do item ou adicione uma listapower. - Adicione o item ao seu inventário da mesma forma que os outros, com um ícone.
- Digite
refreshe depoisrestart mic_vape.
Efeitos extras que a bridge entende
Seção intitulada “Efeitos extras que a bridge entende”freeze_vape (você não consegue se mover) e gravity_vape (gravidade baixa, movimento mais lento) são tratados em bridge/client_bridge.lua, e suas definições de itens já estão em inventory_items/, mas eles não têm entrada em Config.Vapes. Adicione uma entrada para cada um — copie superjump_vape e renomeie — e eles funcionarão.
transform_vape também está nos arquivos de itens, mas precisa de uma lista Config.TransformAnimals que a configuração padrão não possui. Deixe-o de fora, a menos que esteja pronto para criar essa lista e testá-la.
Estresse
Seção intitulada “Estresse”Com Config.Stress = true, cada tragada chama OnVapePuff em bridge/server_bridge.lua passando o ID de servidor do jogador. Por padrão, essa função apenas imprime uma linha no console do servidor. Exemplos comentados para metadados do QBCore e esx_status estão dentro dela: descomente o que servir para você ou chame seu próprio resource de HUD ou estresse ali.
Se você não usa estresse, defina Config.Stress = false e o console ficará silencioso.
Idiomas
Seção intitulada “Idiomas”Nove arquivos vêm em locales/: en, de, es, fr, it, pl, pt, ru, tr. Escolha um com Config.Locale.
A linha car_speed — mostrada quando o vape de velocidade de carro entra em ação — diz “No waypoint set!” nos arquivos padrão. Reescreva-a no arquivo do seu idioma.
Para adicionar um idioma: copie locales/en.lua, altere a chave no topo para o seu código, traduza e adicione o arquivo em ambos client_scripts e server_scripts no fxmanifest.lua. Defina Config.Locale, dê refresh e reinicie.
A bridge
Seção intitulada “A bridge”Tudo o que depende do seu servidor está em bridge/.
| Arquivo | O que alterar lá |
|---|---|
bridge/client_bridge.lua | ShowNotification — direcione as mensagens para o seu próprio resource de notificação. O código dos efeitos — mude o que um poder faz ou adicione um novo nome de efeito. ShowProgressBar / HideProgressBar para a barra |
bridge/server_bridge.lua | OnVapePuff para estresse. Remover um vape vazio e verificar se o jogador ainda o carrega — adapte esses dois para um inventário que não passe pelas funções de item próprias do ESX ou QBCore |
Ambos os arquivos encontram o framework da mesma maneira: es_extended se estiver iniciado, caso contrário qb-core — que também é como o QBox é encontrado, por meio de sua compatibilidade com o QBCore. Para outro framework, adicione uma condição lá e nas duas funções de item próximas a ela.
Comandos e teclas
Seção intitulada “Comandos e teclas”| Comando ou tecla | O que faz | Definido em |
|---|---|---|
| Usar o item | Pega o vape na mão; usá-lo novamente o guarda | Inventário |
| E (“Vape Puff”) | Dá uma tragada | Config.PuffKey e depois nos atalhos de cada jogador |
/vape | Guarda o vape | Config.RemoveVapeCommand |
Um vape também é guardado quando o jogador não carrega mais o item; o resource verifica isso a cada 2,5 segundos.