Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local mrk = game:GetService("MarketplaceService")
- local badge = game:GetService("BadgeService")
- local plrs = game:GetService("Players")
- local plrs = game:GetService("Players")
- _G.marketcache = _G.marketcache or {
- gamepasses = {};
- badges = {};
- }
- local checkfor = {}
- local cache = _G.marketcache
- local mod = {}
- mod.PromptGamePassPurchase = function(self, player, gamepass)
- mrk:PromptGamePassPurchase(player, gamepass, 2)
- end
- mod.PromptGamePassPurchaseFinished = mrk.PromptGamePassPurchaseFinished
- mod.AwardBadge = function(self, userid, badgeid)
- cache.badges[badgeid] = cache.badges[badgeid] or {}
- if not cache.badges[badgeid][userid] then
- cache.badges[badgeid][userid] = true
- badge:AwardBadge(userid, badgeid)
- return "Awarded"
- else
- return "Already awarded"
- end
- end
- mod.SetBadgeCheckList = function(self, ...)
- for _, id in pairs({...}) do
- checkfor[id] = true
- end
- end
- mrk.PromptGamePassPurchaseFinished:Connect(function(player, gamepassid, waspurchased )
- if player and waspurchased then
- cache.gamepasses[gamepassid] = cache.gamepasses[gamepassid] or {}
- cache.gamepasses[gamepassid][player.UserId] = true
- end
- end)
- mod.Gamepass = function(userid, gamepassid)
- if cache.gamepasses[gamepassid] and cache.gamepasses[gamepassid][userid] then
- return cache.gamepasses[gamepassid][userid]
- else
- local result
- pcall(function()
- result = mrk:UserOwnsGamePassAsync(userid, gamepassid)
- cache.gamepasses[gamepassid] = {}
- cache.gamepasses[gamepassid][userid] = result
- end)
- return result
- end
- end
- function mod:UserOwnsGamePassAsync(userid, gamepassid)
- return mod.Gamepass(userid, gamepassid)
- end
- local isServer = not game:GetService("Players").LocalPlayer
- local on_player_join = function(plr)
- if isServer then
- for id, _ in pairs(checkfor) do
- local cor = coroutine.create(function()
- cache.badges[id]= cache.badges[id] or {}
- cache.badges[id]
- [plr.UserId] = badge:UserHasBadgeAsync(plr.UserId, id)
- end)
- coroutine.resume(cor)
- end
- end
- end
- for _, plr in pairs(plrs:GetPlayers()) do
- on_player_join(plr)
- end
- plrs.PlayerAdded:Connect(on_player_join)
- return mod
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement