mri-QboxResourcesRep Enginewire

rep-enginewire — Manual

Minigame NUI de ligação direta (hotwire): o jogador conecta os pinos corretos do motor arrastando fios; o export devolve true ou false.


Sumário

  1. Dependências
  2. Instalação
  3. Comandos
  4. Como jogar
  5. Entrypoints para outros recursos
  6. Build da interface
  7. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
O fxmanifest.lua não declara nenhuma dependência. O minigame é 100% NUI + nativas, sem framework

O recurso é declarado para gta5 e rdr3.


Instalação

  1. Copie a pasta rep-enginewire para resources/.
  2. Adicione ao server.cfg:
    ensure rep-enginewire
  3. A pasta web/build/ já vem compilada — não é necessário buildar para usar. Só rebuilde se for alterar a interface (veja Build da interface).

Não há config, SQL, itens de inventário nem conflitos conhecidos.


Comandos

ComandoPermissãoDescrição
/testminigameNenhuma (aberto a todos)Abre o minigame e imprime o resultado no console F8. Registrado com restricted = false

O comando é de teste e fica disponível para qualquer jogador. Remova-o de client.lua antes de ir para produção.


Como jogar

O minigame abre em tela cheia com foco de NUI. O jogador arrasta fios entre os pinos; quando todas as conexões corretas são feitas, o jogo termina com sucesso. ESC cancela e conta como falha.

O resultado volta para o Lua pela callback NUI finish com o payload { result = true|false }, que resolve a promise do export.


Entrypoints para outros recursos

Export MiniGame

Bloqueia até o jogador terminar ou cancelar o minigame e retorna um booleano.

local success = exports['rep-enginewire']:MiniGame()
 
if success then
    -- ligou o motor
else
    -- falhou ou apertou ESC
end

Atenção ao nome: o export registrado no código é MiniGame (com o G maiúsculo). O README.md do upstream mostra Minigame(), que não existe.


Build da interface

A UI é um projeto Vite + React + TypeScript em web/.

cd rep-enginewire/web
pnpm i
pnpm build

O build é gerado em web/build/, que é o ui_page declarado no fxmanifest.lua.


Estrutura de arquivos

rep-enginewire/
├── client.lua                       — abre o NUI, aguarda a promise e devolve o resultado; registra o export MiniGame e /testminigame
├── web/
│   ├── build/                       — bundle compilado (é o ui_page do manifest)
│   │   ├── index.html
│   │   └── assets/                  — JS, CSS e imagens do minigame
│   ├── src/
│   │   ├── App.tsx                  — raiz do app React
│   │   ├── components/
│   │   │   ├── HotWire.tsx          — lógica do minigame: pinos, fios, canvas e envio do resultado
│   │   │   └── hotwire.module.scss  — estilos do minigame
│   │   ├── hooks/
│   │   │   ├── useKeyPress.ts       — captura de teclas
│   │   │   └── useNuiEvent.ts       — recebe SendNUIMessage do Lua
│   │   ├── utils/
│   │   │   ├── fetchNui.ts          — chamada das callbacks NUI (finish)
│   │   │   ├── debugData.ts         — mock para desenvolvimento no browser
│   │   │   ├── characterTypes.ts
│   │   │   └── misc.ts
│   │   ├── providers/LocaleProvider.tsx
│   │   ├── transitions/ScaleFade.tsx
│   │   └── assets/                  — fontes e imagens fonte
│   ├── package.json
│   ├── vite.config.ts
│   ├── tailwind.config.js
│   └── tsconfig.json
└── fxmanifest.lua