Balloons and Ziplines Not Working Still

Heyo Devforum! Recently, I have made a topic on this issue, but no one responded, and I didn’t have any examples, but this time I do. So, in the below gyazo clips, you can see that the balloon just teleports you outside for no apparent reason and for the zipline, it only teleports you to the lobby area if you jump into it.

Balloon:
https://gyazo.com/c3a28edd756d335d333c38718c52c402

Zipline Working:
https://gyazo.com/be053796e171595d84d3aab9ec85cf33

Zipline Not Working:
https://gyazo.com/7f4e783606e89602f2ca76031d55bbae

These models were created in a model testing place, and finished in the main place. I have no idea why this is happening, so here are my scripts. Could anyone please take a look?

Balloons:

repeat wait() until game.Workspace:WaitForChild("Tower of Troubling Tutorials")
local balloons = game.Workspace:WaitForChild("Tower of Troubling Tutorials").Balloons:GetChildren()

local runservice = game:GetService("RunService")

local player = game.Players.LocalPlayer
local playermodule = require(player:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule"))
local controls = playermodule:GetControls()

for i, balloon in pairs(balloons) do
	local isonballoon = false
	local part = balloon.Part
	part.Touched:Connect(function(hit)
		local balloonpart = script.Balloon
		local timeuntilpop = balloon.TimeUntilPop
		local speed = balloon.Speed
		local animation = script.BalloonHold
		if not isonballoon and player.Character and hit:IsDescendantOf(player.Character) then
			isonballoon = true
			local character = player.Character
			local humanoid = character.Humanoid
			local balloonclone = balloonpart:Clone()
			local holderpart = balloonclone.Holder
			local partto = balloon.PartTo
			balloonclone.Parent = game.Workspace:WaitForChild("Tower of Troubling Tutorials").Balloons:FindFirstChild(balloon.Name).Part
			character.HumanoidRootPart.CFrame = partto.CFrame
			print(character.HumanoidRootPart.Position)
			local weld = Instance.new("Weld")
			weld.Part0 = character.Head
			weld.Part1 = holderpart
			weld.C1 = CFrame.new(0,-0.75,0)
			weld.Parent = holderpart
			holderpart.CFrame = character.Head.CFrame
			local loadanimation = humanoid:LoadAnimation(animation)
			loadanimation:Play()
			local bodygyro = Instance.new("BodyGyro", balloonclone.Sphere)
			bodygyro.MaxTorque = Vector3.new(math.huge,math.huge,math.huge)
			bodygyro.CFrame = CFrame.new()
			local bodyvelocity = Instance.new("BodyVelocity", balloonclone.Sphere)
			bodyvelocity.MaxForce = Vector3.new(0,1000000,0)
			bodyvelocity.Velocity = Vector3.new(0,speed.Value,0)
			coroutine.wrap(function()
				while isonballoon and not controls:GetActiveController():GetIsJumping() do
					runservice.Heartbeat:Wait()
				end
				weld:Destroy()
				loadanimation:Stop()
				balloonclone:Destroy()
				isonballoon = false
			end)()
			wait(timeuntilpop.Value)
			weld:Destroy()
			loadanimation:Stop()
			balloonclone:Destroy()
			bodygyro:Destroy()
			bodyvelocity:Destroy()
			isonballoon = false
		end
	end)
end

Ziplines:

repeat wait() until game.Workspace:WaitForChild("Tower of Troubling Tutorials")
local ziplines = game.Workspace:WaitForChild("Tower of Troubling Tutorials").Ziplines:GetChildren()

local tweenservice = game:GetService("TweenService")
local runservice = game:GetService("RunService")

local player = game.Players.LocalPlayer
local playermodule = require(player:WaitForChild("PlayerScripts"):WaitForChild("PlayerModule"))
local controls = playermodule:GetControls()

for i, zipline in pairs(ziplines) do
	local isonzip = false

	local line = zipline.Line
	local linestart = zipline.LineStart
	local finish = zipline.End
	local start = zipline.Start
	local speed = zipline.Speed
	local slider = script.Slider
	local animation = script.ZiplineHold

	start.Touched:Connect(function(hit)
		if not isonzip and player.Character and hit:IsDescendantOf(player.Character) then
			isonzip = true
			local character = player.Character
			local humanoid = character.Humanoid
			local sliderclone = slider:Clone()
			sliderclone.Parent = game.Workspace:WaitForChild("Tower of Troubling Tutorials").Ziplines
			sliderclone.PrimaryPart.CFrame = linestart.CFrame
			local sliderpart = sliderclone.SliderPart
			local movingsliderpart = sliderclone.Part
			local weld = Instance.new("Weld")
			weld.Part0 = character.Head
			weld.Part1 = sliderpart
			weld.C1 = CFrame.new(0,-0.9,0)
			weld.Parent = sliderpart
			sliderpart.CFrame = character.Head.CFrame
			local tweeninfo = TweenInfo.new(speed.Value)
			local goal = {}
			goal.CFrame = finish.CFrame
			local tween = tweenservice:Create(movingsliderpart, tweeninfo, goal)
			tween:Play()
			local loadanimation = humanoid:LoadAnimation(animation)
			loadanimation:Play()
			coroutine.wrap(function()
				while isonzip and not controls:GetActiveController():GetIsJumping() do
					runservice.Heartbeat:Wait()
				end
				weld:Destroy()
				loadanimation:Stop()
				sliderclone:Destroy()
				isonzip = false
			end)()
			wait(speed.Value)
			weld:Destroy()
			loadanimation:Stop()
			sliderclone:Destroy()
			isonzip = false
		end
	end)
end

Why is this happening?

For the balloon you are teleporting the humanoid to the part to?

Maybe check out the logic of the teleportation, maybe you want the balloon to go to the humanoid I believe instead of teleporting the humanoid to the balloon.

Edit: Yeah logically speaking we know that you are teleporting, the next thing we should know is that CFrames basically have the ability to teleport stuff. Consequently, yeah check your code related to CFrames and welds.

So checking the balloon, the output prints the current partto position and the character’s position which is the same as the partto position. The weird thing is that the player still goes outside. As you can see in the code, it is supposed to teleport the holder part to the character’s head. I still have no idea what is going on.

Hmmm, why don’t you use the JToH kit since it has everything in there? you can always customize the kit!

Well to be honest, I am trying to make this game from scratch, so I am not using the kit.

2 Likes