Roblox - Module para selecionar itens aleatórios com base em probabilidades

Olá pessoal! :smiley:

Fiz um module bem simples para uso pessoal, mas que vem me poupando bastante tempo, então resolvi publicar.

Ele basicamente escolhe um item aleatório com base nas probabilidades.




Métodos:

local RandomPicker = require(path) -- importando o module

local MyPicker = RandomPicker.new() -- cria um novo "picker"

MyPicker:Add(item: any, raridade: number) -- adiciona um item com uma raridade
local RandomItem = MyPicker:Pick(seed: number | nil) -- pega um item aleatório com base nas chances

print(RandomItem)

Exemplos:

Escolhendo um item aleatório de uma caixa de loot:

local RandomPicker = require(path)

local Bau = RandomPicker.new()

Bau:Add('Espada', 20)
Bau:Add('Machado', 30)
Bau:Add('Escudo', 40)
Bau:Add('Poção', 10)

local ItemEscolhido = Bau:Pick()
print(ItemEscolhido .. ' foi escolhido!')

Escolhendo um jogador para ser o murder (em um jogo de murder mystery):

Cada jogador possui a sua chance de ser o murder em um IntValue dentro de uma pasta.

local Players = game:GetService('Players')

local RandomPicker = require(path)

local function ChooseMurder()
	local MurderPicker = RandomPicker.new()

	for _, player in ipairs(Players:GetPlayers()) do
		local chance = player.Stats.ChanceToBeMurder.Value -- um IntValue dentro de uma pasta
		MurderPicker:Add(player, chance)
	end

	return MurderPicker:Pick()
end

local Murder = ChooseMurder()
print(Murder.Name .. ' é o murder!')

Se alguém tiver alguma sugestão ou alguma dúvida, por favor comente aqui. Espero ter ajudado de alguma forma :slight_smile:

2 Curtidas

Bem, com toda certeza, é um module que nos livra de um trabalhão, por mais que eu não sou muito de usar modules de 3°, eu vou verificar seu module, pois achei interessante, percebi que usa OOP também, então me parece bem interessante.

2 Curtidas