Screenshot of the script: https://gyazo.com/e7c0bf2e93b3bf3208eb9f8a4dc32231
It works fine in studio, giving me the correct weapon dependant on what gamepass I have bought.
I looked in the Developer Console and only 3 scripts are running at that time: https://gyazo.com/19711e48a2d5d8e82277dcb1b8d89fcf
And then in the Server Log this was there: https://gyazo.com/1199b5face961e77d902ca2e46646e6b
[UPDATE] It loads in on this server: https://www.roblox.com/games/1106697638/H-EiTC-Stuff But not this one: https://www.roblox.com/games/1123799747/Eleuthera
local passid = 1124295568 -- The ID of the gamepass goes here
local tools = {"Blunderbuss"} -- Blunderbuss
local GamePassService = Game:GetService('GamePassService')
game.Players.PlayerAdded:connect(function(player)
repeat wait(0.1) until player.Backpack
repeat wait(0.1) until player.StarterGear
if GamePassService:PlayerHasPass(player, passid) then
for i = 1,#tools do
game.ServerStorage.Tools.Gamepass:FindFirstChild(tools[i]):Clone().Parent = player.Backpack
game.ServerStorage.Tools.Gamepass:FindFirstChild(tools[i]):Clone().Parent = player.StarterGear
end
end
end)

2 comments
Try using WaitForChild or FindFirstChild, that might help
You might want to read this btw: https://devforum.roblox.com/t/live-changes-to-game-passes/116918