Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How can I delete a ScreenGui by a script if a player does not own a certain game pass?

In order to keep my game safe I would like to delete a ScreenGui that I called VIPGui if a player does not own a game pass. If they do own the game pass then I would like the Gui to not be deleted, if that makes sense. I used a local script and inserted it into the VIPGui. I wrote the following:

local MS = game:GetService("MarketplaceService") local gamepassid = 0 (I did insert my real game pass id in studio) if MS:UserOwnsGamePassAsync(game.Players.LocalPlayer.userId, gamepassid) == false then

script.Parent:Destroy()

end

It did not work so I did the same thing again:

local MS = game:GetService("MarketplaceService") local gamepassid = 0 if MS:UserOwnsGamePassAsync(game.Players.LocalPlayer.userId, gamepassid) == false then

game.StarterGui.VIPGui:Destroy()

end

It still did not work. I checked the output and it was not giving any feedback? I did not own the game pass so it should have deleted but it did not, and my friend did own the game pass and it dd not delete either, which is good, but I believe it is because it did not work. If anyone could please explain, I would appreciate that! Thanks.

1 answer

Hey bulder251,

I think i see the issue. I believe that your issue is coming from the fact that you are trying to delete the GUI from the StarterGui. When the player loads in the game, if my memory serves correct, a copy of the GUI is made in PlayerGui. I believe that your script should destroy it there instead of from StarterGui. Hope this helps! :D

9 comments

0

So you are saying I go from the game to the PlayerGui?Alrighty thanks, I will do that now! :D

0

Yes. Instead of doing "game.StarterGui.VIPGui:Destroy()" you would do something like this "game.Players.LocalPlayer.PlayerGui.VIPGui:Destroy()".

0

Ok! :D

0

It says UserID is not a valid member of Player

0

local MS = game:GetService("MarketplaceService") local ID = 0 if MS:UserOwnsGamePassAsync(game.Players.LocalPlayer.UserID, ID) == false then game.Players.LocalPlayer.VIPGui:Destroy() end

0

"game.Players.LocalPlayer.VIPGui:Destroy()" you forgot PlayerGui after local player. So like this. "game.Players.LocalPlayer.PlayerGui.VIPGui:Destroy()". Not sure why its giving you that issue but maybe this will fix it?

0

Should it be a local script under the gui?

0

Yes, local script

0

So, has it fixed the issue?

This discussion is preserved as it was. New answers, comments, and votes are closed.