
Keyless

local plr = game.Players.LocalPlayer
local gui = Instance.new('ScreenGui')
gui.Parent = plr.PlayerGui
gui.ResetOnSpawn = false
local frame = Instance.new('Frame')
frame.Parent = gui
frame.Style = Enum.FrameStyle.DropShadow
frame.Size = UDim2.new(1, 0, 0.125, 0)
frame.Position = UDim2.new(0, 0, 0.675, 0)
local close_button = Instance.new('TextButton')
close_button.Parent = frame
close_button.Style = Enum.ButtonStyle.RobloxButtonDefault
close_button.TextColor3 = Color3.new(255, 0, 0)
close_button.TextScaled = true
close_button.Text = '<'
close_button.Size = UDim2.new(0.02, 0, 1, 0)
close_button.Position = UDim2.new(0.98, 0, 0, 0)
local current = 0
close_button.MouseButton1Click:Connect(function()
if current == 0 then
frame.Position = UDim2.new(-0.97, 0, 0.675, 0)
close_button.Text = '>'
current = 1
else
frame.Position = UDim2.new(0, 0, 0.675, 0)
close_button.Text = '<'
current = 0
end
end)
function check_for_tools()
local to_return = {}
for _, v in pairs(game.Workspace:GetChildren()) do
if v.ClassName == 'Tool' and v:FindFirstChild('Handle') then
to_return[#to_return + 1] = v
end
end
return to_return
end
local cfr_button = Instance.new('TextButton')
cfr_button.Parent = frame
cfr_button.Style = Enum.ButtonStyle.RobloxButtonDefault
cfr_button.Size = UDim2.new(0.125, 0, 0.45, 0)
cfr_button.TextColor3 = Color3.new(255, 0, 0)
cfr_button.Text = 'Check for tools.'
local whitelist = {cfr_button}
function check_if_in(item, tablee)
for _, v in pairs(tablee) do
if v == item then
return true
end
end
return false
end
cfr_button.MouseButton1Click:Connect(function()
for _, v in pairs(frame:GetChildren()) do
if not check_if_in(v, whitelist) then
v:Remove()
end
end
local current_tools = check_for_tools()
local current_shift = 0
for k, v in pairs(current_tools) do
local button = cfr_button:Clone()
button.Parent = frame
button.Position = UDim2.new(current_shift, 0, -0.5, 0)
button.Text = current_tools[k].Name
button.MouseButton1Click:Connect(function()
current_tools[k].Handle.Position = plr.Character.Head.Position
button:Remove()
end)
current_shift = current_shift + 0.125
end
end)
local limit = 500
function linear_move(where, amount)
local char = plr.Character
local root = char.HumanoidRootPart.Position
if where == 'X' then
char:MoveTo(Vector3.new(amount, root.Y, root.Z))
end
if where == 'Y' then
char:MoveTo(Vector3.new(root.X, amount, root.Z))
end
if where == 'Z' then
char:MoveTo(Vector3.new(root.X, root.Y, amount))
end
local diff = math.abs(math.abs(root[where]) - math.abs(amount))
end
function safe_move(where, amount)
local char = plr.Character
local root = char.HumanoidRootPart
local temp_pos = root.Position
local mult = 1
if amount <= 0 then
mult = -1
end
local diff = math.abs(math.abs(temp_pos[where]) - math.abs(amount))
if diff <= limit then
linear_move(where, amount)
else
local count = 1
while diff > limit do
temp_pos = root.Position
local group = Instance.new('Model')
group.Parent = game.Workspace
local part_one = Instance.new('Part')
part_one.Size = Vector3.new(4, 1, 4)
part_one.Position = temp_pos + Vector3.new(0, -2, 0)
part_one.Anchored = true
part_one.Parent = group
local part_two = part_one:Clone()
part_two.BrickColor = BrickColor.Green()
part_two.Position = part_two.Position + Vector3.new(0, 0, -4)
part_two.Parent = group
local working = true
part_two.Touched:Connect(function(hit)
if hit.Parent:FindFirstChild('Humanoid') then
working = false
end
end)
while working do
wait()
end
group:Remove()
linear_move(where, limit * mult * count)
diff = math.abs(math.abs(temp_pos[where]) - math.abs(amount))
count = count + 1
end
linear_move(where, amount)
end
end
function move_to(location)
local char = plr.Character
local root = char.HumanoidRootPart
safe_move('X', location.X)
safe_move('Y', location.Y)
safe_move('Z', location.Z)
end
local teleports = {
['starter island'] = Vector3.new(39, 5, 494),
['orange town'] = Vector3.new(-4216, 6, 1331)
}
local teleports_frame = Instance.new('Frame')
teleports_frame.Parent = frame
teleports_frame.Size = UDim2.new(0.5, 0, 1, 0)
teleports_frame.Style = Enum.FrameStyle.DropShadow
teleports_frame.Position = UDim2.new(0.48, 0, 0, 0)
whitelist[#whitelist + 1] = teleports_frame
local current = UDim2.new(0, 0, 0, 0)
for k, v in pairs(teleports) do
local button = Instance.new('TextButton')
button.Parent = teleports_frame
button.Size = UDim2.new(0.125, 0, 0.45, 0)
button.Position = current
button.Style = Enum.ButtonStyle.RobloxButtonDefault
button.Text = k
button.TextScaled = true
button.TextColor3 = Color3.new(255, 0, 0)
button.MouseButton1Click:Connect(function()
move_to(v)
end)
current = UDim2.new(current.X.Scale + 0.125, 0, 0, 0)
if current.X.Scale >= 1 then
current = UDim2.new(0, 0, current.Y.Scale + 0.5, 0)
end
end
local teleport_input = Instance.new('TextBox')
teleport_input.BackgroundColor3 = Color3.new(0, 0, 0)
teleport_input.TextScaled = true
teleport_input.Size = UDim2.new(0.125, 0, 0.25, 0)
teleport_input.TextColor3 = Color3.new(255, 0, 0)
teleport_input.Position = UDim2.new(0.35, 0, 0, 0)
teleport_input.Parent = frame
teleport_input.Text = ''
whitelist[#whitelist + 1] = teleport_input
whitelist[#whitelist + 1] = close_button
local teleport_confirm = Instance.new('TextButton')
teleport_confirm.Style = Enum.ButtonStyle.RobloxButtonDefault
teleport_confirm.TextScaled = true
teleport_confirm.Size = UDim2.new(0.125, 0, 0.25, 0)
teleport_confirm.TextColor3 = Color3.new(255, 0, 0)
teleport_confirm.Position = UDim2.new(0.35, 0, 0.3, 0)
teleport_confirm.Parent = frame
teleport_confirm.Text = 'TP'
whitelist[#whitelist + 1] = teleport_confirm
teleport_confirm.MouseButton1Click:Connect(function()
local raw = teleport_input.Text
local cord_x = string.sub(raw, 1, string.find(raw, ';') - 1)
local wth_x = string.sub(raw, string.find(raw, ';') + 1)
local cord_y = string.sub(wth_x, 1, string.find(wth_x, ';') - 1)
local cord_z = string.sub(wth_x, string.find(wth_x, ';') + 1)
local cords = Vector3.new(cord_x, cord_y, cord_z)
move_to(cords)
end)No comments yet for this script.