Skip to content
mri-Qbox-BrasilPublic

About

Responsável por fazer as principais conexões entre os resources da mri Qbox

Resources

Stars

8 stars

Watchers

1 watching

Forks

Latest commit

 

History

167 Commits

Folders and files

Repository files navigation

mri_Qbox: Manual

Coleção de módulos da suíte MRI: menus F9/F10, VIP, comandos de admin e módulos de combate, veículos, interação, inventário e mundo. Cada módulo liga, desliga e se configura pelo painel /mriqbox (ou pela aba no mri_Qadmin), e a mudança vale na hora, sem reiniciar.


Sumário

  1. Dependências
  2. Instalação
  3. Permissões (ACE)
  4. Painel de configuração
  5. Módulos
  6. Comandos
  7. Teclas
  8. Menus F9 e F10
  9. Staff
  10. VIP
  11. Veículos: cadastro e estoque
  12. Editor do inventário
  13. Integrações
  14. Entrypoints para outros recursos
  15. Estrutura de arquivos

Dependências

Recurso Obrigatório Observação
ox_lib Sim Menus, comandos, callbacks, keybinds, principals e o /uiconfig do tema
qbx_core Sim QBX.PlayerData, jobs, gangs e metadata (VIP); o fork MRI, com a API de veículos em runtime
oxmysql Sim Lista de personagens do painel de VIP e a tabela vehicles_data
ox_inventory Sim Peso, drop de itens, craft arrastando, carregar nos braços, pegar do chão
ox_target Sim Lixeiras, entrar pela porta, bebedouros, pegar do chão
mri_Qbossmenu Para os painéis Jogadores próximos no painel de VIP, o /menu <job> e "Gerenciar Emprego" e "Gerenciar Gangue" no F9. Atende pelos nomes antigos qbx_management e mri_Qjobsystem, que também servem. Sem ele, as opções de gerenciar só não aparecem
mri_Qadmin Não Abas "MRI Qbox" (painel) e "Veículos"
mri_Qvinewood Não Entrada "Vinewood" no menu de gerenciamento

Os menus F9/F10 disparam comandos de outros recursos (doorlock, blip, bau, npc, objectspawner, elevador, garagelist, craft:create, open_jobs, spotlight, weather, adm...). Cada entrada só funciona se o recurso daquele comando estiver instalado.


Instalação

  1. Coloque a pasta mri_Qbox em resources/ (na base MRI, em resources/[mri]).
  2. No server.cfg, inicie depois de ox_lib, qbx_core, oxmysql, ox_inventory e ox_target:
    ensure mri_Qbox
    
  3. Libere a ACE de admin (ver Permissões).
  4. Abra o /mriqbox e ligue os módulos que quiser. Os valores ficam em data/config.json.
  5. Não há SQL para importar: o VIP fica na metadata do personagem (players.metadata), que o qbx_core já cria, e a tabela vehicles_data é criada sozinha.
  6. Vindo do mri_Qvehicles: tire ele do servidor (ver Vindo do mri_Qvehicles).

Permissões (ACE)

Permissão Libera
mri_Qbox.admin ou command O painel /mriqbox e a aba no mri_Qadmin
mri_Qvehicles.admin, mri_Qbox.admin ou command A tela de veículos (aba "Veículos" no mri_Qadmin)
group.admin Comandos de admin (/item, /vipadm...) e os eventos do painel de VIP
add_ace group.admin command allow
add_principal identifier.fivem:1 group.admin

O recurso também concede principals sozinho: ao logar, quem tem metadata.vip recebe o principal com o nome do tier. Não é preciso mexer no server.cfg pra cada admin.


Painel de configuração

/mriqbox abre o painel (ou a aba "MRI Qbox" no mri_Qadmin). ESC fecha.

  • Lateral: categorias (Menus, Admin, Combate, Veículos, Interação, Inventário, Mundo, Som) e busca por nome ou descrição.
  • Lista: cada módulo com descrição e o liga/desliga na própria linha. Módulo que faz parte da base mostra o selo "Base" no lugar do liga/desliga: fica sempre ligado.
  • Detalhe: as opções do módulo (número com unidade, texto, seleção, listas, tabela chave e valor, JSON), "Restaurar padrão", "Descartar" e "Salvar". O módulo Veículos abre a tela de cadastro inteira, com "Módulos" pra voltar.

Tudo vale na hora pra todos os jogadores:

  • módulo de loop (recuo, drift, roda solta...) passa a obedecer na volta seguinte;
  • módulo que registra coisa em outro recurso (olhinho, gancho do inventário, item de menu, textura) registra ao ligar e remove ao desligar;
  • comando e tecla continuam registrados (o FiveM não remove), mas desligados avisam "Comando desligado no painel do mri_Qbox" ou não fazem nada.

O servidor valida cada valor pelo tipo da opção antes de gravar em data/config.json. O tema do painel segue a suíte: cor de destaque e fundo pelas convars mri:color e mri:backgroundColor, e o resto (dark/glass, opacidade, raio, fonte) pelo /uiconfig.


