|
| 1 | +# mri_Qhud - Manual Funcional |
| 2 | + |
| 3 | +HUD moderno para Qbox Framework com indicadores de status do jogador, veículo, bússola, minimap quadrado e sistema de stress. |
| 4 | + |
| 5 | +## O que o recurso faz |
| 6 | + |
| 7 | +O mri_Qhud exibe uma interface heads-up display (HUD) persistente durante o gameplay, mostrando indicadores circulares de status do jogador (vida, colete, fome, sede, stress, oxigênio), HUD do veículo (velocímetro, combustível, altitude, saúde do motor, NOS, cruise control), bússola completa com direções cardinais e nomes de ruas, além de minimap quadrado com texturas customizadas. |
| 8 | + |
| 9 | +## Funcionalidades principais |
| 10 | + |
| 11 | +- **Status do jogador**: Indicadores circulares para vida, colete, fome, sede, stress, oxigênio |
| 12 | +- **HUD do veículo**: Velocímetro, combustível, altitude, saúde do motor, NOS, cruise control |
| 13 | +- **Bússola completa**: Direções cardinais, nomes de ruas, indicador de graus |
| 14 | +- **Minimap quadrado**: Texturas customizadas para minimap square (80 arquivos no stream/) |
| 15 | +- **Money HUD**: Display de cash/bank com animações de mudança (+/-) |
| 16 | +- **Sistema de stress**: Blur de tela, ragdoll/fall em níveis altos |
| 17 | +- **Modo cinematográfico**: Barras pretas com animação suave |
| 18 | +- **Settings menu**: Painel NUI com toggles para todos os elementos |
| 19 | +- **PS-Buffs integration**: Display de buffs/enhancements externos |
| 20 | +- **Alerta de combustível baixo**: Som + notificação em 20% |
| 21 | + |
| 22 | +## Como funciona |
| 23 | + |
| 24 | +1. Ao carregar o jogador (`QBCore:Client:OnPlayerLoaded`), o HUD inicializa e carrega settings persistidos |
| 25 | +2. Loop contínuo atualiza indicadores baseados no estado do jogador/veículo |
| 26 | +3. Eventos recebidos atualizam fome, sede, stress, NOS, etc. |
| 27 | +4. Settings são persistidos via KVP (`GetResourceKvpString`/`SetResourceKvp`) + `localStorage` |
| 28 | +5. NUI Vue.js apps gerenciam display de cada componente (money, player, vehicle, compass) |
| 29 | + |
| 30 | +## Configurações disponíveis (config.lua) |
| 31 | + |
| 32 | +### Opções gerais |
| 33 | +| Opção | Padrão | Descrição | |
| 34 | +|-------|---------|-----------| |
| 35 | +| `Config.OpenMenu` | `'I'` | Tecla para abrir settings menu | |
| 36 | +| `Config.StressChance` | `0.1` | 10% chance de stress por tiro | |
| 37 | +| `Config.UseMPH` | `false` | MPH (true) ou KPH (false) | |
| 38 | +| `Config.MinimumStress` | `50` | Stress mínimo para screen shaking | |
| 39 | +| `Config.MinimumSpeedUnbuckled` | `50` | Velocidade causando stress sem cinto | |
| 40 | +| `Config.MinimumSpeed` | `100` | Velocidade causando stress com cinto | |
| 41 | +| `Config.DisablePoliceStress` | `true` | Desabilitar stress para LEO | |
| 42 | +| `Config.DisableStress` | `false` | Desabilitar stress completamente | |
| 43 | +| `Config.Buffs` | `'ps-buffs'` | Nome do resource de buffs | |
| 44 | + |
| 45 | +### Settings Menu (Config.Menu) |
| 46 | +Todos os toggles abaixo são configuráveis pelo jogador via tecla I: |
| 47 | + |
| 48 | +| Setting | Padrão | Descrição | |
| 49 | +|---------|---------|-----------| |
| 50 | +| `isOutMapChecked` | `false` | Minimap a pé | |
| 51 | +| `isOutCompassChecked` | `false` | Bússola a pé | |
| 52 | +| `isCompassFollowChecked` | `true` | Bússola segue câmera | |
| 53 | +| `isOpenMenuSoundsChecked` | `true` | Sons do menu | |
| 54 | +| `isResetSoundsChecked` | `true` | Sons de reset | |
| 55 | +| `isListSoundsChecked` | `true` | Sons de checklist | |
| 56 | +| `isMapNotifChecked` | `true` | Notificações do mapa | |
| 57 | +| `isLowFuelChecked` | `true` | Alerta combustível baixo | |
| 58 | +| `isCinematicNotifChecked` | `true` | Notificações modo cinematic | |
| 59 | +| `isDynamicHealthChecked` | `true` | Vida dinâmica | |
| 60 | +| `isDynamicArmorChecked` | `true` | Colete dinâmico | |
| 61 | +| `isDynamicHungerChecked` | `true` | Fome dinâmica | |
| 62 | +| `isDynamicThirstChecked` | `true` | Sede dinâmica | |
| 63 | +| `isDynamicStressChecked` | `true` | Stress dinâmico | |
| 64 | +| `isDynamicOxygenChecked` | `true` | Oxigênio dinâmico | |
| 65 | +| `isDynamicEngineChecked` | `true` | Motor dinâmico | |
| 66 | +| `isDynamicNitroChecked` | `true` | Nitro dinâmico | |
| 67 | +| `isChangeFPSChecked` | `true` | Modo FPS do velocímetro | |
| 68 | +| `isHideMapChecked` | `false` | Esconder minimap | |
| 69 | +| `isCompassShowChecked` | `true` | Mostrar bússola | |
| 70 | +| `isShowStreetsChecked` | `true` | Nomes de ruas | |
| 71 | +| `isPointerShowChecked` | `true` | Indicador da bússola | |
| 72 | +| `isDegreesShowChecked` | `true` | Graus da bússola | |
| 73 | +| `isCineamticModeChecked` | `false` | Modo cinematográfico | |
| 74 | + |
| 75 | +## Controles |
| 76 | + |
| 77 | +| Tecla | Ação | |
| 78 | +|-------|------| |
| 79 | +| **I** | Abrir settings menu | |
| 80 | + |
| 81 | +## Comandos |
| 82 | + |
| 83 | +| Comando | Restrito | Descrição | |
| 84 | +|---------|----------|-----------| |
| 85 | +| `/cash` | Não | Mostrar saldo cash | |
| 86 | +| `/bank` | Não | Mostrar saldo bank | |
| 87 | +| `/dev` | Admin | Toggle dev mode | |
| 88 | + |
| 89 | +## Eventos |
| 90 | + |
| 91 | +### Client (recebidos) |
| 92 | +| Evento | Descrição | |
| 93 | +|--------|-----------| |
| 94 | +| `QBCore:Client:OnPlayerLoaded` | Carregar HUD, settings, buff data | |
| 95 | +| `QBCore:Client:OnPlayerUnload` | Limpar dados do jogador | |
| 96 | +| `hud:client:UpdateNeeds` | Atualizar fome/sede | |
| 97 | +| `hud:client:UpdateStress` | Atualizar stress | |
| 98 | +| `hud:client:ToggleShowSeatbelt` | Toggle seatbelt display | |
| 99 | +| `hud:client:UpdateNitrous` | Atualizar NOS | |
| 100 | +| `hud:client:UpdateHarness` | Atualizar HP do harness | |
| 101 | +| `hud:client:EngineHealth` | Atualizar saúde do motor | |
| 102 | +| `hud:client:BuffEffect` | Display buff progress | |
| 103 | +| `hud:client:EnhancementEffect` | Display enhancement icon | |
| 104 | +| `hud:client:ShowAccounts` | Popup cash/bank | |
| 105 | +| `hud:client:OnMoneyChange` | Animação de mudança de dinheiro | |
| 106 | +| `hud:client:ToggleHealth` | Toggle dynamic health | |
| 107 | +| `qb-admin:client:ToggleDevmode` | Toggle dev mode | |
| 108 | + |
| 109 | +### Server (recebidos) |
| 110 | +| Evento | Descrição | |
| 111 | +|--------|-----------| |
| 112 | +| `hud:server:GainStress` | Aumentar stress do jogador | |
| 113 | +| `hud:server:RelieveStress` | Diminuir stress do jogador | |
| 114 | + |
| 115 | +## NUI Callbacks |
| 116 | + |
| 117 | +| Callback | Descrição | |
| 118 | +|----------|-----------| |
| 119 | +| `closeMenu` | Fechar settings menu | |
| 120 | +| `restartHud` | Restartar HUD | |
| 121 | +| `resetStorage` | Resetar settings para padrão | |
| 122 | +| `openMenuSounds` | Toggle sons do menu | |
| 123 | +| `dynamicHealth` | Toggle vida dinâmica | |
| 124 | +| `dynamicArmor` | Toggle colete dinâmico | |
| 125 | +| `dynamicHunger` | Toggle fome dinâmica | |
| 126 | +| `dynamicThirst` | Toggle sede dinâmica | |
| 127 | +| `dynamicStress` | Toggle stress dinâmico | |
| 128 | +| `dynamicOxygen` | Toggle oxigênio dinâmico | |
| 129 | +| `dynamicEngine` | Toggle motor dinâmico | |
| 130 | +| `dynamicNitro` | Toggle nitro dinâmico | |
| 131 | +| `changeFPS` | Toggle FPS do velocímetro | |
| 132 | +| `HideMap` | Toggle visibilidade do minimap | |
| 133 | +| `showCompassBase` | Toggle base da bússola | |
| 134 | +| `showStreetsNames` | Toggle nomes de ruas | |
| 135 | +| `showPointerIndex` | Toggle indicador da bússola | |
| 136 | +| `showDegreesNum` | Toggle graus | |
| 137 | +| `cinematicMode` | Toggle modo cinematográfico | |
| 138 | + |
| 139 | +## Indicadores de Status |
| 140 | + |
| 141 | +| Indicador | Ícone | Descrição | |
| 142 | +|-----------|-------|-----------| |
| 143 | +| Health | `heart-pulse` | Vida do jogador | |
| 144 | +| Armor | `shield` | Colete | |
| 145 | +| Hunger | `bowl-food` | Fome | |
| 146 | +| Thirst | `bottle-water` | Sede | |
| 147 | +| Stress | `brain` | Stress | |
| 148 | +| Oxygen | `lungs` | Oxigênio (submerso) | |
| 149 | +| Armed | `stream` | Indicador de armado | |
| 150 | +| Parachute | `parachute-box` | Paraquedas | |
| 151 | +| Harness | `user-slash` | Harness | |
| 152 | +| Cruise | `tachometer-alt` | Cruise control | |
| 153 | +| NOS | `rocket` | Nitrous | |
| 154 | +| Dev | `terminal` | Dev mode | |
| 155 | + |
| 156 | +## NUI Components (Vue.js + Quasar) |
| 157 | + |
| 158 | +4 Vue apps independentes: |
| 159 | +1. **`app`** (`#menu`) — Settings menu com tabs, checkboxes, toggles |
| 160 | +2. **`moneyHud`** (`#money-container`) — Cash/bank com slide-fade animations |
| 161 | +3. **`playerHud`** (`#ui-container`) — Status radials com show/hide dinâmico |
| 162 | +4. **`vehHud`** (`#veh-container`) — Velocidade, combustível, altitude, motor |
| 163 | +5. **`baseplateHud`** (`#baseplate-container`) — Bússola SVG com direções cardinais |
| 164 | + |
| 165 | +### Stack |
| 166 | +- **Vue.js 3** (CDN) |
| 167 | +- **Quasar 2** (CDN) |
| 168 | +- **jQuery 3.7** (CDN) |
| 169 | +- **FontAwesome 6.6** (CDN + local) |
| 170 | +- **Google Fonts** — Robbery + Material Icons |
| 171 | + |
| 172 | +## Integração com outros recursos MRI |
| 173 | + |
| 174 | +### Obrigatórias |
| 175 | +- `ox_lib` — Locale system, comandos, callbacks |
| 176 | +- `qbx_core` — Player data, notificações |
| 177 | +- `InteractSound` — Sons do menu |
| 178 | + |
| 179 | +### Opcionais |
| 180 | +- `ps-buffs` — Integração de buffs/enhancements (configurável em `Config.Buffs`) |
| 181 | + |
| 182 | +## Exemplos práticos |
| 183 | + |
| 184 | +### Atualizar fome/sede via evento |
| 185 | +```lua |
| 186 | +TriggerEvent('hud:client:UpdateNeeds', hunger, thirst) |
| 187 | +``` |
| 188 | + |
| 189 | +### Adicionar stress via servidor |
| 190 | +```lua |
| 191 | +TriggerEvent('hud:server:GainStress', source, 10) -- adiciona 10 de stress |
| 192 | +``` |
| 193 | + |
| 194 | +### Atualizar NOS via evento |
| 195 | +```lua |
| 196 | +TriggerEvent('hud:client:UpdateNitrous', true, 100) -- NOS ativo com 100% |
| 197 | +``` |
| 198 | + |
| 199 | +### Mostrar mudança de dinheiro |
| 200 | +```lua |
| 201 | +TriggerEvent('hud:client:OnMoneyChange', 'cash', 500, 'add') |
| 202 | +``` |
| 203 | + |
| 204 | +## Solução de problemas |
| 205 | + |
| 206 | +- **HUD não aparece**: Verifique se o jogador carregou completamente (`OnPlayerLoaded`) |
| 207 | +- **Settings não persistem**: O sistema usa KVP + localStorage como backup |
| 208 | +- **Stress não aumenta**: Stress por tiro/velocidade está comentado; use evento `hud:server:GainStress` |
| 209 | +- **Combustível baixo não alerta**: Verificação em ≤20% a cada 60 segundos; veículos elétricos são ignorados |
| 210 | +- **Minimap não é quadrado**: Confirme que os 80 arquivos de textura estão no `stream/` |
| 211 | +- **Comando /engine não funciona**: Está comentado no código (tecla G) |
| 212 | +- **Alerta de combustível em veículo elétrico**: 19 veículos elétricos estão na blacklist |
0 commit comments