mri-QboxResourcesQbx Scrapyard

qbx_scrapyard — Manual

Ferro-velho: uma lista rotativa de veículos aceitos é sorteada pelo servidor, e o jogador desmancha esses veículos na zona de entrega em troca de materiais.


Sumário

  1. Dependências
  2. Instalação
  3. Configuração
  4. Fluxo de uso
  5. Lista de veículos
  6. Recompensas
  7. Integrações
  8. Entrypoints para outros recursos
  9. Localização
  10. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
qbx_coreSimGetPlayer, Notify, GetVehiclesByName (marca/modelo no e-mail), módulo lib
ox_libSimLocale, lib.zones, lib.progressBar, lib.callback, lib.playAnim
oxmysqlSimConsulta a tabela player_vehicles para bloquear veículos de jogadores
ox_inventorySimEntrega dos materiais (AddItem)
ox_targetNãoCria o NPC e a interação de e-mail quando a convar UseTarget está em true
qb-phoneNãoRecebe o e-mail com a lista de veículos aceitos

Instalação

  1. Copie a pasta qbx_scrapyard para resources/.
  2. Adicione ao server.cfg:
    ensure qbx_scrapyard
  3. Cadastre no ox_inventory os itens de recompensa: metalscrap, plastic, copper, iron, aluminum, steel, glass e rubber.
  4. Conflitos — o recurso declara provide 'qb-scrapyard'. Não rode junto com o qb-scrapyard.

Não há SQL próprio; a tabela player_vehicles já faz parte do QBox.


Configuração

config/client.lua

CampoTipoObrigatórioDescrição
useTargetboolSimLido da convar UseTarget. true cria um NPC com ox_target para pedir a lista; false usa zona com tecla E
debugPolyboolSimDesenha as zonas para depuração
useBlipsboolSimCria os blips das duas localizações
locations.main.coordsvec4SimOnde o jogador pede a lista de veículos (e onde o NPC é criado no modo target)
locations.main.blipNamestringSimNome do blip. Padrão: Scrap Yard
locations.main.blipIconnumberSimSprite do blip. Padrão: 380
locations.main.pedModelstringSimModelo do NPC criado quando useTarget = true. Padrão: a_m_m_hillbilly_01
locations.deliver.coordsvec3SimZona de entrega onde o veículo é desmanchado
locations.deliver.blipNamestringSimNome do blip. Padrão: Scrap Yard Delivery
locations.deliver.blipIconnumberSimSprite do blip. Padrão: 810

config/server.lua

CampoTipoObrigatórioDescrição
itemsarray de stringsSimPool de materiais sorteados a cada veículo desmanchado
vehiclesarray de stringsSimPool de modelos (spawn names) de onde a lista rotativa é sorteada. Precisa ter pelo menos 40 modelos distintos

A geração da lista sorteia 40 modelos distintos. Se o pool tiver menos de 40 modelos únicos, o laço não termina — mantenha o vehicles com pelo menos 40 entradas diferentes.


Fluxo de uso

  1. O jogador vai até locations.main e pede a lista de veículos aceitos (tecla E ou target no NPC).
  2. Após 15 a 20 segundos, chega um e-mail com marca e modelo de todos os veículos da lista atual.
  3. Ele leva um veículo da lista até a zona de entrega (locations.deliver), no banco do motorista, e pressiona E.
  4. Uma barra de progresso de 28 a 37 segundos roda com a animação de mecânico.
  5. Ao terminar, o servidor apaga o veículo, credita os materiais e remove aquele modelo da lista.

O código recusa a operação se: o jogador não é o motorista, o modelo não está na lista atual, ou a placa existe na tabela player_vehicles (veículo de jogador).


Lista de veículos

O servidor sorteia 40 modelos distintos do pool vehicles, envia a lista para todos os clientes e a regenera a cada 60 minutos (SetInterval). A primeira geração acontece 2 segundos após o start do recurso, e cada jogador que loga recebe a lista atual.

Desmanchar um veículo remove aquele modelo da lista até a próxima rotação.


Recompensas

Por veículo desmanchado:

  • De 2 a 4 sorteios em items, cada um com 25 a 45 unidades.
  • 1/8 de chance de receber de 10 a 20 unidades de rubber (o item bônus está fixo no código do servidor, não vem do config).

Integrações

ox_target

Com a convar UseTarget em true, o recurso cria o NPC pedModel em locations.main e adiciona a opção de pedir a lista por e-mail. Sem target, a mesma ação fica numa zona com [E]. A zona de entrega usa lib.zones.box com [E] nos dois modos.

qb-phone

A lista de veículos é enviada via qb-phone:server:sendNewMail, com remetente, assunto e corpo vindos do locale (email.*). Sem o qb-phone, o evento não é tratado e o jogador só recebe a notificação de “e-mail enviado”.


Entrypoints para outros recursos

Callback qbx_scrapyard:server:checkVehicleOwner

Retorna true se a placa existe na tabela player_vehicles.

-- cliente
local isOwned = lib.callback.await('qbx_scrapyard:server:checkVehicleOwner', false, plate)

Eventos internos

EventoLadoDescrição
qbx_scrapyard:client:setNewVehiclesClienteRecebe a lista atual de veículos aceitos
qbx_scrapyard:server:scrapVehicleServidorRecebe o índice na lista e o netId do veículo; apaga o veículo e credita os materiais

Localização

Strings via ox_lib locale, em locales/:

en, pt-br, pt, es, fr, nl, de, cs, tr

Idioma ativo pela convar:

setr ox:locale "pt-br"

Os nomes dos blips vêm do config/client.lua, não do locale.


Estrutura de arquivos

qbx_scrapyard/
├── client/
│   └── main.lua          — blips, zonas/NPC, validação do veículo, animação e barra de progresso
├── server/
│   └── main.lua          — geração da lista rotativa, callback de propriedade, entrega dos materiais
├── config/
│   ├── client.lua        — localizações, blips, NPC e modo de interação
│   └── server.lua        — pool de materiais e pool de veículos
├── locales/
│   ├── en.json
│   └── cs / de / es / fr / nl / pt / pt-br / tr .json
└── fxmanifest.lua