jim-mining — Manual

Job de mineração completo: quebrar minério com picareta, furadeira ou laser, lavar e garimpar pedras, fundir minérios em lingotes, lapidar joias e vender tudo para NPCs compradores.


Sumário

  1. Dependências
  2. Instalação
  3. Configuração
  4. Itens
  5. Ciclo de produção
  6. Locais
  7. Receitas de crafting
  8. Integrações
  9. Entrypoints para outros recursos
  10. Localização
  11. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
qb-coreSimexports['qb-core']:GetCoreObject() no cliente e no servidor. Em QBox, exige bridge de qb-core
ox_libSimCarregado via @ox_lib/init.lua. Progress bar e context menu
qb-targetSimTodas as zonas são criadas com qb-target, sem alternativa no código
ox_inventorySim (padrão)Loja registrada via RegisterShop("miningShop", ...) quando Config.Inv = "ox"
mri_QboxSimexports['mri_Qbox']:CanCarryItem é chamado antes de cada mineração
cw-repSimexports["cw-rep"]:updateSkill(src, 'mining', 5) é chamado a cada recompensa
rep-talkNPCNãoNPC tutorial “Seu Fábio”. Desative com Config.npcTalk = false
qb-menuNãoSó se Config.Menu = "qb"
jim-shopsNãoSó se Config.JimShops = true

Este é um fork com integrações MRI. As chamadas a mri_Qbox, cw-rep e rep-talkNPC não têm fallback: sem esses recursos, minerar e receber recompensa quebram.


Instalação

  1. Copie a pasta jim-mining para resources/.
  2. Adicione ao server.cfg, depois das dependências:
    ensure qb-target
    ensure ox_lib
    ensure jim-mining
  3. Copie o conteúdo de images/ para a pasta de imagens do seu inventário (por padrão ox_inventory/web/images/, o mesmo caminho de Config.img).
  4. Cadastre os itens no seu inventário. O recurso não traz items.lua nem SQL — ele apenas valida na inicialização. Se faltar item, o console imprime avisos como:
    Selling: Missing Item from QBCore.Shared.Items: 'goldore'
    Crafting recipe couldn't find item 'steel' in the shared
    Os itens necessários vêm de Config.Items.items (loja), Config.CrackPool, Config.WashPool, Config.PanPool, Config.SellingPrices e de todas as receitas em Crafting.
  5. Ajuste o config.lua (idioma, inventário, menu, notificações) e o shared/locations.lua (locais habilitados).

Não há permissões ACE.


Configuração

Todas as opções ficam em config.lua.

CampoTipoObrigatórioDescrição
Config.npcTalkboolSimCria o NPC tutorial “Seu Fábio” via rep-talkNPC na entrada da mina
Config.DebugboolSimLogs no console, debugPoly nas zonas, tempos reduzidos para 1-2 s e desativa o kick por dupe
Config.imgstringSimCaminho das imagens do inventário usado nos menus. Padrão "ox_inventory/web/images/"
Config.LanstringSimIdioma. Deve existir locales/<Lan>.lua. Padrão "pt"
Config.JimShopsboolSimAbre a loja via jim-shops:ShopOpen em vez do inventário padrão
Config.InvstringSim"ox" ou "qb". Define como itens são checados/removidos e se a loja é registrada no ox_inventory
Config.MenustringSim"ox" (ox_lib context) ou "qb" (qb-menu)
Config.ProgressBarstringSim"ox" ou "qb"
Config.NotifystringSim"ox" ou "qb"
Config.DrillSoundboolSimLiga o som da furadeira
Config.MultiCraftboolSimAtiva o submenu de quantidade ao fabricar
Config.MultiCraftAmountstabela de númerosSimQuantidades oferecidas no multicraft. Padrão { 1, 5, 10 }
Config.K4MB1PropboolSimUsa as props de minério do MLO Mining Cave da K4MB1 no lugar das props padrão do jogo
Config.TimingstabelaSimDuração de cada ação, em ms. Veja abaixo
Config.CrackPoollista de itensSimItens sorteados ao quebrar pedra: carbon, copperore, ironore, metalscrap
Config.WashPoollista de itensSimItens sorteados ao lavar pedra. goldore aparece duas vezes, o que dobra sua chance
Config.PanPoollista de itensSimItens sorteados ao garimpar. Itens repetidos têm chance proporcional
Config.OreSelllista de itensSimItens que o comprador de minérios aceita
Config.SellingPricestabela [item] = preçoSimPreço unitário de cada item vendável (minérios, gemas e joias). Todos vêm com 100
Config.ItemstabelaSimLoja de mineração: label, slots e a lista items (name, price, amount, slot)
CraftingtabelaSimReceitas dos 5 menus de fabricação. Veja Receitas de crafting

Config.Timings

