DRS Mining
Trabalho de mineração completo, com uma cadeia legal e outra ilegal. As rochas são partilhadas por todos os jogadores e cada pancada tem um minijogo de pontaria. Tem picaretas por nível, uma fundição com britadeira e forno, compradores com preços que variam, uma mina ilegal com laboratório e receptador, níveis com XP e uma classificação. Tudo é validado no servidor. Funciona com Qbox, QBCore e ESX.
#Requisitos
| Recurso | Obrigatório |
|---|---|
oxmysql | Sim |
| Qbox, QBCore ou ESX | Sim (deteção automática) |
qb-inventory, ox_inventory ou outro | Sim |
drs_battlepass | Não — missões de minerar e fundir |
#Instalação
- Coloca
drs_miningemresources. - Adiciona ao
server.cfg, depois dooxmysql, da framework e do inventário:
ensure oxmysql
ensure qb-core
ensure drs_mining- Adiciona os itens (ver abaixo) e copia as imagens de
install/images/para a pasta de imagens do inventário. - A tabela
drs_mining(níveis e XP) é criada sozinha no primeiro arranque.
#Itens
Os itens copper, iron, steel, goldbar e diamond já vêm com o QBCore. Os outros (pedra, carvão, minérios, esmeralda, lingote de prata, enxofre, salitre, pólvora e as três picaretas) são novos e têm ícones próprios em install/images/.
QBCore — dentro de qb-core/shared/items.lua:
-- qb-core/shared/items.lua (QBCore) — cola dentro de QBShared.Items / paste inside QBShared.Items
stone = { name = 'stone', label = 'Pedra', weight = 500, type = 'item', image = 'stone.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Pedra da pedreira. Tritura-a na fundição.' },
coal = { name = 'coal', label = 'Carvão', weight = 400, type = 'item', image = 'coal.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Combustível para o forno.' },
copper_ore = { name = 'copper_ore', label = 'Minério de cobre', weight = 600, type = 'item', image = 'copper_ore.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Funde-se em cobre.' },
iron_ore = { name = 'iron_ore', label = 'Minério de ferro', weight = 700, type = 'item', image = 'iron_ore.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Funde-se em ferro.' },
silver_ore = { name = 'silver_ore', label = 'Minério de prata', weight = 700, type = 'item', image = 'silver_ore.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Funde-se em barras de prata.' },
gold_ore = { name = 'gold_ore', label = 'Minério de ouro', weight = 800, type = 'item', image = 'gold_ore.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Funde-se em barras de ouro.' },
emerald = { name = 'emerald', label = 'Esmeralda', weight = 100, type = 'item', image = 'emerald.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Uma pedra preciosa rara.' },
silver_ingot = { name = 'silver_ingot', label = 'Barra de prata', weight = 1000, type = 'item', image = 'silver_ingot.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Barra de prata pura.' },
sulfur = { name = 'sulfur', label = 'Enxofre', weight = 500, type = 'item', image = 'sulfur.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Material cru de uma mina abandonada.' },
saltpeter = { name = 'saltpeter', label = 'Salitre', weight = 500, type = 'item', image = 'saltpeter.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Material cru de uma mina abandonada.' },
gunpowder = { name = 'gunpowder', label = 'Pólvora', weight = 200, type = 'item', image = 'gunpowder.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Não deixes perto de fogo.' },
pickaxe = { name = 'pickaxe', label = 'Picareta', weight = 2500, type = 'item', image = 'pickaxe.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Picareta básica.' },
steel_pickaxe = { name = 'steel_pickaxe', label = 'Picareta de aço', weight = 3000, type = 'item', image = 'steel_pickaxe.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'Mais força e um pouco de sorte.' },
diamond_pickaxe = { name = 'diamond_pickaxe', label = 'Picareta de diamante', weight = 3000, type = 'item', image = 'diamond_pickaxe.png', unique = false, useable = false, shouldClose = true, combinable = nil, description = 'A melhor picareta.' },ox_inventory / Qbox — dentro de ox_inventory/data/items.lua:
-- ox_inventory/data/items.lua (Qbox / ox_inventory) — cola dentro da tabela / paste inside the table
['stone'] = { label = 'Pedra', weight = 500, stack = true, close = true, description = 'Pedra da pedreira. Tritura-a na fundição.' },
['coal'] = { label = 'Carvão', weight = 400, stack = true, close = true, description = 'Combustível para o forno.' },
['copper_ore'] = { label = 'Minério de cobre', weight = 600, stack = true, close = true, description = 'Funde-se em cobre.' },
['iron_ore'] = { label = 'Minério de ferro', weight = 700, stack = true, close = true, description = 'Funde-se em ferro.' },
['silver_ore'] = { label = 'Minério de prata', weight = 700, stack = true, close = true, description = 'Funde-se em barras de prata.' },
['gold_ore'] = { label = 'Minério de ouro', weight = 800, stack = true, close = true, description = 'Funde-se em barras de ouro.' },
['emerald'] = { label = 'Esmeralda', weight = 100, stack = true, close = true, description = 'Uma pedra preciosa rara.' },
['silver_ingot'] = { label = 'Barra de prata', weight = 1000, stack = true, close = true, description = 'Barra de prata pura.' },
['sulfur'] = { label = 'Enxofre', weight = 500, stack = true, close = true, description = 'Material cru de uma mina abandonada.' },
['saltpeter'] = { label = 'Salitre', weight = 500, stack = true, close = true, description = 'Material cru de uma mina abandonada.' },
['gunpowder'] = { label = 'Pólvora', weight = 200, stack = true, close = true, description = 'Não deixes perto de fogo.' },
['pickaxe'] = { label = 'Picareta', weight = 2500, stack = false, close = true, description = 'Picareta básica.' },
['steel_pickaxe'] = { label = 'Picareta de aço', weight = 3000, stack = false, close = true, description = 'Mais força e um pouco de sorte.' },
['diamond_pickaxe'] = { label = 'Picareta de diamante', weight = 3000, stack = false, close = true, description = 'A melhor picareta.' },ESX — importa na base de dados:
-- ESX (sem ox_inventory / without ox_inventory)
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('stone', 'Pedra', 1, 0, 1),
('coal', 'Carvão', 1, 0, 1),
('copper_ore', 'Minério de cobre', 1, 0, 1),
('iron_ore', 'Minério de ferro', 1, 0, 1),
('silver_ore', 'Minério de prata', 1, 0, 1),
('gold_ore', 'Minério de ouro', 1, 0, 1),
('emerald', 'Esmeralda', 1, 1, 1),
('silver_ingot', 'Barra de prata', 1, 0, 1),
('sulfur', 'Enxofre', 1, 0, 1),
('saltpeter', 'Salitre', 1, 0, 1),
('gunpowder', 'Pólvora', 1, 1, 1),
('pickaxe', 'Picareta', 2, 0, 1),
('steel_pickaxe', 'Picareta de aço', 3, 0, 1),
('diamond_pickaxe', 'Picareta de diamante', 3, 0, 1);Noutros frameworks, se algum item de QBCore faltar, cria-o ou troca o nome no config.lua.
#Cadeia legal
- Capataz (na pedreira de Sandy Shores): compra a picareta, vê o teu perfil (nível, XP, estatísticas) e a classificação dos melhores mineiros. Também vende água e comida (
Config.ShopItems). - Mina: parte rochas com o minijogo e recebes pedra. As rochas maiores dão mais pedra, mas pedem mais nível.
- Fundição — britadeira: cada pedra dá um resultado ao calhas — carvão, cobre, ferro, prata, ouro, esmeralda, diamante ou só pó. Com mais nível sai minério melhor. A tabela de resultados e as percentagens estão à vista, conforme o teu nível.
- Fundição — forno: minério + carvão = barras (cobre, ferro, aço, prata, ouro).
- Compra de metais (noutro sítio da cidade): vende minério, barras e pedras preciosas. Os preços sobem e descem.
#Cadeia ilegal
- Mina abandonada (sem blip, é para ser descoberta): veios de enxofre e salitre, e às vezes pólvora. Cada rocha partida tem
policeAlert% de hipóteses de alertar a polícia (Config.PoliceJobs), que recebe uma zona aproximada no mapa (não o ponto exato) duranteConfig.PoliceBlipTimesegundos. - Laboratório clandestino (sem blip): enxofre + salitre + carvão = pólvora.
- Receptador (sem blip): compra o material ilegal.
#O minijogo
Em cada pancada aparece uma barra com uma zona boa e uma zona perfeita. Carrega em E no momento certo:
| Resultado | Dano |
|---|---|
| Perfeito | O dobro do dano |
| Bom | Dano normal |
| Falhar | Nenhum |
X pára de minerar. O tamanho das zonas está em Config.Minigame (com enabled = false, todas as pancadas contam como normais).
#Rochas
As rochas partidas ficam partidas para todos os jogadores até voltarem a aparecer (respawn, em segundos).
| Rocha | Nível | Pancadas | Dá |
|---|---|---|---|
| Pequena | 1 | 4 | 2–3 pedras |
| Média | 4 | 7 | 3–5 pedras |
| Grande | 9 | 11 | 5–8 pedras |
| Veio de enxofre (ilegal) | 5 | 8 | 1–3 enxofre, 4% pólvora |
| Veio de salitre (ilegal) | 5 | 8 | 1–3 salitre, 4% pólvora |
#Picaretas
| Picareta | Força | Sorte | Nível | Preço |
|---|---|---|---|---|
| Picareta | 1.0 | 0% | 1 | 350 |
| Picareta de aço | 1.6 | +0.5% | 6 | 2400 |
| Picareta de diamante | 2.4 | +1% | 14 | 9500 |
A força é o dano por pancada; a sorte ajuda nas pedras raras da britadeira e da mina ilegal.
#Níveis
Cada rocha, cada pedra processada e cada barra dão XP. Até ao nível Config.Levels.max (30). O nível desbloqueia rochas maiores, picaretas melhores, minérios melhores na britadeira e receitas do forno.
#Fundição, forno e laboratório
- Escolhes a quantidade (ou Máx.) e vês o progresso.
- Continuam com o menu fechado, mas tens de ficar perto (
distance). - No fim, o servidor volta a verificar o tempo, a distância e os materiais.
#Compradores
Cada comprador tem os seus preços (Config.Buyers), que mudam ±variation% a cada refresh minutos. As tendências (a subir / a descer) estão à vista.
#Acrescentar rochas e minas
Vai ao sítio no jogo e usa o comando de staff:
/minerarponto smallEscreve na consola (F8) a linha pronta a colar em Config.Mines. O tipo pode ser small, medium, large, sulfur ou saltpeter. A altura pode ser aproximada: as rochas são colocadas no chão sozinhas.
#Comandos de staff
| Comando | O que faz |
|---|---|
/minerarponto [tipo] | Escreve na consola a linha para o config |
/minerarxp [id] [quantidade] | Dá XP a um jogador |
Precisam da ACE drs.mining ou de um grupo de Config.StaffGroups.
#Opções principais
| Opção | Por defeito | Descrição |
|---|---|---|
Config.Locale | 'pt' | Idioma: pt ou en |
Config.Account | 'cash' | Conta usada no capataz |
Config.Levels.max | 30 | Nível máximo |
Config.Minigame.enabled | true | Minijogo nas pancadas |
Config.SwingTime | 1.6 | Segundos por pancada (validado no servidor) |
Config.Market.variation | 18 | Variação dos preços (%) |
Config.Market.refresh | 45 | Minutos entre mudanças de preço |
Config.PoliceJobs | police, sheriff | Quem recebe os alertas da mina ilegal |
Config.Leaderboard | 10 | Lugares na classificação |
Config.Webhook | '' | Webhook do Discord |
#Configuração completa
Config = {}
-- Idioma / Language: 'pt' ou 'en'
Config.Locale = 'pt'
-- Framework: 'auto' deteta Qbox/QBCore/ESX (ou 'qbx' | 'qb' | 'esx')
Config.Framework = 'auto'
-- Imagens dos itens ('auto' = pasta do inventário que estiver a correr) / Item images ('auto' = running inventory)
Config.ImagePath = 'auto'
-- Conta usada na loja do capataz / Account used at the foreman's shop
Config.Account = 'cash'
-- ------------------------------------------------------------------ como funciona / how it works
-- 1. Mina normal → pedra (picareta + minijogo)
-- 2. Fundição: britadeira → minério cru (carvão, cobre, ferro, prata, ouro, pedras raras)
-- 3. Fundição: forno → barras (cobre, ferro, aço, prata, ouro)
-- 4. Comprador de metais (fora da mina) compra minério, barras e pedras preciosas
-- Mina ilegal → enxofre e salitre (e às vezes pólvora) → laboratório → pólvora → receptador
-- 1. Normal mine → stone · 2. Foundry crusher → raw ore · 3. Foundry furnace → bars · 4. Metal buyer
-- Illegal mine → sulfur and saltpeter (sometimes gunpowder) → lab → gunpowder → fence
-- ------------------------------------------------------------------ níveis / levels
Config.Levels = { max = 30, base = 60, growth = 1.22 }
-- ------------------------------------------------------------------ picaretas / pickaxes
-- power: dano por pancada (a pancada perfeita dá o dobro) / damage per hit (a perfect hit doubles it)
-- luck: bónus (%) nas pedras raras da britadeira e da mina ilegal / bonus (%) on rare finds
Config.Pickaxes = {
{ item = 'pickaxe', power = 1.0, luck = 0.0, level = 1, price = 350 },
{ item = 'steel_pickaxe', power = 1.6, luck = 0.5, level = 6, price = 2400 },
{ item = 'diamond_pickaxe', power = 2.4, luck = 1.0, level = 14, price = 9500 },
}
-- ------------------------------------------------------------------ minijogo / minigame
Config.Minigame = {
enabled = true, -- false = todas as pancadas contam como normais / every hit counts as normal
zone = 0.22, -- largura da zona boa (0-1) / width of the good zone (0-1)
perfect = 0.06, -- largura da zona perfeita / width of the perfect zone
}
Config.SwingTime = 1.6 -- segundos por pancada (validado no servidor) / seconds per swing (server-checked)
Config.MineKey = 38 -- E
Config.MineKeyLabel = 'E'
Config.StopKey = 73 -- X
Config.StopKeyLabel = 'X'
-- ------------------------------------------------------------------ rochas / rocks
-- hp: pancadas normais para partir · respawn: segundos (igual para todos) · drops: chance em %
-- hp: normal hits to break · respawn: seconds (shared by everyone) · drops: chance in %
Config.RockTypes = {
-- mina normal: só pedra / normal mine: stone only
small = {
label = 'Rocha pequena', level = 1, hp = 4, xp = 3, respawn = 60, color = { 168, 162, 158 },
models = { 'prop_rock_3_b', 'prop_rock_3_d' },
drops = { { item = 'stone', min = 2, max = 3, chance = 100 } },
},
medium = {
label = 'Rocha média', level = 4, hp = 7, xp = 6, respawn = 90, color = { 148, 163, 184 },
models = { 'prop_rock_3_f', 'prop_rock_3_d' },
drops = { { item = 'stone', min = 3, max = 5, chance = 100 } },
},
large = {
label = 'Rocha grande', level = 9, hp = 11, xp = 11, respawn = 140, color = { 125, 211, 252 },
models = { 'prop_rock_3_b', 'prop_rock_3_f' },
drops = { { item = 'stone', min = 5, max = 8, chance = 100 } },
},
-- mina ilegal / illegal mine
sulfur = {
label = 'Veio de enxofre', level = 5, hp = 8, xp = 9, respawn = 150, color = { 250, 204, 21 }, illegal = true,
models = { 'prop_rock_3_b', 'prop_rock_3_f' },
drops = { { item = 'sulfur', min = 1, max = 3, chance = 100 }, { item = 'gunpowder', min = 1, max = 1, chance = 4, rare = true } },
},
saltpeter = {
label = 'Veio de salitre', level = 5, hp = 8, xp = 9, respawn = 150, color = { 241, 245, 249 }, illegal = true,
models = { 'prop_rock_3_d', 'prop_rock_3_f' },
drops = { { item = 'saltpeter', min = 1, max = 3, chance = 100 }, { item = 'gunpowder', min = 1, max = 1, chance = 4, rare = true } },
},
}
-- ------------------------------------------------------------------ minas / mines
-- As rochas são colocadas no chão sozinhas; a altura (z) pode ser aproximada.
-- Para apanhar coordenadas / To grab coordinates: /minerarponto [tipo]
Config.Mines = {
{
label = 'Pedreira de Sandy Shores',
blip = { coords = vector3(2950.0, 2790.0, 41.0), sprite = 618, color = 5, scale = 0.85 },
rocks = {
{ type = 'small', coords = vector3(2929.6, 2797.9, 41.0) },
{ type = 'small', coords = vector3(2934.8, 2793.1, 40.7) },
{ type = 'small', coords = vector3(2940.3, 2797.4, 40.9) },
{ type = 'small', coords = vector3(2926.2, 2805.2, 42.7) },
{ type = 'small', coords = vector3(2932.6, 2809.9, 42.5) },
{ type = 'medium', coords = vector3(2939.2, 2806.1, 41.6) },
{ type = 'medium', coords = vector3(2944.1, 2801.5, 40.9) },
{ type = 'medium', coords = vector3(2950.6, 2846.3, 47.5) },
{ type = 'medium', coords = vector3(2956.9, 2849.4, 47.4) },
{ type = 'medium', coords = vector3(2961.8, 2845.2, 46.4) },
{ type = 'large', coords = vector3(3026.4, 2769.3, 55.9) },
{ type = 'large', coords = vector3(3029.1, 2762.2, 56.8) },
{ type = 'large', coords = vector3(3024.3, 2754.4, 56.4) },
{ type = 'large', coords = vector3(2967.9, 2695.4, 54.6) },
{ type = 'large', coords = vector3(2960.6, 2699.1, 54.7) },
},
},
{
label = 'Mina abandonada',
illegal = true,
blip = false, -- sem blip: é para ser descoberta / no blip: it has to be found
policeAlert = 8, -- % de alertar a polícia por rocha partida / % chance to alert police per rock broken
rocks = {
{ type = 'sulfur', coords = vector3(-596.1, 2079.6, 131.4) },
{ type = 'saltpeter', coords = vector3(-591.8, 2074.2, 131.1) },
{ type = 'sulfur', coords = vector3(-600.7, 2071.9, 131.7) },
{ type = 'saltpeter', coords = vector3(-604.3, 2082.5, 132.0) },
{ type = 'sulfur', coords = vector3(-588.4, 2084.6, 130.9) },
{ type = 'saltpeter', coords = vector3(-608.9, 2076.1, 132.3) },
},
},
}
-- Polícia avisada pela mina ilegal / Police alerted by the illegal mine
Config.PoliceJobs = { 'police', 'sheriff' }
Config.PoliceBlipTime = 90
-- ------------------------------------------------------------------ capataz (loja, perfil, classificação) / foreman
Config.Hub = {
label = 'Capataz da pedreira',
coords = vector4(2956.2, 2744.9, 43.5, 280.0),
model = 's_m_y_construct_01',
scenario = 'WORLD_HUMAN_CLIPBOARD',
blip = { sprite = 480, color = 5, scale = 0.8 },
}
Config.ShopItems = {
{ item = 'water_bottle', price = 15 },
{ item = 'sandwich', price = 20 },
}
-- ------------------------------------------------------------------ fundição e laboratório / foundry and lab
-- process: britadeira (1 pedra → 1 sorteio da tabela; nil = só pó, não dá nada)
-- process: crusher (1 stone → 1 roll of the table; item = nil means dust, nothing)
-- recipes: forno / furnace
Config.Stations = {
foundry = {
label = 'Fundição',
coords = vector3(1109.9, -2008.2, 31.0),
blip = { sprite = 436, color = 17, scale = 0.8 },
distance = 3.0,
maxQuantity = 50,
scenario = 'WORLD_HUMAN_STAND_FIRE',
process = {
input = 'stone', time = 2, xp = 1,
table = {
{ item = nil, weight = 18, level = 1 },
{ item = 'coal', weight = 30, level = 1 },
{ item = 'copper_ore', weight = 22, level = 1 },
{ item = 'iron_ore', weight = 17, level = 3 },
{ item = 'silver_ore', weight = 8, level = 8 },
{ item = 'gold_ore', weight = 4, level = 12 },
{ item = 'emerald', weight = 0.6, level = 10, rare = true },
{ item = 'diamond', weight = 0.3, level = 15, rare = true },
},
},
recipes = {
{ id = 'copper', level = 1, time = 5, xp = 4, input = { { item = 'copper_ore', amount = 3 }, { item = 'coal', amount = 1 } }, output = { item = 'copper', amount = 1 } },
{ id = 'iron', level = 3, time = 6, xp = 6, input = { { item = 'iron_ore', amount = 3 }, { item = 'coal', amount = 1 } }, output = { item = 'iron', amount = 1 } },
{ id = 'steel', level = 6, time = 9, xp = 9, input = { { item = 'iron', amount = 2 }, { item = 'coal', amount = 2 } }, output = { item = 'steel', amount = 1 } },
{ id = 'silver_ingot', level = 8, time = 9, xp = 10, input = { { item = 'silver_ore', amount = 3 }, { item = 'coal', amount = 2 } }, output = { item = 'silver_ingot', amount = 1 } },
{ id = 'goldbar', level = 12, time = 12, xp = 15, input = { { item = 'gold_ore', amount = 4 }, { item = 'coal', amount = 2 } }, output = { item = 'goldbar', amount = 1 } },
},
},
lab = {
label = 'Laboratório clandestino',
coords = vector3(1391.9, 3605.6, 38.94),
blip = false,
distance = 2.5,
maxQuantity = 25,
illegal = true,
scenario = 'PROP_HUMAN_BUM_BIN',
recipes = {
{ id = 'gunpowder', level = 5, time = 8, xp = 8, input = { { item = 'sulfur', amount = 2 }, { item = 'saltpeter', amount = 3 }, { item = 'coal', amount = 1 } }, output = { item = 'gunpowder', amount = 2 } },
},
},
}
-- ------------------------------------------------------------------ compradores / buyers
-- Os preços mudam ± variation % a cada refresh minutos / Prices move ± variation % every refresh minutes
Config.Market = { variation = 18, refresh = 45 }
Config.Buyers = {
metals = {
label = 'Compra de metais',
coords = vector4(-470.3, -1718.5, 18.7, 290.0),
model = 's_m_m_dockwork_01',
scenario = 'WORLD_HUMAN_CLIPBOARD',
blip = { sprite = 605, color = 46, scale = 0.8 },
account = 'cash',
prices = {
coal = 6, copper_ore = 12, iron_ore = 18, silver_ore = 34, gold_ore = 55,
copper = 30, iron = 44, steel = 70, silver_ingot = 95, goldbar = 180,
emerald = 450, diamond = 900,
},
},
fence = {
label = 'Receptador',
coords = vector4(1240.4, -3167.4, 7.1, 270.0),
model = 'g_m_y_lost_01',
scenario = 'WORLD_HUMAN_SMOKING',
blip = false,
account = 'cash',
illegal = true,
prices = { sulfur = 25, saltpeter = 25, gunpowder = 120 },
},
}
-- ------------------------------------------------------------------ outros / other
Config.Leaderboard = 10
Config.AdminCommand = 'minerarponto' -- staff: mostra as coordenadas para o config / prints coordinates for the config
Config.XPCommand = 'minerarxp' -- staff: /minerarxp [id] [quantidade]
Config.StaffGroups = { 'god', 'admin', 'superadmin' }
Config.Webhook = ''
Config.UseOxNotify = false#Para programadores
exports.drs_mining:AddXP(src, 100) -- devolve o novo nível
exports.drs_mining:GetLevel(src)
exports.drs_mining:GetMarketPrice('metals', 'gold_ore') -- preço atual num comprador#Segurança
- O estado das rochas está no servidor e cada pancada é validada: distância, picareta, nível e tempo mínimo entre pancadas. O dano máximo é limitado.
- Os sorteios da britadeira e dos drops são feitos no servidor.
- Na fundição e no laboratório, o tempo, a distância e os materiais são verificados outra vez no fim.
- O dinheiro e os itens são movidos só no servidor, com reembolso se o inventário estiver cheio.
#Resolução de problemas
Não consigo partir a rocha — precisas de uma picareta e do nível da rocha. As rochas grandes pedem nível 9.
Os itens aparecem sem imagem — copia install/images/ para a pasta de imagens do teu inventário.
A britadeira só dá pó — é normal numa parte das pedras (cerca de 26% no nível 1; a percentagem certa para o teu nível está na própria britadeira). Com mais nível e melhor picareta saem minérios melhores.
Não encontro a mina ilegal nem o receptador — não têm blip de propósito. As posições estão em Config.Mines e Config.Buyers.fence.