Manual do qbx_core

O framework principal para Qbox — base para servidores FiveM com suporte a multicharacter, múltiplos trabalhos/gangues, veículos persistentes e sistema de hooks.

Funcionalidades Principais

Sistema de Jogador

  • Multicharacter: Criação e gerenciamento de múltiplos personagens por jogador
  • Multi-Trabalho/Gangue: Suporte a múltiplos trabalhos e gangues simultâneos por jogador
  • Metadata: Sistema completo de metadados (fome, sede, estresse, vida, colete, etc.)
  • Persistência: Dados salvos automaticamente no banco de dados

Sistema de Grupos

  • Trabalhos: Definição de trabalhos com graus, salários e permissões
  • Gangues: Sistema completo de gangues com hierarquia
  • Gerenciamento: Adicionar/remover jogadores, alterar graus, definir grupo principal

Veículos Persistentes

  • Salva estado, propriedades, garagem e danos dos veículos
  • Transferência de propriedade entre jogadores
  • Rastreamento de estado (OUT, GARAGED, IMPOUNDED)

Sistema de Hooks

  • Hooks estilo Ox para estender funcionalidades
  • Eventos disparados em ações importantes do core

Anti-Cheat e Segurança

  • Detecção de exploits integrada
  • Desconexão automática de jogadores suspeitos

Sistema de Fila

  • Fila integrada para servidores cheios
  • Whitelist configurável (servidor aberto/fechado)

Configuração

config/shared.lua

Config = {
    Spawn = vector4(-1037.37, -2737.66, 13.76, 206.12), -- Spawn padrão
    Player = {
        DefaultHealth = 200,
        DefaultArmor = 0,
        DefaultHunger = 100,
        DefaultThirst = 100,
    },
    Money = {
        types = {'cash', 'bank', 'crypto'}
    }
}

config/server.lua

Config = {
    Logging = {
        webhook = '', -- URL do webhook Discord
        types = {'join', 'leave', 'death', 'commands'}
    },
    PvP = true, -- Ativar/desativar PvP global
    ClosedServer = false, -- Servidor fechado (whitelist)
}

config/client.lua

Config = {
    MapText = 'Qbox Framework', -- Texto na tela de pause
    EnableDebug = false,
}

Metadata do Jogador

CampoTipoPadrãoDescrição
healthnumber200Vida do jogador
hungernumber100Nível de fome (0-100)
thirstnumber100Nível de sede (0-100)
stressnumber0Nível de estresse (0-100)
isdeadbooleanfalseJogador está morto
inlaststandbooleanfalseEstá em último alento
armornumber0Nível de armadura
ishandcuffedbooleanfalseEstá algemado
trackerbooleanfalsePossui rastreador
injailnumber0Tempo de prisão restante
bloodtypestringAleatórioTipo sanguíneo
dealerrepnumber0Reputação de traficante
craftingrepnumber0Reputação de fabricação
callsignstring’NO CALLSIGN’Indicativo do jogador

Comandos

Administradores

ComandoPermissãoDescrição
/tp [x] [y] [z]group.adminTeletransportar para coordenadas
/tp [id]group.adminTeletransportar para jogador
/tpmgroup.adminTeletransportar para marcador
/togglepvpgroup.adminAlternar modo PvP
/addpermission [id] [permission]group.adminAdicionar permissão ACE
/removepermission [id] [permission]group.adminRemover permissão ACE
/openservergroup.adminAbrir servidor (remover whitelist)
/closeserver [reason?]group.adminFechar servidor (ativar whitelist)
/car [model] [keepCurrent?]group.adminSpawnar veículo
/dv [radius?]group.adminDeletar veículo(s)
/givemoney [id] [type] [amount]group.adminDar dinheiro ao jogador
/setmoney [id] [type] [amount]group.adminDefinir dinheiro do jogador
/setjob [id] [job] [grade?]group.adminDefinir trabalho do jogador
/changejob [id] [job]group.adminAlterar trabalho principal
/addjob [id] [job] [grade?]group.adminAdicionar jogador a um trabalho
/removejob [id] [job]group.adminRemover jogador de um trabalho
/setgang [id] [gang] [grade?]group.adminDefinir gangue do jogador
/logoutgroup.adminFazer logout do jogador
/deletechar [id]group.adminDeletar personagem
/optingroup.adminAlternar opt-in de admin

Jogadores

ComandoDescrição
/jobExibir informações do trabalho atual
/gangExibir informações da gangue atual
/ooc [message]Chat fora de personagem
/me [message]Exibir ação de roleplay
/idExibir seu ID do servidor

Exports (API)

Server Exports

