Um item que não está em nenhuma lista de loot existe no jogo, mas ninguém vai encontrá-lo. Para ele aparecer em geladeiras, prateleiras ou armários, é preciso adicioná-lo às distribuições.
Como funciona
Cada tipo de contêiner do mapa (a geladeira de uma casa, a prateleira de vinhos de uma loja de bebidas, o armário de uma delegacia) usa uma lista com nome dentro da tabela ProceduralDistributions.list. Cada lista tem uma tabela items que alterna item, peso, item, peso...:
ProceduralDistributions.list["FridgeGeneric"].items = {
"Base.Milk", 4,
"Base.Cheese", 3,
...
}Quanto maior o peso, mais frequente ele aparece. Por isso se adicionam dois valores: primeiro o item e depois o peso.
O padrão seguro (o que todos os nossos mods usam)
require "Items/ProceduralDistributions"
local aplicado = false
local function agregarLoot()
if aplicado then return end
local ok, err = pcall(function()
local function meter(lista, item, peso)
local dist = ProceduralDistributions.list[lista]
if not dist or not dist.items then return end
table.insert(dist.items, item)
table.insert(dist.items, peso)
end
meter("FridgeGeneric", "Melvin42.MelonConVino", 1.5)
meter("LiquorStoreWine", "Melvin42.MelonConVino", 1.0)
meter("GroceryStandFruits1", "Melvin42.MelonConVino", 0.75)
aplicado = true
end)
if not ok then print("[MiMod] error en el loot: " .. tostring(err)) end
end
Events.OnPostDistributionMerge.Add(agregarLoot)O porquê de cada parte:
- Conferir se a lista existe (
if not dist ...): os nomes mudam entre versões do jogo. Se uma lista não existir mais, seu mod pula ela em vez de quebrar. pcall: se algo der errado, o erro fica noconsole.txtcom o prefixo do seu mod, e o jogo continua carregando.aplicado: evita colocar o item duas vezes se o evento disparar mais de uma vez.- O arquivo fica em
media/lua/server/Items/.
Encontrar os nomes das listas
Você tem todas elas, com busca e os itens de cada uma, na referência de listas de loot. Também pode abrir o arquivo do jogo media/lua/server/Items/ProceduralDistributions.lua (na pasta de instalação) e procurar palavras-chave: Fridge, Kitchen, Liquor, Gun, Police, Clothing, Shoe... Alguns nomes que usamos em mods publicados:
| Onde | Listas |
|---|---|
| Geladeiras | FridgeGeneric, FridgeTrailerPark, FridgeBreakRoom, FridgeRich, FridgeBeer |
| Vinho e lojas de bebidas | LiquorStoreWine, StoreShelfWine, CrateWine, KitchenBottles |
| Hortifrútis | GroceryStandFruits1, GroceryStandFruits2, ProduceStorageWatermelons |
| Coisas raras | JewelryGems, LaboratoryLockers, ArmyBunkerLockers |
Quanto peso colocar
Não existe uma fórmula exata, porque depende de quantos outros itens há nessa lista. Um guia prático:
- 0,03 a 0,1: muito raro, quase um prêmio (o sabre de luz completo).
- 0,5 a 1: aparece de vez em quando.
- 2 a 4: comum nesse tipo de contêiner.
Um truque do Sable de Luz: as peças aparecem com mais frequência (peso 0,3 a 0,6) e o item completo é raríssimo (0,05). Assim o jogador pode montá-lo ou ter sorte.