I made sure there were no errors, I put the local script into Starter Player Scripts as I wanted it to be local.
Script:
game.Workspace.ElevatorAccess.Touched:Connect(function(hit)
local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
local Group = 5762728
local Rank = game.ReplicatedStorage.Rank
local gamepass = 0
local MS = game:GetService("MarketplaceService")
if hit and hit.Parent and game.Players:FindFirstChild(hit.Parent.Name)then
if game.Players[hit.Parent.Name]:IsInGroup(Group) and game.Players[hit.Parent.Name]:GetRankInGroup(Group) >= Rank then
local Ui = game.Workspace.ElevatorAccess.ScreenGui
local Ui2 = Ui:Clone()
Ui2.Name = "TP"
Ui2.Parent = plr.PlayerGui
elseif MS:UserOwnsGamePassAsync(plr.UserId, gamepass) then
local Ui = game.Workspace.ElevatorAccess.ScreenGui
local Ui2 = Ui:Clone()
Ui2.Name = "TP"
Ui2.Parent = plr.PlayerGui
else
local frame = game.Workspace.ElevatorAccess.SurfaceGui.Frame
frame:TweenPosition(UDim2.new(0, 0,0, 0))
wait(2.5)
frame:TweenPosition(UDim2.new(-1, 0,0, 0))
end
end
end)

3 comments
Why do you want this to be a local script? Also, why do you have a screengui in the workspace?
Like I said, I want this to be local, second off, it's in the part
The part is in the workspace so the ScreenGui is in the workspace. Second of all, using "game:GetService("Players")" is much better than "game.Players". Third, "workspace" is better than "game.Workspace".