Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Game pass Gear Question?

Asked by 10 years ago

Ok so like in The Mad Murderer, you can buy diff weapons, and they load when you are the killer. My question is, how do I make a script so that when you become the murder you have the weapon from the game pass? How would I do this?

0
It would be more helpful if you included examples of your scripts. Dummiez 360 — 10y

1 answer

Log in to vote
-1
Answered by
iLegitus 130
10 years ago

Here follow these instructions. Make a script in workspace with the following inside it :

--------------------
--| 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)

Then,You basically just make a model inside of the script,Name it "ToolAssetsToLoad". Then input an IntValue(Inside model),And give it the ID Of the gear you would like to be given upon spawn IF the player has baught a gamepass. And make another IntValue inside of the "SCRIPT" and name it "GamePassId" Simply input the "GAMEPASSID HERE" into value and your done.

Micacalt

Ad

Answer this question