MANUAL - mri_Qdraw

O que o recurso faz (descrição funcional)

Sistema de posicionamento de imagens no espaço 3D do mundo do GTA V usando 4 vértices. Permite colocar imagens de URLs ou texturas locais, com renderização via nativas do jogo (sem NUI), persistência em data.json e ferramentas para desenvolvedores.

Funcionalidades principais

  • Sistema de 4 vértices: Posicionamento preciso usando 4 pontos de canto.
  • Espaço 3D: Imagens renderizadas no mundo, mantendo perspectiva correta.
  • Suporte a URL e imagens locais: Carrega de qualquer URL ou texturas streamed.
  • Raycast picker: Clique para posicionar vértices no mundo.
  • Modo desenvolvedor: Mostra marcadores, detecta imagens próximas, permite remoção rápida.
  • Persistência: Armazenamento em data.json, imagens persistem após reinício.

Como funciona (fluxo de trabalho)

Colocação de imagem

  1. Jogador usa comando /draw ou rw_draw++ para alternar modo de desenho.
  2. Sistema usa raycast: jogador mira no mundo, clica para posicionar cada um dos 4 vértices.
  3. Após posicionar os 4 vértices, imagem é renderizada no espaço 3D.

Modo desenvolvedor (admin)

  1. Admin usa /dev para alternar modo desenvolvedor.
  2. Marcadores aparecem para imagens posicionadas, mostrando IDs.
  3. Admin pode remover imagens via /rem <id> ou adicionar via /img <id> <url>.

Opções de configuração disponíveis

Configurações em config/config.lua:

OpçãoPadrãoDescrição
Config.MaxImages50Máximo de imagens por servidor.
Config.MaxImagesPerPlayer5Limite por jogador.
Config.DevModetrueAtiva recursos para desenvolvedores.
Config.DevMarkerColor{255, 0, 0, 100}RGBA dos marcadores.
Config.DefaultWidth1.0Largura padrão.
Config.DefaultHeight1.0Altura padrão.
Config.MaxDistance100.0Distância máxima de renderização.
Config.AdminGroups{‘admin’, ‘god’}Grupos com permissão.

Comandos disponíveis

ComandoPermissãoDescrição
rw_draw++TodosAlterna modo de desenho (alias).
drawTodosAlterna modo de desenho (alias).
/devAdminAlterna modo desenvolvedor com marcadores.
/rem <id>AdminRemove imagem por ID.
/img <id> <url>AdminAdiciona nova imagem com URL.

Eventos que dispara/ouve

Cliente → Servidor

EventoParâmetrosDescrição
mri_Qdraw:client:toggleDrawnoneAlterna modo de desenho.
mri_Qdraw:client:addImageid, url, verticesAdiciona nova imagem.
mri_Qdraw:client:removeImageidRemove imagem por ID.
mri_Qdraw:client:updateVertexid, vertexIndex, coordsAtualiza posição do vértice.
mri_Qdraw:client:toggleDevModenoneAlterna modo desenvolvedor.

Servidor → Cliente

EventoParâmetrosDescrição
mri_Qdraw:server:requestImagesnoneSolicita todas as imagens do servidor.
mri_Qdraw:server:saveImageimageDataSalva imagem no data.json.
mri_Qdraw:server:deleteImageidDeleta imagem do data.json.
mri_Qdraw:server:syncImagesnoneSincroniza imagens com todos os clients.

Exports que fornece/consome

Exports do cliente

ExportParâmetrosDescrição
toggleDrawnoneAlterna modo de desenho.
addImageid, url, verticesAdiciona imagem com 4 vértices.
removeImageidRemove imagem.
getImagesnoneObtém todas as imagens.
toggleDevModenoneAlterna modo desenvolvedor.

Exports do servidor

ExportParâmetrosDescrição
getAllImagesnoneObtém todas as imagens.
saveImageimageDataSalva imagem.
deleteImageidDeleta imagem.
syncImagesnoneSincroniza com clients.

Exports consumidos

Nenhum export externo consumido, usa ox_lib para UI e notificações.

Integração com outros recursos MRI Qbox

  • ox_lib: Componentes UI, notificações e raycast.
  • Outros recursos podem usar exports para adicionar imagens dinamicamente no mundo.

Casos de uso / exemplos práticos

  1. Sinalização de rua: Admin coloca imagem de placa de rua usando /img 1 url_da_placa.
  2. Propaganda em quadra: Desenvolvedor usa modo de desenho para colocar banner publicitário em quadra de basquete.
  3. Mapa personalizado: Coloca imagem de mapa do servidor em parede de prédo.
  4. Aviso de zona: Imagem de “Área Restrita” posicionada em entrada de base policial.

Dicas de solução de problemas

  • Imagem não aparece: Verifique se a URL é acessível ou se a textura local está streamed.
  • Modo de desenho não ativa: Confira se o recurso está funcionando e não há conflitos de keybind.
  • Performance baixa: Reduza Config.MaxImages e Config.MaxDistance.
  • data.json corrompido: Verifique sintaxe JSON, faça backup regular.
  • Modo dev não mostra marcadores: Confirme que Config.DevMode está true e jogador é admin.