Issue with Rope-Constraint and Tool

Hello :wave:

I am currently trying to make a gas-station where you have to connect the fuel-hose to the car for it to fill up. However, there is one small problem, when I try to connect the hose (rope) to the tool, the entire player-character starts glitching around. I don’t know if it’s a bug caused by something on ROBLOX’s end or if I am doing it wrong.

The first 3 seconds of the video show the expected movement with the tool equipped.
The rest of the video shows how the hose affects the player.

Here is the function that handles the giving/ connecting:

local function giveToolFromPipe(player, pipe)
	local originPart = pipe.originPart
	local pipeModel = pipe.pipeModel
	
	-- hiding the model fuel-pipe of the gas-pump
	pipeModel.Transparency = 1
	pipeModel.CanCollide = false
	
	
	local toolClone = pipeModel.gasHose:Clone()
	
	toolClone.Parent = player.Character
	
	-- this keeps the player from teleporting to the tool (works on all character variants)
	toolClone.Handle.Position = if (player.Character:FindFirstChild("RightArm")) then player.Character.RightArm.Position else player.Character.RightHand.Position
	toolClone.Handle.Anchored = false
	
	player.Character.Humanoid:EquipTool(toolClone)
	
	
	task.wait(3)
	
	-- this causes the character of the player to glitch around
	originPart.rope.Attachment1 = toolClone.Handle.ropeConnector
	
	toolClone.Unequipped:Connect(function()
		removeToolFromPlayer(player, pipe)
	end)
	
	
	-- this is some cheaty fix I used for the moment.
	--task.spawn(function()
	--	while (inUse[pipe.Name]) do
	--		pipeModel.ropeConnector.WorldCFrame = toolClone.Handle.ropeConnector.WorldCFrame		
	--		task.wait()
	--	end
	--end)
end

link to video

1 Like

Does the rope have enough length for the player to move further out? Try extending the length of the rope when the player equips the tool.

It has enough length, as seen in the video.
It seems like the rope is adding weight to the tool but I don’t know why.

I’m having the same issue, if you have any insights from the past month please let me know.

1 Like

Here is what I came up with:

Structure:
image

The CFrame of the movableConnection-Attachment is changed to it’s position where it should be using a while-isHoldingTool()-do-loop.

The fuelHose-RopeConstraint then follows it automatically.

Here is some pseudo code:

local tool = getPlayerTool(player) -- getting the tool from x-Player
local PUMP = getFuelPump() -- getting the fuel pump

-- the tool is being toggled
tool:GetAttributeChangedSignal("isHolding"):Connect(function() 

   -- only execute when tool is being held and the pump is available
   if (tool:GetAttribute("isHolding") == false) then return end
   if (PUMP:GetAttribute("available") == false) then return end 

   -- make the pump unavailable
   PUMP:SetAttribute("available", false)
 
   -- new thread that controls the constraint-changes
   task.spawn(function() 

      -- loop for as long as the tool is being held
      while (tool:GetAttribute("isHolding")) do

         -- change the position of the attachment which is connected to the RopeConstraint
         PUMP.toolRope.movableConnection.WorldCFrame = tool.connection.WorldCFrame

         -- distance between the rope's origin and player
         local distance = (PUM.toolRope.Attachment0.WorldCFrame.Position - player.Character.HumanoidRootPart.CFrame.Position).Magnitude

         -- "offset" makes the rope hang (else it would be stiff because: length = absolute distance)
         local offset = 4
         
         -- changing the length of the rope (enabling the player to move away from the rope's origin)
         PUMP.toolRope.Length = distance + offset
      end
   end)

   -- You should always include some sort of "clear-up" method
   -- in case a player dies/ leaves; the script should perform a 
   -- reset which resets all changed attributes/ properties to a 
   -- default value.

   -- depending on the use-case you may also want to include
   -- sanity checks. That way no exploiter can cause harm to
   -- your system.
   -- sanity checks could be:
   --   only the holder of the tool is allowed to change the pump's "available"-status
   --   only the holder of the tool can change the position of the constraint/ length of the rope
  
end)

I know its been 9 days, but I hope this could help you nontheless.
If you have questions, don’t be afraid to ask. I try to be more active to help you out.

  • DosenSuppe2_0

I have the same issue, have you found the solution?

Sadly no, I will keep you updated as soon as I find one.