Módulos

Ligado ou desligado de fábrica entre parênteses.

Menus e admin

Módulo O que faz
Menus F9 e F10 (ligado) Menu do jogador e de administração. Os exports pra outros recursos continuam valendo com ele desligado
VIP (desligado) Tiers com ACE, peso do inventário e salário periódico. Opções: intervalo do salário, conta, símbolo da moeda e os tiers (JSON)
Comandos de admin (ligado) /item, /tuning, /menu_admin, /customs, /raycast, /menu
Atalhos de comando (ligado) Outro nome pra um comando que já existe, editado no painel (atalho -> comando). Já vem com /tpto -> /tp, /tpway -> /tpm e /god -> /revive, pra quem vem do creative ou vRP. Vale a permissão do comando original; atalho com nome de comando que já existe ou que aponta pra outro atalho é ignorado, com aviso no console
Passaporte (desligado) Número fixo de cada personagem, como o passaporte do creative e do vRP: é o id da tabela players, que não muda quando o jogador reconecta e não é reaproveitado. Fica no statebag passport do jogador (a HUD e outros scripts leem dali). Opção Primeiro passaporte (1): personagens novos começam nele e os números abaixo ficam reservados pra dar ou vender. O botão Gerenciar (e a aba Passaportes do mri_Qadmin, com o módulo ligado) abre a lista de personagens com o passaporte de cada um, busca e troca de passaporte (só número reservado ou livre abaixo do próximo; ACE mri_Qbox.admin ou command). Opção: Comandos usam o passaporte (desligada), que faz todo comando com jogador feito no lib.addCommand (/tp, /revive, /kick, /ban...) pedir o passaporte no lugar do id do servidor; me continua valendo
Identificadores no console (ligado) Mostra os identificadores de quem conecta
Expulsar AFK (desligado) Igual ao qbx_afk: confere a cada segundo e expulsa quem fica no mesmo ponto exato por tempo demais (padrão 1000 s), com avisos a 15, 10, 5, 2,5 e 1 minuto e a 30, 20 e 10 segundos. Os grupos da lista (padrão mod e admin, permissões do qbx_core) não são expulsos
Gravação (ligado) Item Gravação no F9: tela pra gravar, gravar em replay (guarda os últimos segundos), salvar, descartar e abrir o Rockstar Editor (pede confirmação, porque tira do servidor). Gravando com a tela fechada, fica um aviso REC no canto. Substitui os comandos do qbx_editor
Anticheat (ligado) Veículos e peds proibidos: o servidor cancela na hora quem tentar criar, inclusive script de garagem (proteção contra menu de cheat). Substitui o qbx_entitiesblacklist; saiu do módulo Mapa

Combate

Módulo O que faz
Cair com tiro na perna (desligado) Ragdoll ao levar tiro na perna ou na pélvis
Sem tiro cego (desligado) Não atira da cobertura sem mirar
Sem rolamento (desligado) Tira o rolamento de combate mirando
Sem soco sem mirar (desligado) Só bate ou atira segurando a mira
Recuo realista (ligado) A câmera sobe a cada tiro com a força de cada arma (os valores do qbx_recoils, editáveis no painel), em passos como no qbx_recoils e sem recuo no drive-by (multiplicador VEHICLE 0). Opções: multiplicador por tipo, mira bêbada, sem headshot de um tiro, sem soco mirando e armas sem recuo. Substitui o qbx_recoils
Só duas câmeras a pé (desligado) Primeira e terceira pessoa (V alterna)
Primeira pessoa armado no carro (desligado) Motorista armado vai pra primeira pessoa (sempre ou só segurando a mira)
Esconder HUD nativa (ligado) Esconde estrelas de procurado, dinheiro, área e rua, nome e classe do veículo, roda e ícone da arma; opcional, a mira. Bloqueia a tecla da roda de armas (TAB). Responde os exports do qbx_hudcomponents pelo nome antigo (exports.qbx_smallresources:AddDisableHudComponents e os outros). Substitui o qbx_hudcomponents
Armas do GTA (ligado) NPC morto não solta arma, ninguém pega do chão a arma que o GTA solta, sem coronhada e extintor e galão de gasolina sem acabar. Substitui o qbx_itempickup e parte do qbx_ignore
Tempo no chão do taser (ligado) Quem leva taser fica no chão um tempo sorteado entre o mínimo e o máximo (padrão 4 a 7 s). Substitui o qbx_stun
Derrubar correndo (ligado) Igual ao qbx_tackle: correndo, a tecla tackle (padrão E) derruba quem está logo à frente (7 s no chão, ajustável); quem derruba cai por um instante. O servidor confere a distância (2 m). Substitui o qbx_tackle

Veículos

