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

I made a teleport script and it doesn't work but there are no errors?

Asked by 3 years ago

I made a simple script that teleports you to the spawnlocation when you touch a part, but for some reason the script doesn't work and there are no errors.

local Teleport = game.Workspace.SpawnLocation

script.Parent.Touched:Connect(function(plr)
        plr.Character.HumanoidRootPart.CFrame = CFrame.new(Teleport.CFrame.X, Teleport.CFrame.Y + 5, Teleport.CFrame.Z)
end)

2 answers

Log in to vote
0
Answered by 3 years ago
Edited 3 years ago

Problem

You should read the description of the Touched event here. The Touched event comes with a parameter known as the part that otherPart. So, you're getting confused and think that the parameter is the player while it's not.

Fixed code

local Players = game:GetService("Players")
local Teleport = workspace.SpawnLocation

script.Parent.Touched:Connect(function(hitPart)
    local character = hitPart.Parent

    if character:FindFirstChild("Humanoid") then
        character.HumanoidRootPart.CFrame = CFrame.new(Teleport.CFrame.X, Teleport.CFrame.Y + 5, Teleport.CFrame.Z)
    end
end)

Explanation

First, I got the Players service. Why did I use the :GetService method while I could've done game.Players? Because if you changed the name, :GetService method would still work.

Line 2 is a variable for the destination.

Line 4 is connecting a Touched event to a function.

Line 5 is the character while sometimes it may not be.

Line 7 is to confirm if its character then we look at its children for a humanoid then if it return an Instance meaning it's true, otherwise, returns nil meaning false.

Line 8 is teleporting the character.

0
Hi thanks for helping but again it still doesn't teleport and it comes out with no errors. I don't know if it's a glitch or what but I have taken tutorials and still nothing happens. aydenwilson819 25 — 3y
0
@aydenwilson819 It works for me. When I tried your code, I don''t know how you didn't get an error because it errors for me. MarkedTomato 810 — 3y
0
@aydenwilson819 Screenshot your Output window to me. I feel like you don't know the output because you''d have got an error with your code. MarkedTomato 810 — 3y
0
Here is the link to the screenshot: file:///C:/Users/hyper/Videos/Captures/Untitled%20Game%20-%20Roblox%20Studio%209_16_2021%205_26_16%20PM.png aydenwilson819 25 — 3y
View all comments (9 more)
0
@aydenwilson819 Well, apparently I'm not on your computer. Post the image on gyazo.com . Also that's not a link that's the path to your screnshots in your files. MarkedTomato 810 — 3y
0
@aydenwilson819 Can you expand your output? I only saw a little bit show me your entire output not just a little bit MarkedTomato 810 — 3y
0
Show me the first line in your output. MarkedTomato 810 — 3y
0
The first line in the output just says that the game was saved. aydenwilson819 25 — 3y
0
@aydenwilson819 Make sure it's a script and not a LocalScript. MarkedTomato 810 — 3y
0
Thank you! It worked! It was a long 4 day process so I would like to thank you for helping all the way through aydenwilson819 25 — 3y
0
Oof, I didn't realize that you used a Script. NickyPlayz2011 82 — 3y
Ad
Log in to vote
0
Answered by 3 years ago
Edited 3 years ago

READ EDIT AT BOTTOM

Hello! I am here to help. Usually, for teleport scripts, I use .Position, since whenever I use CFrame, it always returns an error about CFrame not existing, and I'm not sure why. Anyways, that is my recommendation. In addition, you would use a new Vector3 instead of making a new CFrame. Let me show you an example of what I use for teleport scripts.

local teleport = game.Workspace.TeleportDestination
local part = script.Parent

part.Touched:Connect(function(hit)
    if hit.Parent:FindFirstChildWhichIsA("Humanoid") then
        hit.Parent.Humanoid.Position = Vector3.new(teleport.Position.X, teleport.Position.Y + 5, teleport.Position.Z)
        print('Success') --This will only print if the code runs correctly; if it does not print, then there was an error.
    end
end)

Before using the script, make sure the spawn point is anchored. (it should be by default) Hope this helps!

EDIT: So after looking at your question again and the script, I realized you did:

script.Parent.Touched:Connect(function(plr)

Note that the .Touched event does not pass through the player arguement. Instead, it passes through the bodypart/part that touched the part. In this case, it would pass through probably the player's leg(s) as the bodypart. This would mean the parent would be the player's character. Therefore, do:

script.Parent.Touched:Connect(function(part)
    local character = part.Parent
    local humanoid = character:FindFirstChildWhichIsA("Humanoid")
end)

Again, hope this helps!

0
Thanks for helping but it still seems to not work. Once again there are no errors. I tested it with a print("Hello") after the function: script.Parent.Touched:Connect(function(part) print('Hello') But nothing prints. I believe something is wrong with the function but I don't know what. Again thank you for the help! aydenwilson819 25 — 3y

Answer this question