mri-QboxResourcesQbx Photomode

qbx_photomode — Manual

Modo fotografia: câmera livre com alcance limitado ao redor do personagem, com controle de FOV, roll e profundidade de campo por uma UI de sliders.


Sumário

  1. Dependências
  2. Instalação
  3. Permissões (ACE)
  4. Configuração
  5. Comandos
  6. Controles
  7. Ajustes de câmera (UI)
  8. Entrypoints para outros recursos
  9. Localização
  10. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
ox_libSimLocale, lib.addCommand, lib.callback, lib.addKeybind, lib.requestScaleformMovie, cache
qbx_coreNãoListado no README do upstream, mas o código não chama nenhum export do qbx_core

Instalação

  1. Copie a pasta qbx_photomode para resources/.
  2. Adicione ao server.cfg:
    ensure qbx_photomode

Não há SQL nem itens de inventário.


Permissões (ACE)

O comando de abrir a câmera é registrado com lib.addCommand(..., { restricted = 'group.admin' }). O ox_lib protege o comando pela ACE command.<nome do comando> — com a configuração padrão (openCommand = 'cam'), a ACE é command.cam.

Para liberar o comando a outro grupo:

add_ace group.mod command.cam allow

Configuração

Arquivo: config/client.lua.

CampoTipoObrigatórioDescrição
maxDistancenumberSimDistância máxima, em unidades GTA, que a câmera pode se afastar da posição em que o personagem estava ao abrir o modo. Padrão: 25
openKeybindstring | falseSimTecla para abrir/fechar o modo fotografia. Quando false (padrão), nenhum keybind é registrado e só resta o comando
openCommandstringSimNome do comando de servidor que abre o modo fotografia. Padrão: cam

Comandos

ComandoPermissãoDescrição
/camgroup.admin (ACE command.cam)Abre o modo fotografia; se já estiver aberto, fecha. O nome do comando vem de openCommand

Controles

Enquanto o modo fotografia está ativo, todos os controles normais são desabilitados e substituídos por estes (teclas padrão do GTA V; se o jogador remapeou os controles do jogo, mudam junto):

AçãoControleTecla padrão
Girar a câmeraMovimento do mouse
Frente / trás32 / 33W / S
Esquerda / direita34 / 35A / D
Subir / descer38 / 44E / Q
Mover mais rápido (2x)21Shift
Mover mais devagar (0,5x)210Alt
Mostrar/ocultar a UI e os botões de ajuda74H
Liberar o cursor do mouse para usar os sliders25Botão direito do mouse (só com a UI visível)
Sair do modo fotografia202Backspace

A câmera é presa a uma esfera de raio maxDistance em volta do ponto onde o personagem estava ao abrir o modo — ao ultrapassar o limite, a posição é reprojetada para a borda.


Ajustes de câmera (UI)

A UI (html/) envia os valores dos sliders para o cliente via callbacks NUI:

SliderCallback NUIEfeito
Field of ViewonFovChangeSetCamFov — faixa útil entre 7.6 e 79.5; abre em 43.55
RollonRollChangeRotaciona a câmera no eixo de rolagem
Depth of Field StartonDofStartChangeSetCamNearDof
Depth of Field EndonDofEndChangeSetCamFarDof
Depth of Field StrengthonDofStrengthChangeSetCamDofStrength (valor do slider dividido por 100)

O DOF usa o modo shallow (SetCamUseShallowDofMode) com multiplicador de distância focal fixo em 2.5.


Entrypoints para outros recursos

Callback qbx_photomode:client:openCamera

Alterna o modo fotografia de um jogador. É o mesmo caminho usado pelo comando /cam.

-- servidor
lib.callback('qbx_photomode:client:openCamera', source)

Localização

Strings via ox_lib locale, em locales/:

  • en.json — inglês
  • fr.json — francês
  • pt-br.json — português do Brasil

Idioma ativo pela convar:

setr ox:locale "pt-br"

As strings da UI (ui.*) são entregues ao NUI pelo callback getLocales; as demais alimentam o scaleform de botões instrucionais.


Estrutura de arquivos

qbx_photomode/
├── client/
│   └── main.lua              — câmera livre, limite de distância, scaleform de botões, callbacks NUI
├── server/
│   └── main.lua              — comando restrito que dispara o callback de abertura
├── config/
│   └── client.lua            — maxDistance, openKeybind, openCommand
├── html/
│   ├── index.html            — UI de sliders
│   ├── main.js               — envio dos valores dos sliders para o cliente
│   ├── style.css
│   └── Oxygen-Regular.ttf
├── locales/
│   ├── en.json
│   ├── fr.json
│   └── pt-br.json
└── fxmanifest.lua