Módulo O que faz
Veículos (sempre ligado) Cadastro, edição e estoque dos veículos sem reiniciar. Ver Veículos: cadastro e estoque
Drift no Shift (ligado) Perde aderência segurando Shift até a velocidade máxima (padrão 80 km/h)
Pontos de drift (desligado) Contador de pontos de drift na tela
Roda solta em batida (desligado) Roda solta por força do impacto ou por velocidade da colisão
Roda virada ao desligar (desligado) A roda fica no ângulo em que o carro foi desligado
Sem controle no ar (desligado) Carro no ar não gira pelo controle
Explosão em queda (desligado) Explode ao cair de uma altura (padrão 40 m)
Entrar pela porta (ligado) Olhinho em cada porta; carro de concessionária não deixa
Rádio do carro (ligado) Rádio bloqueado por padrão: desligado em todo veículo, sem como ligar. Sem o bloqueio, /mri_carradio liga e desliga o rádio e a escolha vale em todo veículo. Sem tecla padrão (dá pra definir no painel)
Placas Mercosul (desligado) Textura de placa Mercosul. Obsoleto: prefira o mri_Qcarplates
Sem pular de banco (ligado) Igual ao qbx_noshuff: quem entra no banco do passageiro não pula sozinho pro do motorista. A tecla shuffleSeat (padrão O) troca de banco de propósito, menos algemado ou de cinto. Substitui o qbx_noshuff
Piloto automático (ligado) Igual ao qbx_cruise: o motorista mantém a velocidade atual com a tecla toggle_cruise_control (padrão Y). Apertar de novo ou perder velocidade sem frear nem virar desliga. Não vale pra bicicleta, barco, helicóptero, avião e trem. Substitui o qbx_cruise
Desvirar veículo (ligado) Desvira veículo capotado com barra de progresso (padrão 15 s, até 2 m): pelo olhinho ou pelo export do qbx_flipvehicle (exports.qbx_smallresources:FlipVehicle). Substitui o qbx_flipvehicle
Empurrar veículo (ligado) Igual ao qbx_vehiclepush: a pé, segurando Shift e E (teclas push_vehicle e push_vehicle_e) perto de um veículo sem motorista, empurra; A e D viram as rodas e soltar o Shift para. Opções: vida do motor pra poder empurrar (padrão 1000, qualquer um; sem gasolina sempre pode) e classes que não empurram. Substitui o qbx_vehiclepush

Interação

Módulo O que faz
Lixeiras (ligado) Olhinho pra se esconder e vasculhar (abre o inventário da lixeira). Modelos no painel
Bebedouros (ligado) Beber água e encher garrafa em bebedouros, fontes e pias. Beber seguido demais só mostra um aviso

Inventário

Módulo O que faz
Editor do inventário (base) Itens, armas, lojas, crafting, licenças, baús, evidências, espaço dos veículos e animações do ox_inventory, editados no jogo. Ver Editor do inventário
Pegar itens do chão (ligado) Olhinho pra pegar o prop de um item do ox_inventory. O export itemPlace continua valendo desligado
Carregar nos braços (ligado) Itens como caixas ficam nos braços com animação (lista em resources/modules/itemcarry/items.lua)
Craft arrastando (ligado) Arrastar um item sobre o outro faz a receita (em resources/modules/dragcraft/recipes.lua)
Item no chão vira prop (desligado) Item largado aparece como o prop dele (tabela item e prop no painel)
Consumíveis (ligado) Igual ao qbx_consumables: comida, bebida e álcool no painel (fome ou sede sorteada entre o mínimo e o máximo, alívio de estresse com aviso, animação e objeto na mão), contador de álcool com os eventos de evidência, drogas (baseado, cocaína, crack, ecstasy, oxy e metanfetamina), lockpick e lockpick avançado (evento lockpicks:UseLockpick) e a garrafa vazia depois da água. Mantém os eventos consumables:* e os exports pelo nome antigo (exports.qbx_smallresources:AddHunger e os outros). O baseado usa a animação do rpemotes-reborn. Substitui o qbx_consumables

Som

Módulo O que faz
Trilha sonora (ligado) Player de música do servidor: scripts pedem música por prioridade e a trilha toca a mais importante, com troca suave. Abaixa quando o jogador fala. O volume segue o slider de efeitos sonoros das configurações de áudio do GTA (zerado, não toca). Ao trocar de faixa, mostra um aviso com capa, título e artista, ou um player com play e pause, numa das 8 posições das notificações do ox_lib. Opções: volume da trilha, tempo da troca, abaixar falando e quanto, aviso da faixa, posição do aviso e do player, os momentos e os locais

Mundo

