Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------
- --| WaitForChild |--
- --------------------
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- -----------------
- --| Variables |--
- -----------------
- local GamePassService = Game:GetService('GamePassService')
- local PlayersService = Game:GetService('Players')
- local InsertService = Game:GetService('InsertService')
- local LightingService = Game:GetService('Lighting') --TODO: Use new data store service once that exists
- local GamePassIdObject = WaitForChild(script, 'GamePassId')
- local ToolAssetsToLoad = WaitForChild(script, 'ToolAssetsToLoad')
- local AdminTools = LightingService:FindFirstChild('AdminTools')
- -----------------
- --| Functions |--
- -----------------
- -- Makes copies of all the admin tools and puts them in target
- local function CloneAdminTools(target)
- for _, tool in pairs(AdminTools:GetChildren()) do
- local toolClone = tool:Clone()
- toolClone.Parent = target
- end
- end
- -- When a player with the game pass joins, give them the admin tools
- local function OnPlayerAdded(player)
- if GamePassService:PlayerHasPass(player, GamePassIdObject.Value) then
- local starterGear = WaitForChild(player, 'StarterGear')
- CloneAdminTools(starterGear)
- if player.Character then -- They've already loaded and won't get their StarterGear until next spawn
- local backpack = WaitForChild(player, 'Backpack')
- CloneAdminTools(backpack)
- end
- end
- end
- --------------------
- --| Script Logic |--
- --------------------
- -- Create AdminTools if it doesn't exist
- if not AdminTools then
- AdminTools = Instance.new('Model')
- AdminTools.Name = 'AdminTools'
- -- Load all of the assets in ToolAssetsToLoad and put them in AdminTools
- for _, intObject in pairs(ToolAssetsToLoad:GetChildren()) do
- if intObject and intObject:IsA('IntValue') and intObject.Value then
- local assetModel = InsertService:LoadAsset(intObject.Value)
- if assetModel then
- local asset = assetModel:GetChildren()[1]
- if asset then
- asset.Parent = AdminTools
- end
- end
- end
- end
- AdminTools.Parent = LightingService
- end
- PlayersService.PlayerAdded:connect(OnPlayerAdded)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement