Still have questions? Join our Discord server and get real time help.
Log in to vote
1

# How To Fix Lagging The More You Fire A Function Or An Event?

Asked by 12 days ago
Edited 12 days ago

--[ Details ]-- Hello, I am trying to make a neon-like party and there has been a bug, right now im using module script because i want the other script to use the function as well

There is a Brick That Have ClickDetector , and A Script

There is also a folder that contains NeonParts, Each Part is named a Number

--[ Problems ]--

• When I Click The Brick, The Function from module script activate, But The More I Click, I Noticed It starting to get laggy, I also tried putting "Print()" inside the module script, and they did print it and not multiple times, The problem is just it gets laggy the more i click

• I also tried this in-game and also tried the micro-profile , And it is confirmed that it lag since The more i click the button, The micro profile just goes up and the tween just kinda lag

--[ The Script ]--

This is the BrickButton Script

local ClickDetector = script.Parent.ClickDetector
local NeonParts = game.Workspace.NeonTestGroup
local Module = require(game.ReplicatedStorage.LightningModuleScript)
local ChosenColor = script.Parent.Parent.ChosenColor
local Debounce = script.Parent.Parent.Debounce

ClickDetector.MouseClick:Connect(function()
wait()
local Neonpartschildren = NeonParts:GetChildren()
local Childrenscount = #Neonpartschildren

if Debounce.Value == false then
Debounce.Value = true

local RVal = ChosenColor.Value.R * 255
local GVal = ChosenColor.Value.G * 255
local BVal = ChosenColor.Value.B * 255

for i,v in pairs(NeonParts:GetChildren()) do
if v:IsA("Folder") then
wait()

for ii,c in pairs(v:GetChildren()) do
Module.ColorChange(c,RVal,GVal,BVal)
end

if i == Childrenscount then
Debounce.Value = false
end
end
end
end
end)


And This is The ModuleScript

local module = {}

module.ColorChange = function(NeonPart,R,G,B) -- This is for color changing lol

local Tween = game:GetService("TweenService")
local Info = TweenInfo.new(0.3,Enum.EasingStyle.Sine,Enum.EasingDirection.Out,0,false,0)
local Goal = {
Color = Color3.fromRGB(91,93,105)
}

active = false

NeonPart:GetPropertyChangedSignal("BrickColor"):Connect(function()
local NeonTween = Tween:Create(NeonPart,Info,Goal)
if NeonPart.Color == Color3.fromRGB(R,G,B) and active == false then
NeonTween:Play()
active = true
NeonTween.Completed:Connect(function()
active = false
end)
end
end)

NeonPart.Color = Color3.fromRGB(R,G,B)
print("OOOF?")
end

return module



Please Help As I Been Stuck With This Since Yesterday, Thanks in Advanced!

### 1 answer

Log in to vote
0
Answered by
sleazel 855
11 days ago
Edited 11 days ago

You problem is that everytime you click, you are making a new connection, without disconnecting the old one. Roblox allows to have multiple connections to the same event, so they just stacking up, causing a lag.

The solution will depend on what you are trying to achieve, but I will make a educated guess that after the tween starts, you no longer need the connection.

    local neonPartConnection = NeonPart:GetPropertyChangedSignal("BrickColor"):Connect(function()
local NeonTween = Tween:Create(NeonPart,Info,Goal)
if NeonPart.Color == Color3.fromRGB(R,G,B) and active == false then
NeonTween:Play()
neonPartConnection:Disconnect()
active = true
NeonTween.Completed:Connect(function()
active = false
end)
end
end)



Hope this helps.

Edit: I moved the disconnect, to make sure function will disconnect if different tween interrupts the old one.

0
DUDE THANKS IT WORKS, Thanks so much! Minecrafter09031031 16 — 11d