Módulo O que faz
Sem capacete automático (ligado) O personagem não põe capacete sozinho na moto
Máscara sem atravessar o rosto (desligado) Encolhe cabeça e traços enquanto a máscara pede
Postes indestrutíveis (ligado) Postes, semáforos e hidrantes não quebram (modelos no painel)
Densidade (ligado) Quantidade de carros estacionados, no trânsito e aleatórios, pedestres e NPCs de cenário (0 a 1, padrão 0.8). A opção Cidade vazia tira todos de uma vez. NPCs de gangue, polícia, bombeiros, médicos e presos não atacam o jogador. Sem veículos parados no aeroporto, na base militar e em mais dois pontos. Substitui o qbx_density
Trânsito (ligado) Escolhe no painel quais carros e motos aparecem no trânsito, grupo por grupo (bairros pobres, classe média, ricos, centro, rodovias, interior e motos), entre os do GTA e os das DLCs. Muda na hora: o carro desligado para de aparecer e os que já estão na rua somem com o tempo. Vem com a lista de cara brasileira ligada e o resto desligado. Substitui o mri_replacetraffic
Necessidades (ligado) Liga e desliga fome, sede e estresse e ajusta quanto a fome e a sede caem a cada ciclo do qbx_core (padrão 4,2 e 3,8). Fome ou sede desligada fica sempre cheia e não tira vida. O estresse vem desligado: fica em zero, sem aviso nem tremor, a barra some do mri_Qhud e comida e bebida não mostram mais o aviso de estresse. O estresse não tem ritmo de queda: ele sobe por evento (velocidade e tiro, no mri_Qhud) e desce com item. Precisa do qbx_core 1.24.1 ou mais novo
Polícia e serviços do GTA (ligado) Igual ao qbx_disableservices: desliga a polícia, os bombeiros, a ambulância, as gangues de reforço e o exército que o GTA manda sozinho (as barreiras da polícia continuam ligadas), os policiais a pé, o rádio da polícia e as sirenes ao longe, e trava o nível de procurado em 0. Cada serviço pode ser religado no painel. Substitui o qbx_disableservices e parte do qbx_ignore
Mapa (ligado) Igual ao qbx_ignore e companhia: sem câmera parada e sem som ambiente, sem caminhão de lixo, carros não desenhados de longe, cenários e grupos de cenário desligados e veículos fora do trânsito (reaplicados a cada 10 s) e sons fixos desligados. O comando /staticemitters (admin) lista os sons fixos do mapa por interior, com marcadores e teleporte. Substitui o qbx_ignore e o qbx_staticemitters (props do mapa removidos ficam com o mri_Qobjects)
Áreas sem carro estacionado (ligado) O GTA não estaciona carro nas áreas da lista (hospitais, delegacias, praia de nudismo e helicópteros de Vespucci). Saiu do módulo Mapa
Cancelas automáticas (ligado) Cancelas e portões do mapa abrem sozinhos quando o carro chega perto. Vem com 69 cancelas de estacionamento e de linha de trem; no painel o admin adiciona mirando no portão, remove e vai até cada uma (lista por tipo, bairro e distância). A opção Para que lado abre vale pra todas: pros dois lados, abrindo longe do carro (padrão, o módulo gira a cancela no lugar do GTA), todas pro outro lado, ou um lado só (cada cancela pode ter o Outro lado ligado), e o botão Mostrar áreas desenha, só na tela do admin, o círculo onde cada uma abre: verde abre, vermelho é prop não achado ou que não é porta. Opções: distância para abrir (padrão média) e velocidade da cancela (padrão rápida). Substitui o cfx-anes-gates

Comandos

Comando Permissão Descrição
/mriqbox mri_Qbox.admin ou command Abre o painel de configuração
/tpway A do /tpm Atalho de /tpm: teleporta pro waypoint do mapa
/god [id] A do /revive Atalho de /revive: revive o jogador informado ou você mesmo
/menu <job> Nenhuma Abre o painel da organização no mri_Qbossmenu (admin entra em qualquer uma)
/mri_carradio Nenhuma Liga e desliga o rádio do carro
/item <item> [qtd] [alvo] [tipo] group.admin Dá um item a você ou ao alvo
/tuning group.admin Aplica todos os mods no veículo atual
/customs group.admin Abre a customização do veículo atual
/menu_admin group.admin Abre o menu F10
/raycast group.admin Pega coordenadas por raycast e copia
/vipadm <id> <add| /staticemitters` admin Lista os sons fixos do mapa (módulo Mapa)
rem> [tier]` group.admin Dá ou tira um tier de VIP

Cada comando pertence a um módulo e só faz algo com o módulo ligado. /menu não tem restrição de permissão. /tpway e /god são atalhos (módulo Atalhos de comando) e seguem a permissão do comando que chamam.


Teclas

Tecla Ação
F9 Menu do jogador
F10 Menu de administração (executa /menu_admin, que exige group.admin)
E Derrubar correndo (tackle)
O Trocar de banco no veículo (shuffleSeat)
Y Piloto automático (toggle_cruise_control)
Shift + E Empurrar veículo (push_vehicle e push_vehicle_e)

São keybinds do ox_lib (menu_jogador_keybind e menu_admin_keybind); o jogador pode trocar nas configurações do FiveM. As teclas vindas do qbx_smallresources mantêm o nome do keybind de lá, então quem já tinha escolhido outra tecla continua com ela. O rádio do carro (/mri_carradio) vem sem tecla.


Menus F9 e F10

F9: menu do jogador

