Huge problem with tools

Hello, sorry if i miss some details but im in a huge rush right now, basically when i unequip a tool, the property “CanCollide” turns true and makes the client freeze for like 1 sec, i don’t know what to do, we never set it to true in any scripts. let me know if you need more details.

Another exemple :

I doubt CanCollide is causing the lag. What’s inside the server script in the tool? And do you have any other .Unequip connections?

Is the Handle the only Part of the Tool, or are there other Parts there too? Click the arrow next to Handle to check and see if any of those are Anchored.
Is the Handle (or other Parts) originally CanCollide true where it’s stored?
Is the Tool Handle (or other Parts) Massless? If not make sure it’s Massless true.
You only show a script that tells us the result but we need to find the cause of the problem.
Copy/Paste your equip/unequip script for the tool and any other script that deals with it and put 3 backticks (```) before and after it so it formats properly.

all my .Unequipped connexions are from local scripts, and if you’re talking about the disabled server script inside the tool its only to detect the main part can collide changes and set it back to false
all the connexions :
Capture d’écran (1185)
that server script :
Capture d’écran (1188)

I only have 1 part inside the tool :
Capture d’écran (1186)
CanCollide is originally set to false, the handle is massless,
Unequip detection :

Tool.Unequipped:Connect(function()
	Equipped = false
	WeightHoldingAnimationTrack:Stop()
	task.defer(function()
		if not Tool or not Tool.Parent then
			CanLift = false
			Equipped = false
			RunService:UnbindFromRenderStep("LiftBoost")
			db = true
			if connection then
				connection:Disconnect()
			end
			if con2 then
				Signal:Disconnect(con2)
			end
			W_RemoteEvent1 = nil
			W_RemoteEvent2 = nil
			temp_client_data = nil
		elseif Tool and Tool.Parent then
			RemoteEvent:FireServer("UpdateHideWeight")
		end
	end)
end)

Is the game actually lagging at that moment, or is it just the player?

Instead of your short script having print("changed") try print("Cancollide = ", part.CanCollide) to see what its state actually is. The function could firing because it’s going from nil to false since the tool is being equipped.

Is it just the fact that you’re stopping the WeightHoldingAnimationTrack? If that animation isn’t stopping at a point where the next animation takes over smoothly it might be causing the jump in movement.

I don’t know if its only the client or the whole server but i noticed that its lagging only when the tool’s part touches another part (exemple : invisible walls) even if the other part’s CanCollide property is set to false.

And as you can see on the video, CanCollide is mysteriously set to true when i unequip and true when i equip.

So i tried to remove this in the local script in case it was from my server script :

RemoteEvent:FireServer("UpdateHideWeight")

but it still happens.

So this is not related to any scripts because its even happening in empty games :

Hi Nomino, I’ve been having this problem in my game too as of late… is this still happening for you as well?

Yes but i found 2 way to avoid it :

  • make 1 small non collidable massless and invisible handle
  • parenting the model and welding the main part to the character when the player equip the tool (with no baseparts inside it).

But roblox is weird why they would change the handle part collisions when equipping / unequipping the tool…

1 Like

Gotta love some hacky fixes! I’ll give it a try, thanks a lot! :slight_smile:

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.