Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Repeating For-loop makes the keybind script blink?

Asked by 5 years ago
--LocalScript inside StarterPlayerScripts
player = game.Players.LocalPlayer

local sp = player:WaitForChild('PlayerGui'):WaitForChild('Keybind'):WaitForChild('ImageButton')

local UIS = game:GetService("UserInputService")

UIS.InputBegan:Connect(function(input,gameProcessed)

    if input.UserInputType == Enum.UserInputType.Keyboard  then
        if input.KeyCode == Enum.KeyCode.E then
            if UIS:GetFocusedTextBox() == nil then

                for i,v in pairs(game.Workspace.Stove["Gas"]:GetChildren()) do

                    local mag = (v.Parent.Union.Position-game.Players.LocalPlayer.Character.HumanoidRootPart.Position).Magnitude

                    if mag <= 15 then

                        game.ReplicatedStorage.Stove:FireServer("Gas")

                    end
                end
            end
        end
    end
end)

while wait() do

    for i,v in pairs(game.Workspace.Stove["Gas"]:GetChildren()) do
        local mag = (v.Parent.Union.Position-game.Players.LocalPlayer.Character.HumanoidRootPart.Position).Magnitude
        local WSP = game.Workspace.CurrentCamera:WorldToScreenPoint(v.Parent.Union.Position)

        if mag <= 15 then 
            sp.Visible = true

            sp.Position = UDim2.new(0,WSP.X,0,WSP.Y)

            sp.TextLabel.Text = "Open 'Stove'"

        end
    end
end

This is my keybind script. If you go near it, an ImageButton 'E' will appear, and if you click this, it will fire an remoteEvent. But I see a problem that is the button is blinking(because the while loop and the for loop, and it means there is a delay). If you just add one more line of a script then the blinking period(the sp.Visible = false) increases. What do I do? [There are tons of stoves in the folder]

Answer this question