Identificação (/id), Emprego (/job), Gangue (/gang), Ver Reputação (/rep), Ver Habilidades (/skill) e Waypoints (limpar marcadores e configurações). "Gerenciar Emprego" e "Gerenciar Gangue" aparecem pra chefe ou recrutador, segundo o mri_Qbossmenu.

F10: menu de administração

Abrir Painel (/adm), Customizar Veículo (/customs), Relógio (hora, escala de tempo, congelar tempo), Clima (/weather) e Gerenciamento: Portas, Blips, Baús, NPC, Props, Elevador, Outdoors/Posters, Garagens, Crafting, Grupos, Spotlight e, com o mri_Qvinewood, Vinewood. O VIP entra aqui quando o módulo está ligado.

Outros recursos acrescentam entradas pelos exports (ver Entrypoints). Alvos: 'player' (F9), 'f10' e 'management'.


Staff

Os cargos de staff ficam no Permissões do mri_Qadmin: o grupo vinculado a group.admin, group.mod ou group.support dá o cargo a quem entra nele. O /staff agora é do mri_Qadmin.

Quem tinha cargo pelo antigo /staff (em metadata.staff) continua com ele: o mri_Qbox reaplica o cargo ao logar até o mri_Qadmin mover o personagem para o grupo do cargo.


VIP

O tier fica em metadata.vip e vira principal ACE com o mesmo nome.

  • Salário: a cada intervalo (minutos, no painel), cada VIP online recebe o payment do tier na conta escolhida. 0 desliga.
  • Peso do inventário: no login e a cada mudança, o peso máximo vira inventory * 1000 gramas. Quem não é VIP usa o tier nenhum, por isso ele precisa existir.
  • Painel: F10 > Vip lista VIPs online e offline e permite adicionar e remover.

Tiers no painel, em JSON:

{
  "nenhum": { "label": "Sem vip", "payment": 0, "inventory": 100 },
  "tier1": { "label": "Tier 1", "payment": 5000, "inventory": 200 }
}

Veículos: cadastro e estoque

Módulo da base (sempre ligado, substitui o antigo mri_Qvehicles). Cadastra, edita e controla o estoque dos veículos sem editar o shared/vehicles.lua do qbx_core e sem reiniciar.

  • Onde abre: aba Veículos do mri_Qadmin, ou /mriqbox > Veículos > Veículos.
  • Adicionar veículos (carros addon) com nome, marca, preço, categoria, tipo e estoque.
  • Modelos fora da lista: mostra os veículos que o jogo conhece (base e packs rodando) e que não estão na lista do qbx_core. "Cadastrar" abre o formulário já com o nome, a marca e o tipo que o jogo dá. É o antigo /models, agora na tela.
  • Editar veículos do jogo: só os campos alterados ficam salvos; o resto segue o shared/vehicles.lua, então atualizações do Qbox continuam chegando.
  • Remover e restaurar: veículo do jogo removido fica no filtro "Removidos" e volta ao original com um clique.
  • Aviso de modelo ausente: marca veículos cujo modelo não existe no jogo (nome errado ou pack do carro parado).
  • Tudo vale na hora pra concessionária, garagem, painel admin e demais scripts que usam a lista do qbx_core. Com a tela aberta, compras e mudanças de outro admin atualizam sozinhas.

Precisa do qbx_core com a API de veículos em runtime (UpsertVehicleData e RemoveVehicleData, na pasta mri/ do fork MRI).

Tabela vehicles_data

Criada ou ajustada sozinha no start.

Coluna Significado
model nome de spawn do veículo
stock estoque da concessionária
name, brand, price, category, type NULL = valor do shared/vehicles.lua; preenchido = editado pelo painel
removed veículo do jogo removido pelo painel

A versão antiga do qbx_vehicleshop gravava uma cópia completa de cada veículo nessa tabela. No primeiro start, o estoque fica, os campos iguais ao shared/vehicles.lua viram NULL e os diferentes ficam como edição. Nada é apagado.

Vindo do mri_Qvehicles

Tire o mri_Qvehicles do servidor (pasta e ensure). O mri_Qbox faz provide dele e continua com a mesma tabela, a mesma permissão (mri_Qvehicles.admin), a mesma aba no mri_Qadmin e os mesmos exports. Se os dois estiverem rodando juntos, o módulo de veículos do mri_Qbox não sobe e avisa no console.

Vindo do qbx_density

Tire o qbx_density do servidor (pasta e ensure) e ajuste os valores no módulo Densidade. O mri_Qbox faz provide dele e responde exports.qbx_density:SetDensity(tipo, valor) (tipos parked, vehicle, randomvehicles, peds, scenario; nil volta ao valor do painel). Os .ymap que desligavam veículos parados viraram áreas no código, sem stream/. Se os dois estiverem rodando juntos, o módulo não sobe e avisa no console do F8.

Para scripts que guardam a lista de veículos

