--MODULE SCRIPT
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ReplicatedContents = ReplicatedStorage.Contents
local ReplicatedPackage = ReplicatedStorage.Package
local Enums = require(ReplicatedContents.Enums.Enums)
local Rng = require(ReplicatedContents.Rng.Rng)
local Events = ReplicatedPackage.Events
local rerollEvent = Events.RerollEvent
local playersRerollState = {}:: {[number]: boolean}
local function sortChance(chance: number): {{Name: string, Chance: number}}
local list = {}
for i, v in Rng:getRngs() do
local cumulativeNumber = (i >= 1 and list[i - 1]) or {Chance = 0}
list[i] = {
Name = v.Name,
Chance = cumulativeNumber.Chance + (v.Chance * (100 + chance))
}
end
return list
end
local function selectChoice(randomNumber: number, list: {{Name: string, Chance: number}}): string
local choice
for _, v in list do
if randomNumber <= v.Chance then
choice = v.Name
break
end
end
return choice
end
local Reroll = {}
function Reroll:reroll(userId: number, chance: number)
local finalChoice
local list = sortChance(chance)
local randomNumber = math.random(1, list[#list].Chance)
local rngChoice = selectChoice(randomNumber, list)
if Rng:FindRngByName(rngChoice) then
finalChoice = rngChoice
end
return finalChoice
end
return Reroll
--SCRIPT SERVER
local ServerStorage = game:GetService("ServerStorage")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ServerContents = ServerStorage.Contents
local ReplicatedContents = ReplicatedStorage.Contents
local ReplicatedPackage = ReplicatedStorage.Package
local Reroll = require(ServerContents.Reroll.Reroll)
local Enums = require(ReplicatedContents.Enums.Enums)
local Events = ReplicatedPackage.Events
local rerollEvent = Events.RerollEvent
local function onRerollServer(player: Player, action: string)
local rngChoices = {}
if action == Enums.RerollAction.Reroll then
table.insert(rngChoices, Reroll:reroll(player.UserId, 1000))
end
for _, choice in rngChoices do
print(choice)
print("____")
end
end
rerollEvent.OnServerEvent:Connect(onRerollServer)
Thanks for your helping