I'm making a teleport tool that has a limited distance, so players can't teleport too long range. I don't know how to do it.
I try with this local script.
local tool = script.Parent.Parent tool.Activated:Connect(function() local Torso = script.Parent.Parent.Torso local mouse = game.Players.LocalPlayer:GetMouse() for x = Torso.Position.X-31,Torso.Position.X+31,0.000000000001 do for z = Torso.Position.Y-31,Torso.Position.Y+31,0.000000000001 do wait() if mouse.Hit.p == Vector3.new(x,mouse.Hit.p.Y,z) then script.Parent.Parent:moveTo(mouse.Hit.p) end end end end)
But it didn't work. Please help!
The reason why it wasn't working is because of this line of code:
script.Parent.Parent:moveTo(mouse.Hit.p)
In the first line of your local script, it reads that Tool is defined as script.Parent.Parent. You did not set the Character, but rather, the tool. This is a very easy fix.
local tool = script.Parent.Parent local Player = game:GetService("Players").LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() tool.Activated:Connect(function() local Torso = script.Parent.Parent.Torso local mouse = game.Players.LocalPlayer:GetMouse() for x = Torso.Position.X-31,Torso.Position.X+31,0.000000000001 do for z = Torso.Position.Y-31,Torso.Position.Y+31,0.000000000001 do wait() if mouse.Hit.p == Vector3.new(x,mouse.Hit.p.Y,z) then Character:MoveTo(mouse.Hit.p) end end end end)
We made a few changes in the code. We basically created two variables, one for the player and one for the Character. We use the variable "Player" to help define the "Character" variable by either getting the Character or waiting for the Character to spawn in case it hasn't yet. In the event in which the Tool is activated we do some conditional statements created by you and we move the Character. I also changed moveTo() into MoveTo() since moveTo() is a non-existent function.
That's it, and if something is not right make sure to double check your code and debug any errors.
>