Quem pega a lista uma vez (exports.qbx_core:GetVehiclesByName() ou GetCoreObject().Shared.Vehicles) recebe uma cópia. Pra acompanhar as mudanças do painel, escute o evento do qbx_core:

-- server
AddEventHandler('qbx_core:server:onVehicleUpdate', function(model, vehicle)
    VEHICLES[model] = vehicle -- vehicle nil = removido
end)

-- client
RegisterNetEvent('qbx_core:client:onVehicleUpdate', function(model, vehicle)
    VEHICLES[model] = vehicle
end)

Classe de desempenho

A nota de desempenho que a base mostra (garagem do mri_Qgarage, oficina do mri_Qcustoms) vem de um lugar só, o export de cliente GetVehicleRating:

local rating = exports.mri_Qbox:GetVehicleRating(vehicle)
-- { speed, acceleration, braking, traction (0 a 1), value (100 a 1000), letter }
  • Cada barra é o valor do carro como ele está (peças instaladas contam: GetVehicleEstimatedMaxSpeed, GetVehicleAcceleration, GetVehicleMaxBraking, GetVehicleMaxTraction) dividido pelo melhor da categoria do GTA vezes 1,15.
  • A nota pesa velocidade e aceleração 32% cada, freio e tração 18% cada, e vai de 100 a 1000.
  • Letra pela nota: até 400 D, até 500 C, até 600 B, até 700 A, até 800 S1, até 900 S2, acima X.
  • Pesos e faixas ficam no topo da seção em resources/modules/vehicles/client.lua.
  • Devolve nil se a entidade não for um veículo. Quem usa esconde a nota nesse caso.

Editor do inventário