ExportParâmetrosRetornoDescrição
GetPlayersourcePlayer?Obter jogador online por source
GetPlayerByCitizenIdcitizenidPlayer?Obter jogador online por citizen ID
GetOfflinePlayercitizenidPlayer?Obter dados de jogador offline
GetPlayers-tableObter todos os jogadores online
Loginsource, citizenid?, newData?booleanFazer login de um jogador
Logoutsource-Fazer logout de um jogador
CreatePlayerplayerData, OfflinePlayerCriar um novo jogador
Savesource-Salvar jogador online
SaveOfflineplayerData-Salvar jogador offline
SetJobidentifier, jobName, grade?boolean, ErrorResult?Definir trabalho principal
SetGangidentifier, gangName, grade?boolean, ErrorResult?Definir gangue principal
AddPlayerToJobcitizenid, jobName, grade?boolean, ErrorResult?Adicionar jogador a um trabalho
RemovePlayerFromJobcitizenid, jobNameboolean, ErrorResult?Remover jogador de um trabalho
AddPlayerToGangcitizenid, gangName, grade?boolean, ErrorResult?Adicionar jogador a uma gangue
RemovePlayerFromGangcitizenid, gangNameboolean, ErrorResult?Remover jogador de uma gangue
SetPlayerPrimaryJobcitizenid, jobNameboolean, ErrorResult?Definir trabalho principal
SetPlayerPrimaryGangcitizenid, gangNameboolean, ErrorResult?Definir gangue principal
GetJobs-tableObter todos os trabalhos
GetGangs-tableObter todas as gangues
AddMoneyidentifier, moneyType, amount, reason?booleanAdicionar dinheiro
RemoveMoneyidentifier, moneyType, amount, reason?booleanRemover dinheiro
SetMoneyidentifier, moneyType, amount, reason?booleanDefinir dinheiro
SetMetadataidentifier, metadata, value-Definir metadata
GetMetadataidentifier, metadataanyObter metadata
CreatePlayerVehiclerequestinteger?, ErrorResult?Criar veículo
GetPlayerVehiclevehicleId, filters?PlayerVehicle?Obter veículo específico
GetPlayerVehiclesfilters?PlayerVehicle[]Obter veículos do jogador
SetPlayerVehicleOwnervehicleId, citizenidboolean, ErrorResult?Alterar dono
DeletePlayerVehiclesidType, idValuebooleanDeletar veículos
SaveVehiclevehicle, optionsboolean, ErrorResult?Salvar estado do veículo

Client Exports

ExportParâmetrosRetornoDescrição
GetVehiclesByNamekey?tableObter veículos por nome
GetVehiclesByHashkey?tableObter veículos por hash
GetVehiclesByCategory-tableObter veículos por categoria
GetWeaponskey?tableObter dados de armas

Eventos

Server Events

EventoPayloadDescrição
QBCore:Server:OnPlayerLoadedsourceDisparado quando o jogador carrega
QBCore:Server:OnPlayerUnloadsourceDisparado quando o jogador descarrega
QBCore:Server:OnJobUpdatesource, jobDisparado na atualização de trabalho
QBCore:Server:OnGangUpdatesource, gangDisparado na atualização de gangue
QBCore:Server:OnMoneyChangesource, moneyType, amount, actionType, reasonDisparado na alteração de dinheiro
qbx_core:server:onGroupUpdatesource, groupName, gradeDisparado na atualização de grupo
qbx_core:server:playerLoggedOutsourceDisparado no logout

Client Events

EventoPayloadDescrição
QBCore:Client:OnPlayerLoaded-Disparado quando o jogador carrega
QBCore:Client:OnPlayerUnload-Disparado quando o jogador descarrega
QBCore:Client:OnJobUpdatejobDisparado na atualização de trabalho
QBCore:Client:OnGangUpdategangDisparado na atualização de gangue
qbx_core:client:playerLoggedOut-Disparado no logout
qbx_core:client:onSetMetaDatametadata, oldValue, newValueDisparado na alteração de metadata

Estrutura de Arquivos

qbx_core/
├── client/
│   ├── main.lua           # Inicialização, dados de veículos, exports
│   ├── groups.lua          # Gerenciamento de grupos
│   ├── functions.lua       # Funções utilitárias
│   ├── loops.lua           # Loops do client
│   ├── events.lua          # Handlers de eventos
│   ├── character.lua       # Gerenciamento de personagem
│   ├── discord.lua         # Discord rich presence
│   └── bridge/qb/         # Ponte de compatibilidade QB
├── server/
│   ├── main.lua           # Inicialização, exports, jogadores
│   ├── player.lua         # Dados do jogador, trabalhos, gangues
│   ├── groups.lua          # Gerenciamento de grupos
│   ├── commands.lua        # Comandos admin/jogador
│   ├── character.lua       # Criação de personagem
│   └── storage.lua         # Banco de dados
├── shared/
│   ├── jobs.lua           # Definições de trabalhos
│   ├── gangs.lua          # Definições de gangues
│   ├── items.lua           # Definições de itens
│   ├── vehicles.lua       # Dados de veículos
│   └── weapons.lua        # Dados de armas
├── modules/
│   ├── lib.lua            # Funções da biblioteca
│   ├── logger.lua         # Módulo de logging
│   ├── hooks.lua          # Sistema de hooks
│   └── playerdata.lua     # Dados do jogador
└── config/                # Arquivos de configuração

Dependências

DependênciaVersão MínimaObrigatória
ox_lib3.20.0
oxmysql-
ox_inventory2.42.1
OneSync Infinity-

Solução de Problemas

Jogador não consegue fazer login

  • Verifique se o banco de dados está rodando
  • Confirme se o oxmysql está iniciado antes do qbx_core
  • Verifique os logs do servidor para erros de banco de dados

Trabalho/gangue não atualiza

  • Verifique se o evento OnJobUpdate/OnGangUpdate está sendo disparado
  • Confirme se o jogador está online ao usar exports de servidor

Metadados não salvam

  • Verifique se o campo existe na tabela players
  • Confirme se o tipo de dado é compatível
  • Use SetMetadata ao invés de alterar diretamente

Erro de compatibilidade QB

  • O qbx_core usa ponte QB em client/bridge/qb/ e server/bridge/qb/
  • Verifique se os eventos QBCore estão sendo disparados corretamente