ChavePadrãoOnde é usada
Cracking5000–10000 msQuebrar pedra na bancada
Washing10000–12000 msLavar pedra na água
Panning25000–30000 msGarimpar com a bateia
Pickaxe15000–18000 msMinerar com picareta e com furadeira
Mining10000–15000 msDeclarada no config
Laser7000–10000 msMinerar com laser
OreRespawn55000–75000 msTempo até a pedra minerada reaparecer
Crafting5000 msFabricação

Os valores usam math.random(min, max) e são sorteados uma vez no carregamento do config — não a cada ação.


Itens

A loja de mineração (Config.Items) vende:

ItemPreçoUso
pickaxe100Minerar. Tem ~10% de chance de quebrar por uso
miningdrill10000Minerar mais rápido. Consome drillbit
drillbit0Broca. Necessária para a furadeira; ~20% de chance de quebrar por uso
mininglaser60000Minerar com laser. Não consome nada
goldpan100Bateia, usada para garimpar
weapon_flashlight100Lanterna
water_bottle, sandwich, bandage10Consumíveis

Minerar sempre produz stone. stone é a matéria-prima de quebrar (Cracking) e lavar (Washing).


Ciclo de produção

  1. Minerar — nas pedras dentro das minas habilitadas, com pickaxe, miningdrill (requer drillbit) ou mininglaser. Rende de 1 a 3 stone. A pedra some e reaparece após Config.Timings.OreRespawn.
  2. Quebrar pedra (bancada prop_vertdrill_01) — consome 1 stone e devolve de 1 a 3 sorteios do CrackPool.
  3. Lavar pedra (nos rios e lagos de Locations.Washing) — consome 1 stone e devolve de 1 a 2 sorteios do WashPool (ouro e gemas brutas).
  4. Garimpar (goldpan, nas zonas de Locations.Panning) — não consome nada e devolve de 1 a 3 sorteios do PanPool (ouro, prata e lixo).
  5. Fundir (fundição) — transforma minérios em lingotes e metais pelas receitas SmeltMenu.
  6. Lapidar (bancada gr_prop_gr_speeddrill_01c) — corta gemas brutas e monta anéis, colares e brincos.
  7. Vender — o comprador de minérios (OreBuyer) compra os itens de Config.OreSell; o comprador de joias (JewelBuyer) compra as peças acabadas. A venda é sempre do estoque inteiro do item, ao preço de Config.SellingPrices, pago em dinheiro vivo.

Cada recompensa também chama exports["cw-rep"]:updateSkill(src, 'mining', 5).

Proteção anti-dupe

Ao remover um item, o servidor confere se o jogador realmente o tem. Se não tiver, o jogador é kickado com “Kicked for attempting to duplicate items” e o console registra o nome do personagem. Com Config.Debug = true, o kick não acontece.


Locais

Ficam em shared/locations.lua, na tabela Config.Locations.

ChaveConteúdo
Washing10 pontos de lavagem de pedra (montanhas, riacho, Gordo, Alamo Sea). Enable liga/desliga o grupo
Panning3 áreas de garimpo (Vineyard, Tongva, Wilderness), cada uma com Enable, Blip e uma lista Positions (coords vec4, w largura, d profundidade)
JewelBuyerComprador de joias na Vangelico. Vem desabilitado (Enable = false)
SmeltingCoordenada avulsa da fundição
MinesAs minas em si. Cada uma pode ter Blip, Store, Lights, Smelting, Cracking, OreBuyer, JewelCut e OrePositions

Minas incluídas:

MinaPadrãoConteúdo
FundiçãoHabilitadaLoja, fundição, 2 bancadas de quebrar pedra, comprador de minérios, 2 bancadas de lapidação
MineShaftHabilitadaBlip, loja, 30 luzes e 14 pedras de minério
QuarryHabilitadaBlip, loja, 5 luzes e 8 pedras de minério
K4MB1DesabilitadaMineshaft do MLO da K4MB1, com 32 pedras. Requer o MLO instalado

Cada mina aceita Job = "<nome>" para restringir os alvos a um emprego. Com Job = nil (padrão), qualquer jogador pode usar.

Para adicionar uma mina, copie o bloco comentado ao final de shared/locations.lua:

["NovaMina"] = {
    Enable = true,
    Job = nil,
    Blip = { Enable = true, name = "Mina", coords = vec4(0.0, 0.0, 0.0, 0.0), sprite = 527, col = 43 },
    Store = { },
    Cracking = { },
    OreBuyer = { },
    OrePositions = { vec4(0.0, 0.0, 0.0, 0.0) },
},

O recurso também esconde as portas do mineshaft com CreateModelHide(vec3(-596.04, 2089.01, 131.41), 10.5, ...), fixo no client.lua.


Receitas de crafting

