Look under “Theory” in here: Zone+ v1 (deprecated) | Retrieving players within an area/zone
It contains a rough tutorial on how to create the boundary.
Here’s something that should work in your case:
local ZonePlus = require(4664437268)
local ZoneService = require(ZonePlus.ZoneService)
local group = workspace.ShopGUI.ShopRegion
local zone = ZoneService:createZone("ZoneName", group, 15)
local MPS = game:GetService("MarketplaceService")
zone.playerAdded:Connect(function(player) -- returns the player instance, not the character instance.
if MPS:UserOwnsGamepassAsync(--[[your gamepass id]], player.UserId) then
--do stuff if they own it
else
--do stuff if they don't own it
end
end)
zone:initLoop()