I’m considering my gamepass module finished but i’m still thinking there could be flaws that could potentially break it out. What can i do to improve it?
local Pass = {}
--// Services
local MarketPlaceService = game:GetService("MarketplaceService")
-- Variables
local Passes = {
["UnlimitedBrainrots"] = 1729092154;
["2xMultiplier"] = 1731132489;
}
local Perks = {
["UnlimitedBrainrots"] = function(Player:Player)
Player.Stats.MaxBrainrots.Value = math.huge
game.ReplicatedStorage.Shared.Remotes.UpdateSpawned:FireClient(Player)
end;
["2xMultiplier"] = function(Player:Player)
Player.Stats["2xMultiplier"].Value = true
end,
}
--// Functions
function Pass:GetPlayerPerks(Player:Player)
local Perks = {}
for i,v in Passes do
local success,has = pcall(function()
return MarketPlaceService:UserOwnsGamePassAsync(Player.UserId,v)
end)
if success and has then
table.insert(Perks,i)
end
if not success then
warn("Gamepass check faillure: "..has)
end
end
return Perks
end
function Pass:DeduceGamepassFromId(id:number): string?
for i,v in Passes do
if v == id then
return i
end
end
end
function Pass:AwardPerks(Player:Player,Passid:number?)
if Passid then
local pass = self:DeduceGamepassFromId(Passid)
print(pass)
Perks[pass](Player)
else
local UserPerks = self:GetPlayerPerks(Player)
for _,v in UserPerks do
Perks[v](Player)
end
end
end
function Pass:HandleGamepassPurchases()
MarketPlaceService.PromptGamePassPurchaseFinished:Connect(function(Player,Id,Purchased)
if not Purchased then
return
end
self:AwardPerks(Player,Id)
end)
end
return Pass