A tabela Crafting em config.lua tem cinco menus. Em cada receita, a chave externa é o item produzido, as chaves internas são os ingredientes e amount (opcional) é quanto sai por fabricação.

MenuOnde é usadoProduz
SmeltMenuFundiçãocopper (x4), goldingot, silveringot, iron, steel, aluminum (x3), glass (x2). Lingotes também podem ser refundidos a partir de correntes e anéis
GemCutBancada de lapidaçãoemerald, diamond, ruby, sapphire a partir das versões uncut_
RingCutBancada de lapidaçãoAnéis de ouro e prata, lisos ou com gema
NeckCutBancada de lapidaçãoCorrentes e colares de ouro e prata, lisos ou com gema
EarCutBancada de lapidaçãoBrincos de ouro e prata, lisos ou com gema

Exemplo de leitura:

{ ["steel"] = { ["ironore"] = 1, ["carbon"] = 1 } },      -- 1 steel = 1 ironore + 1 carbon
{ ["gold_ring"] = { ["goldingot"] = 1 }, ['amount'] = 3 } -- 3 gold_ring = 1 goldingot

Integrações

mri_Qbox

Antes de cada mineração, o cliente chama exports['mri_Qbox']:CanCarryItem("stone", 2). Se o jogador não puder carregar, a ação é bloqueada com a notificação de inventário cheio.

cw-rep

A cada recompensa de mineração o servidor chama exports["cw-rep"]:updateSkill(source, 'mining', 5), somando XP na skill mining.

rep-talkNPC

Com Config.npcTalk = true, um NPC (s_m_m_dockwork_01) é criado em vec4(-599.69, 2093.15, 130.31, 347.62) com um diálogo tutorial em português e a opção de marcar no GPS a joalheria e a bancada de joias.

ox_inventory

Com Config.Inv = "ox", a loja é registrada no servidor com exports.ox_inventory:RegisterShop("miningShop", ...) e aberta no cliente com openInventory('shop', { type = 'miningShop' }).

jim-shops

Com Config.JimShops = true, a abertura da loja dispara jim-shops:ShopOpen em vez do inventário padrão.


Entrypoints para outros recursos

O recurso não registra exports. Os eventos abaixo são internos e usados pelo qb-target e pelos menus.

Eventos de servidor

EventoArgumentosDescrição
jim-mining:RewarddataEntrega a recompensa. data.mine, data.crack, data.wash ou data.pan define o tipo; data.cost é quanta stone consumir
jim-mining:SellingdataVende todo o estoque de data.item ao preço de Config.SellingPrices[data.item]
jim-mining:Crafting:GetItemItemMake, craftableRemove os ingredientes e entrega o item fabricado
jim-mining:server:toggleItemgive, item, amount, newsrcDá (true) ou remove (false) um item. A remoção passa pela checagem anti-dupe

Eventos de cliente

jim-mining:openShop, jim-mining:MineOre:Pick, jim-mining:MineOre:Drill, jim-mining:MineOre:Laser, jim-mining:CrackStart, jim-mining:WashStart, jim-mining:PanStart, jim-mining:SellOre, jim-mining:SellAnim, jim-mining:JewelSell, jim-mining:JewelSell:Sub, jim-mining:JewelCut, jim-mining:CraftMenu, jim-mining:Crafting:MultiCraft, jim-mining:Crafting:MakeItem.

Todos esperam a tabela data montada pelas opções do qb-target (com campos como stone, name, ped, bench, coords). Não foram feitos para chamada externa.


Localização

Os textos ficam em locales/, carregados como shared_scripts. O idioma ativo é escolhido por Config.Lannão pela convar ox:locale.

Idiomas incluídos: cn, da, de, en, et, fr, nl, pt, tr.

O padrão do fork é Config.Lan = "pt". Para adicionar um idioma, crie locales/<codigo>.lua seguindo a estrutura dos existentes (tabela Loc['<codigo>'] com as subtabelas info e error).

Alguns textos estão fora dos locales: os nomes dos locais em shared/locations.lua e os diálogos do NPC tutorial em client.lua estão hardcoded em português.


Estrutura de arquivos

jim-mining/
├── client.lua              — targets, props, minas, animações de mineração, menus de venda e crafting, NPC tutorial
├── server.lua              — recompensas, venda, crafting, anti-dupe, registro da loja no ox_inventory
├── config.lua              — inventário/menu/notify, timings, pools de itens, preços, loja e receitas
├── shared/
│   ├── shared.lua          — QBCore, helpers de model/anim/ptfx, props, peds, blips, progressBar, notify
│   └── locations.lua       — minas, lavagem, garimpo, fundição e compradores
├── locales/                — cn, da, de, en, et, fr, nl, pt, tr
├── images/                 — imagens dos itens (copiar para a pasta do inventário)
├── README.md
└── fxmanifest.lua