mri-QboxResourcesRandol Exporting

randol_exporting — Manual

Trabalho de exportação de veículos com progressão por XP e tiers: o jogador recebe um carro com bomba e tem tempo limitado para entregá-lo no ponto de drop-off antes que ele exploda.


Sumário

  1. Dependências
  2. Instalação
  3. Configuração
  4. Tiers e progressão
  5. Fluxo da missão
  6. Banco de dados
  7. Integrações
  8. Localização
  9. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
qb-core ou es_extendedSimBridge automático em bridge/
ox_libSimCallbacks, locale, points, zones, textUI, contexto, scaleform. Precisa ter GetActivePlayers() no init.lua (versão recente)
oxmysqlSimPersistência de XP na tabela export_xp
qb-targetNãoSó se UseTarget = true. Com false, a interação com o NPC usa lib.zones + tecla E
Script de combustívelNãoSó se Fuel.enable = true

Instalação

  1. Copie a pasta randol_exporting para resources/.
  2. Adicione ao server.cfg:
    ensure randol_exporting
  3. Não é preciso importar SQL: a tabela export_xp é criada automaticamente no start do recurso.
  4. Não há itens de inventário a cadastrar.

Configuração

shared.lua (compartilhado)

CampoTipoObrigatórioDescrição
DebugboolSimDesenha as zonas (lib.zones) e imprime no console do servidor os dados da missão gerada
PedModelhashSimModelo do NPC que dá o trabalho (padrão csb_isldj_03)
PedCoordsvec4SimPosição e heading do NPC. O NPC é criado a 30 metros de distância
VehicleSpawnvec4SimOnde o veículo da missão é criado. Se houver qualquer veículo num raio de 3.0, o trabalho é recusado
BlipInfo.StringstringSimNome do blip do ponto de entrega
BlipInfo.SpritenúmeroSimSprite do blip (padrão 430)
BlipInfo.ScalenúmeroSimEscala do blip
BlipInfo.ColournúmeroSimCor do blip
BlipInfo.AlphanúmeroSimOpacidade do blip
BlipInfo.Radius_AlphanúmeroSimOpacidade do blip de raio (150 metros)
BlipInfo.Radius_ColournúmeroSimCor do blip de raio
Fuel.enableboolSimtrue chama exports[Fuel.script]:SetFuel(veh, 100.0); false usa o statebag Entity(veh).state.fuel
Fuel.scriptstringSimNome do recurso de combustível (padrão LegacyFuel)
UseTargetboolSimtrue usa qb-target no NPC; false usa zona + tecla E

sv_config.lua (servidor)

CampoTipoObrigatórioDescrição
DeleteVehicleTimernúmero (minutos)SimTempo até o veículo destruído ser removido do mundo após a falha (padrão 2)
Vehiclestabela por tier (S, A, B, C, D)SimDefinição de cada tier — ver campos abaixo
Vehicles.<tier>.thresholdnúmeroSimXP mínimo para o jogador alcançar o tier
Vehicles.<tier>.timernúmero (segundos)SimTempo para entregar o veículo daquele tier
Vehicles.<tier>.payout{min, max}SimFaixa de pagamento sorteada
Vehicles.<tier>.listlista de stringsSimModelos de veículo possíveis no tier
Vehicles.<tier>.locationslista de vec3SimPontos de entrega do tier. Um é sorteado por missão
Vehicles.<tier>.xp{min, max}SimFaixa de XP ganho ao concluir
MissionRewardsfunção (Player, payout)SimHook de recompensa. Por padrão chama AddMoney(Player, 'cash', payout). Adicione aqui itens ou outras recompensas

Tiers e progressão

O tier do jogador é derivado do XP acumulado, comparando com o threshold de cada tier (padrão: D = 0, C = 1000, B = 5500, A = 7000, S = 10000).

O tier do veículo sorteado não é necessariamente o do jogador — há chance de cair um tier abaixo:

Tier do jogadorChance de cair um tier abaixo
S80% (vira A)
A75% (vira B)
B67% (vira C)
C50% (vira D)
Dsempre D

Interagindo com o NPC, o contexto mostra XP, tier atual, missões concluídas e missões falhadas.


Fluxo da missão

  1. Solicitar trabalho no NPC. Se já houver missão ativa ou um veículo bloqueando o spawn, a solicitação é recusada.
  2. O servidor sorteia tier, modelo, pagamento, XP e ponto de entrega, cria o veículo e warpa o jogador para dentro dele. O carro recebe placa EXP#####, upgrades de performance (motor 3, transmissão 2, suspensão 3, blindagem 4, freios 2, turbo), cores aleatórias e combustível cheio.
  3. Um cronômetro aparece na tela. Nos últimos 60 segundos ele fica vermelho; nos últimos 10 segundos toca um som de contagem.
  4. A missão falha se o tempo acabar ou se o jogador se afastar mais de 85 metros do veículo. Nos dois casos o carro explode, o contador de falhas sobe e o veículo é deletado após DeleteVehicleTimer minutos.
  5. No ponto de entrega (zona de 8x8x8), a tecla E inicia uma progressbar de 2 segundos. O servidor confere se o jogador está a menos de 10 metros do ponto e se o veículo é o da missão, paga, credita XP e deleta o carro.

Banco de dados

Criada automaticamente no start do recurso:

CREATE TABLE IF NOT EXISTS `export_xp` (
  `cid` VARCHAR(255) NOT NULL,
  `xp` int(11) DEFAULT 0,
  `completed` int(11) DEFAULT 0,
  `failed` int(11) DEFAULT 0,
  PRIMARY KEY (`cid`)
);

Cada personagem ganha uma linha no primeiro login. O recurso também recarrega o cache de todos os jogadores online 2 segundos após um restart ao vivo.


Integrações

Script de combustível

Com Fuel.enable = true, o veículo da missão recebe tanque cheio via exports[Fuel.script]:SetFuel. Com false, usa o statebag Entity(veh).state.fuel = 100 (compatível com ox_fuel).

qb-target / ox_target

Com UseTarget = true, a interação com o NPC é registrada em exports['qb-target']:AddTargetEntity. O ox_target também aceita essa chamada por compatibilidade. Com UseTarget = false, o recurso não depende de nenhum target.

Chaves do veículo (QB)

No bridge QB, handleVehicleKeys dispara qb-vehiclekeys:server:AcquireVehicleKeys com a placa. No bridge ESX a função é um stub — implemente ali se o seu servidor usa chaves.


Localização

As strings são traduzidas via ox_lib locale. Os arquivos ficam em locales/:

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

O locale ativo é definido pela convar no server.cfg:

setr ox:locale "pt-br"

Estrutura de arquivos

randol_exporting/
├── bridge/
│   ├── client/
│   │   ├── esx.lua        — notificação, login/logout e chaves (stub) no ESX
│   │   └── qb.lua         — notificação, login/logout e qb-vehiclekeys no QB
│   └── server/
│       ├── esx.lua        — GetPlayer, identificador e AddMoney no ESX
│       └── qb.lua         — GetPlayer, citizenid e AddMoney no QB
├── cl_exports.lua         — NPC, contexto de reputação, cronômetro, zona de entrega, scaleforms
├── sv_exports.lua         — sorteio de tier/veículo, spawn, XP, sucesso/falha, tabela export_xp
├── shared.lua             — config compartilhada (NPC, blip, combustível, target)
├── sv_config.lua          — config do servidor (tiers, veículos, pagamentos, recompensas)
├── locales/
│   ├── en.json
│   └── pt-br.json
└── fxmanifest.lua