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

Script Shows GUI on the first Chest, but then doesnt show gui on any other chests, why?

My Problem is that when i spawn in, it spawns the chests, then I go up to the first one and it shows the gui. But when I walk Up To The Second Chest it does not show the gui for some reason but i can go back to the first chest and it will show the gui again.

First Chest: https://gyazo.com/ff7057c2c19c30ec3d8df1f56ee9038a

Second Chest: https://gyazo.com/6d4603721e8f8143cd7eede6d7bd78e1

Explorer Images: Chest Location Gui Location

Script:

local Chests = workspace.Chests
local Range = 10
local P = game.Players.LocalPlayer
local C = P.Character or P.CharacterAdded:Wait()
local Hb = game:GetService("RunService").Heartbeat

function Check()
	for i,v in pairs(Chests:GetChildren()) do
		if (v.Hitbox.Position - C.PrimaryPart.Position).Magnitude <= Range and not v.Openers:FindFirstChild(P.Name) then
			local Pos = workspace.CurrentCamera:WorldToScreenPoint(v.Hitbox.Position)
			script.Parent.Open.Position = UDim2.new(0,Pos.X,0,Pos.Y,0)
			script.Parent.Open.Visible = true
		else
			if script.Parent.Open.Visible then
				script.Parent.Open.Visible = false
			end
		end
	end
end

workspace.Chests.ChildAdded:Connect(Check)
Hb:Connect(Check)

1 answer

Use ContextActionService to bind an action to the 'E' key when the player gets close to the chest, then use ContextActionService: SetImage to have the GUI appear (https://developer.roblox.com/en-us/api-reference/function/ContextActionService/SetImage), then when the player is too far from the chest, unbind the action from the key and rebind it again when the player is close enough to a chest. Just use remote events when the player presses the 'E' from a local script and then fire the server. I hope it helps!

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