Módulo da base (sempre ligado). Edita o ox_inventory no jogo sem mexer nos arquivos dele: as mudanças ficam em data/inventory.json do mri_Qbox, e o ox_inventory junta tudo por cima dos arquivos data/*.lua dele quando carrega.

  • Onde abre: aba Editor do inventário do mri_Qadmin, ou /mriqbox > Inventário > Editor do inventário.
  • Abas: Itens, Armas, Lojas, Crafting, Licenças, Baús, Evidências, Veículos (porta-malas e porta-luvas por classe ou por modelo) e Animações.
  • Itens e lojas da MRI: vêm do mri_Qbox (resources/modules/inventory/base/items.lua e shops.lua), não do ox_inventory, e o editor mostra eles como original. Se o dono mexeu no items.lua ou no shops.lua do ox_inventory, o arquivo dele vale: do mri_Qbox só entra o que falta lá.
  • Editar o que vem do ox_inventory: só o que mudou fica salvo, então atualizações do ox_inventory continuam chegando. Partes em código do original (botões, efeitos) continuam valendo.
  • Novo, remover e voltar ao original: removido fica no filtro Removidos e volta com um clique.
  • Pegar 1: dá um do item ou da arma pra testar.
  • Posições: não se digitam. Minha posição usa onde você está (no atendente da loja, também a direção pra onde você olha) e Ir até leva você até lá. Zona do ox_target e ajuste fino ficam no Avançado (JSON).
  • Avançado (JSON): todos os campos da entrada, inclusive os que o formulário não mostra.
Aba Vale na hora Vale no próximo restart do servidor
Itens e armas Criar e editar Remover
Lojas Produtos e preços Locais, blip e loja nova
Crafting Tudo
Licenças Preço Local e licença nova
Baús, evidências, veículos e animações Tudo

Precisa do ox_inventory da MRI com mri/data.lua e mri/live.lua. Permissão: ACE mri_Qbox.admin ou command. Ao atualizar o mri_Qbox à mão, guarde o data/inventory.json.


Integrações

mri_Qadmin

O painel aparece como a aba "MRI Qbox" e a tela de veículos como a aba "Veículos" (dois plugins do mesmo resource).

mri_Qbossmenu (qbx_management e mri_Qjobsystem)

O mri_Qbossmenu substitui os dois e responde pelos nomes deles. O F9 consulta CheckPlayerIsbossByJobSystemData e CheckPlayerIrecruiterByJobSystemData pra mostrar as opções de gerenciar. O painel de VIP pega os jogadores próximos por qbx_management:server:getPlayers, e o /menu <job> abre o painel por OpenBossMenu.

ox_inventory

Ganchos swapItems/createItem dos módulos de item no chão, craft arrastando e carregar nos braços (registrados só com o módulo ligado) e o export itemPlace nos itens.


Entrypoints para outros recursos

Menus (cliente)

exports.mri_Qbox:AddPlayerMenu({          -- F9
    title = 'Minha opção',
    icon = 'star',
    iconAnimation = 'fade',
    description = 'Descrição da opção',
    arrow = true,
    onSelectFunction = function() ExecuteCommand('meucomando') end,
    onSelectArg = nil,                    -- opcional: argumento pra onSelectFunction
})
exports.mri_Qbox:RemovePlayerMenu('Minha opção')

exports.mri_Qbox:AddManageMenu({ ... })   -- F10 > Gerenciamento
exports.mri_Qbox:RemoveManageMenu('Minha opção')

exports.mri_Qbox:AddItemToMenu('f10', { ... })  -- 'f10' | 'management' | 'player'
exports.mri_Qbox:RemoveItemFromMenu('f10', 'Minha opção')

GetRayCoords (cliente)

Seletor de coordenadas por raycast. Bloqueia até E (vector3), G (vector4) ou Q (cancela, retorna false). Já copia pro clipboard.

local coords = exports.mri_Qbox:GetRayCoords()

Request (cliente)

Pergunta Sim/Não num menu do ox_lib. Bloqueia até a resposta e retorna booleano. Também disponível como callback mri_Qbox:client:request.

local confirmou = exports.mri_Qbox:Request('Título', 'Texto da pergunta', 'top-right')

CanCarryItem (cliente)

local pode = exports.mri_Qbox:CanCarryItem('water', 5)

SetDensity (cliente)

exports.mri_Qbox:SetDensity('peds', 0.2) -- nil volta ao valor do painel

addVip / removeVip (cliente)

exports.mri_Qbox:addVip({
    vipData = { source = 1, citizenId = 'ABC12345', name = 'Nome Sobrenome', offline = false },
    newRole = 'tier1',
    callback = function() end,   -- opcional
})

VipAdm (servidor)

Mesma lógica do /vipadm. Retorna true em caso de sucesso.

exports.mri_Qbox:VipAdm(source, { id = targetId, tipo = 'add', tier = 'tier1' })

addRecipe (cliente e servidor)

Receita de craft arrastando em runtime; sincroniza o outro lado sozinha.

exports.mri_Qbox:addRecipe('garbage metalscrap', {
    duration = 2000,
    costs  = { garbage = { need = 1, remove = true }, metalscrap = { need = 1, remove = true } },
    result = { { name = 'lockpick', amount = 1 } },
})

A chave é "<itemA> <itemB>"; a ordem inversa também vale.

itemPlace (servidor)

Pra usar no campo export de um item do ox_inventory: coloca o prop do item no chão à frente do jogador e bloqueia o uso dentro de veículo.

['cadeira'] = {
    label = 'Cadeira',
    weight = 1000,
    prop = 'prop_chair_01a',
    export = 'mri_Qbox.itemPlace',
},

Trilha sonora (estado e evento)

A trilha não tem export: quem pede música não precisa saber se o mri_Qbox está rodando (sem ele, nada acontece e não dá erro) e nada passa pelo servidor.

Pedido contínuo (tocar enquanto algo dura): uma chave music:<id> no statebag do jogador. Toca o pedido de maior prioridade (o mais recente desempata); ao soltar (nil), volta o que estava por baixo. Prioridades: ambient (10), zone (20), activity (30), scene (40), ui (50), ou um número. Por ser estado, o pedido sobrevive a reinício: se o mri_Qbox subir depois, ele lê as chaves que já existem.

-- client (o último argumento false = só neste client, sem rede)
LocalPlayer.state:set('music:perseguicao', { moment = 'chase', priority = 'activity' }, false)
LocalPlayer.state:set('music:perseguicao', nil, false)        -- solta

-- abaixar a música (diálogo, cutscene com som próprio): nível 0 a 1, ou { level, fade }
LocalPlayer.state:set('musicDuck:cutscene', { level = 0.3, fade = 800 }, false)
LocalPlayer.state:set('musicDuck:cutscene', nil, false)

-- servidor, pra um jogador
Player(source).state:set('music:evento', { moment = 'festa', priority = 'zone' }, true)

-- servidor, pra todo mundo (só o servidor escreve no GlobalState)
GlobalState['music:carnaval'] = { moment = 'festa', priority = 'zone' }
GlobalState['music:carnaval'] = nil

Quem pediu deve soltar a chave ao terminar (e ao parar o resource).

Frase curta por cima (missão concluída, alerta): evento local; a música abaixa enquanto ela toca.

TriggerEvent('mri_Qbox:soundtrack:stinger', { moment = 'alerta' })                 -- client
TriggerClientEvent('mri_Qbox:soundtrack:stinger', source, { moment = 'alerta' })   -- servidor

Faixa: moment (cadastrado no painel) ou url direto, em três formatos:

Formato Exemplo Observação
YouTube https://www.youtube.com/watch?v=... Toca pelo player do YouTube
Link direto de áudio https://cdn.exemplo.com/chase.ogg Player leve, sem anúncio, loop sem emenda
Arquivo de um resource @meu_script/sounds/chase.ogg O próprio script hospeda: o arquivo precisa estar no files do fxmanifest dele

Opções do pedido: volume (0 a 1), loop, fade (ms) e title (nome no aviso).

Como aparece na tela (no pedido ou no momento; sem nada, vale o painel):

Opção Valores Efeito
display toast (padrão), player, none Aviso que some em alguns segundos, player com play/pause e progresso que fica enquanto a música é a da vez, ou nada na tela
position top, top-right, top-left, bottom, bottom-right, bottom-left, center-right, center-left As mesmas 8 posições das notificações do ox_lib. bottom-left fica acima do minimapa. Sem ela, a posição do aviso ou do player do painel
autoplay true (padrão), false Só no player: com false ele aparece pausado, esperando o play
focus true Só no pedido: o player ganha o mouse até a pessoa dar play, fechar (X) ou apertar ESC
-- caixa de som: aparece no meio da tela, pausada, com o mouse pra pessoa dar play
LocalPlayer.state:set('music:caixa', {
    url = '@meu_script/sounds/radio.ogg',
    priority = 'activity',
    display = 'player',
    autoplay = false,
    focus = true,
    position = 'center-right',
}, false)

Pausar segura a vez da música: ela fica em silêncio sem pular pra outra de prioridade menor, e o play continua de onde parou. Sem focus, o player só mostra e não dá pra clicar (clicar na NUI tira o controle do personagem, então quem decide é o script).

Os momentos se cadastram no painel (módulo Trilha sonora, campo Momentos): nome, uma ou mais faixas (com várias, sorteia uma a cada vez), volume, loop, como aparece, posição e se o player começa tocando. Cada faixa tem um ▶ pra ouvir na hora.

Locais da trilha (painel)

No painel, módulo Trilha sonora, campo Locais: cada local é um círculo no mapa que toca um momento enquanto o jogador está dentro. Saiu, volta o que estava tocando antes. Não precisa de script.

  • Cadastre antes os momentos (campo Momentos, logo acima). Adicionar local aqui cria o local na posição atual do jogador; Usar minha posição move um local existente. Vá até o lugar com o painel aberto.
  • Cada local: nome, raio (metros), momento, prioridade (zona por padrão, pra perseguição e cena passarem por cima), só a pé ou só de veículo, altura mínima e máxima (separa andares e interiores) e só à noite (20h às 6h).
  • Testar toca o momento na hora; Mostrar desenha o círculo no mundo por 20 segundos (feche o painel pra ver).
  • Locais um dentro do outro seguem a prioridade, e o mais recente desempata.
  • Usa as zonas do ox_lib: só acordam ao entrar e sair. Cada jogador roda os próprios locais, então ninguém dispara a música de outro.

Estoque de veículos (servidor)

Export Nome antigo Descrição
exports.mri_Qbox:GetVehicleStock(model) GetStock Estoque do modelo (0 quando não há linha)
exports.mri_Qbox:GetVehicleStocks() GetStocks Estoque de todos os modelos com linha na tabela
exports.mri_Qbox:TakeVehicleStock(model) TakeStock Tira uma unidade. Retorna false sem estoque. Atômico no banco
exports.mri_Qbox:ReturnVehicleStock(model) ReturnStock Devolve uma unidade (ex.: pagamento falhou)
exports.mri_Qbox:SetVehicleStock(model, stock) SetStock Define o estoque

O nome antigo (exports.mri_Qvehicles:GetStock e os outros) continua respondendo, pra quem já chamava o mri_Qvehicles (o mri_Qbox faz provide dele). Script novo usa o nome do mri_Qbox.

Passaporte (servidor)

Export Descrição
exports.mri_Qbox:GetPlayerPassport(source) Passaporte do jogador online (nil sem personagem carregado)
exports.mri_Qbox:GetPlayerByPassport(passport) source do jogador online com esse passaporte, ou nil
exports.mri_Qbox:GetCitizenIdByPassport(passport) citizenid do personagem, mesmo offline
exports.mri_Qbox:SetCitizenPassport(citizenId, passport) Troca o passaporte do personagem, mesmo offline. Devolve true ou false, motivo: disabled (módulo desligado), invalid, not_found, taken (já é de outro) ou not_reserved (número igual ou acima do próximo passaporte, que um personagem novo ainda vai pegar)
exports.mri_Qbox:IsPassportEnabled() true com o módulo ligado. Pra acompanhar sem perguntar, ouça a chave GlobalState['mri:passportEnabled'] com AddStateBagChangeHandler

No cliente e em outros resources, o passaporte está em Player(source).state.passport (no próprio cliente, LocalPlayer.state.passport). Serve pra mostrar; pra decidir alguma coisa no servidor, use os exports, porque o cliente consegue escrever no próprio statebag.

GlobalState UIColors

Cores de status que os recursos MRI leem:

{ success = '#51CF66', info = '#668CFF', warning = '#FFD700', danger = '#FF6347' }

Estrutura de arquivos

mri_Qbox/
├── data/config.json            # valores salvos pelo painel
├── html/                       # NUI (painel, contador de drift, trilha) e vehicles.html (aba Veículos)
├── resources/
│   ├── core/                   # núcleo: registro dos módulos, config, painel, exports
│   └── modules/<módulo>/       # um módulo por pasta: config.lua, client.lua, server.lua
└── fxmanifest.lua

About

Responsável por fazer as principais conexões entre os resources da mri Qbox

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages