Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
HttpService = :()
UserInputService = :()
TweenService = :()
StarterGui = :()
GuiService = :()
player = Players.LocalPlayer
playerGui = player:()
mouse = player:()
waypoints = {}
waypointCounter =
automationRunning =
automationPaused =
automationStopRequested =
automationTask =
lastSaveTime =
saveDebounceTime =
autosaveEnabled =
pendingSave =
presets = {}
minimized =
showMarkers =
animateTeleport =
teleportDuration =
autosaveDelay =
autosaveVersion =
shuffleMode =
wrapEnabled =
COLOR_BG = .(, , )
COLOR_PANEL = .(, , )
COLOR_BTN = .(, , )
COLOR_BTN_ACTIVE = .(, , )
COLOR_TEXT = .(, , )
COLOR_ON = .(, , )
COLOR_OFF = .(, , )
COLOR_WARNING = .(, , )
COLOR_INFO = .(, , )
WAYPOINT_PREFIX =
MARKER_PREFIX =
HOTKEY_TOGGLE = .KeyCode.RightControl
HOTKEY_ALT_TOGGLE = .KeyCode.T
()
player.Character player.CharacterAdded:()
()
ch = player.Character
ch
ch:()
ch:()
ch:()
()
waypointCounter = waypointCounter +
WAYPOINT_PREFIX .. (waypointCounter) .. .. HttpService:()
(part)
part part:()
(()
part.Velocity = .(, , )
part.RotVelocity = .(, , )
part:()
(() part.AssemblyLinearVelocity = .(, , ) )
)
(cf, opts)
hrp = ()
hrp
,
success, err = (()
target = cf + .(, , )
(hrp)
opts opts.animate
dur = .(, (opts.duration) teleportDuration)
tweenInfo = TweenInfo.(dur, .EasingStyle.Linear, .EasingDirection.InOut)
tw = TweenService:(hrp, tweenInfo, { = target})
tw:()
tw.Completed:()
hrp.CFrame = target
human = hrp.Parent:()
human
(() human:(.HumanoidStateType.Physics) )
)
success
, ():((err))
,
()
i, w (waypoints)
w.order = i
w.seq w.seq = i
()
.(waypoints, (a,b)
(a.order ) < (b.order )
)
()
currentTime = ()
currentTime - lastSaveTime < saveDebounceTime
pendingSave =
.(saveDebounceTime, ()
pendingSave
()
)
pendingSave
lastSaveTime = currentTime
autosaveEnabled
ok, msg = ()
ok
()
()
( .. (msg))
pendingSave =
lastSaveTime = currentTime
autosaveEnabled
ok, msg = ()
ok
()
()
( .. (msg))
(wp)
wp wp.id
existing = :(MARKER_PREFIX .. wp.id)
existing existing:()
part = .()
part.Name = MARKER_PREFIX .. wp.id
part.Size = .(, , )
part.Anchored =
part.CanCollide =
part.Transparency =
part.CastShadow =
part.TopSurface = .SurfaceType.Smooth
part.Position = wp.cframe.Position + .(, , )
part.Parent =
bg = .()
bg.Name =
bg.Size = .(, , , )
bg.Adornee = part
bg.AlwaysOnTop =
bg.Parent = part
label = .()
label.Size = .(, , , )
label.BackgroundTransparency =
label.Text = wp.name
label.TextColor3 = COLOR_TEXT
label.Font = .Font.SourceSansBold
label.TextSize =
label.Parent = bg
mesh = .(, part)
mesh.MeshType = .MeshType.Sphere
part.Shape = .PartType.Ball
pulse = .()
pulse.Name =
pulse.Value =
pulse.Parent = part
pulseAnimation = TweenService:(
pulse,
TweenInfo.(, .EasingStyle.Sine, .EasingDirection.InOut, -),
{Value = }
)
pulseAnimation:()
pulse:():(()
part.Size = .(pulse.Value, pulse.Value, pulse.Value)
)
part
()
_, obj (:())
obj:() obj.Name:(, #MARKER_PREFIX) == MARKER_PREFIX
obj:()
()
()
showMarkers
_, wp (waypoints)
(createMarkerForWaypoint, wp)
()
(writefile) == (readfile) ==
(filename)
()
,
exportTbl = {}
_, w (waypoints)
rx, ry, rz = w.cframe:()
.(exportTbl, {
id = w.id,
name = w.name,
cf = {
pos = { x = w.cframe.X, y = w.cframe.Y, z = w.cframe.Z },
orientation = { rx = rx, ry = ry, rz = rz }
},
enabled = w.enabled,
order = w.order,
seq = w.seq
})
ok, json = (()
HttpService:(exportTbl)
)
ok
,
success, err = (()
(filename, json)
)
success
, .. (err)
presets[filename] = { waypoints = exportTbl, savedAt = .() }
, .. filename
(filename, replaceExisting)
()
,
(filename)
,
success, content = (()
(filename)
)
success
, .. (content)
ok, decoded = (()
HttpService:(content)
)
ok (decoded) ~=
,
replaceExisting
waypoints = {}
()
imported =
_, entry (decoded)
(entry) == entry.cf entry.cf.pos
p = entry.cf.pos
rx = entry.cf.orientation entry.cf.orientation.rx
ry = entry.cf.orientation entry.cf.orientation.ry
rz = entry.cf.orientation entry.cf.orientation.rz
(p.x) (p.y) (p.z)
cf = .((p.x), (p.y), (p.z)) *
.((rx), (ry), (rz))
wp = {
id = entry.id (),
name = entry.name ( .. (#waypoints + )),
cframe = cf,
enabled = (entry.enabled ~= ),
order = entry.order (#waypoints + ),
seq = entry.seq (#waypoints + )
}
.(waypoints, wp)
imported = imported +
()
()
, ():(imported)
()
autosaveVersion = autosaveVersion +
myVersion = autosaveVersion
.(autosaveDelay, ()
myVersion ~= autosaveVersion
autosaveEnabled ()
ok, msg = ()
ok
()
( .. (msg))
)
guiName =
screenGui = playerGui:(guiName)
screenGui screenGui:()
screenGui:()
screenGui = .()
screenGui.Name = guiName
screenGui.ResetOnSpawn =
screenGui.Parent = playerGui
screenGui.ZIndexBehavior = .ZIndexBehavior.Sibling
screenGui.Enabled =
screenGui.DisplayOrder =
main = .()
main.Name =
main.Size = .(, , , )
main.Position = .(, -, , -)
main.AnchorPoint = .(, )
main.BackgroundColor3 = COLOR_BG
main.BorderSizePixel =
main.Parent = screenGui
main.Active =
.(, main).CornerRadius = .(, )
header = .()
header.Name =
header.Size = .(, , , )
header.Position = .(, , , )
header.BackgroundTransparency =
header.Parent = main
title = .()
title.Size = .(, -, , )
title.Position = .(, , , )
title.BackgroundTransparency =
title.Text =
title.Font = .Font.SourceSansBold
title.TextSize =
title.TextColor3 = COLOR_TEXT
title.TextXAlignment = .TextXAlignment.Left
title.Parent = header
minimizeBtn = .()
minimizeBtn.Name =
minimizeBtn.Size = .(, , , )
minimizeBtn.Position = .(, -, , )
minimizeBtn.AnchorPoint = .(, )
minimizeBtn.Text =
minimizeBtn.Font = .Font.SourceSansBold
minimizeBtn.TextSize =
minimizeBtn.BackgroundColor3 = COLOR_BTN
minimizeBtn.TextColor3 = COLOR_TEXT
minimizeBtn.Parent = header
.(, minimizeBtn)
closeBtn = .()
closeBtn.Name =
closeBtn.Size = .(, , , )
closeBtn.Position = .(, -, , )
closeBtn.Text =
closeBtn.Font = .Font.SourceSansBold
closeBtn.TextSize =
closeBtn.BackgroundColor3 = COLOR_BTN
closeBtn.TextColor3 = COLOR_TEXT
closeBtn.Parent = header
.(, closeBtn)
hint = .()
hint.Size = .(, , , )
hint.Position = .(, , , )
hint.BackgroundTransparency =
hint.Text =
hint.TextSize =
hint.Font = .Font.SourceSans
hint.TextColor3 = .(,,)
hint.TextXAlignment = .TextXAlignment.Left
hint.Parent = header
tabNames = {, , }
tabsFrame = .()
tabsFrame.Size = .(, -, , )
tabsFrame.Position = .(, , , )
tabsFrame.BackgroundTransparency =
tabsFrame.Parent = main
tabButtons = {}
i, name (tabNames)
btn = .()
btn.Size = .(, , , )
btn.Position = .(, (i-)*, , )
btn.Text = name
btn.Font = .Font.SourceSans
btn.TextSize =
btn.BackgroundColor3 = COLOR_BTN
btn.TextColor3 = COLOR_TEXT
btn.AutoButtonColor =
btn.Parent = tabsFrame
.(, btn)
tabButtons[i] = btn
content = .()
content.Size = .(, -, , -)
content.Position = .(, , , )
content.BackgroundColor3 = COLOR_PANEL
content.Parent = main
.(, content).CornerRadius = .(, )
infoLabel = .()
infoLabel.Size = .(, -, , )
infoLabel.Position = .(, , , -)
infoLabel.BackgroundTransparency =
infoLabel.Text =
infoLabel.TextWrapped =
infoLabel.TextColor3 = .(,,)
infoLabel.Font = .Font.SourceSans
infoLabel.TextSize =
infoLabel.Parent = main
(text)
infoLabel.Text = (text )
()
_,c (content:())
c:()
(parent, size, pos)
scroll = .()
scroll.Size = size .(, -, , -)
scroll.Position = pos .(, , , )
scroll.BackgroundTransparency =
scroll.ScrollBarThickness =
scroll.AutomaticCanvasSize = .AutomaticSize.Y
scroll.Parent = parent
scroll.CanvasSize = .(,,,)
layout = .()
layout.SortOrder = .SortOrder.LayoutOrder
layout.Padding = .(, )
layout.Parent = scroll
scroll
waypointListFrame, teleportListFrame, automationListFrame
()
tabButtons[].BackgroundColor3 == COLOR_BTN_ACTIVE
()
tabButtons[].BackgroundColor3 == COLOR_BTN_ACTIVE
()
()
()
()
topRow = .()
topRow.Size = .(, -, , )
topRow.Position = .(, , , )
topRow.BackgroundTransparency =
topRow.Parent = content
nameBox = .()
nameBox.Size = .(, , , )
nameBox.Position = .(, , , )
nameBox.PlaceholderText =
nameBox.Text =
nameBox.ClearTextOnFocus =
nameBox.Parent = topRow
addBtn = .()
addBtn.Size = .(, , , )
addBtn.Position = .(, , , )
addBtn.Text =
addBtn.Font = .Font.SourceSans
addBtn.TextSize =
addBtn.BackgroundColor3 = COLOR_BTN
addBtn.TextColor3 = COLOR_TEXT
addBtn.Parent = topRow
.(, addBtn)
addMouseBtn = .()
addMouseBtn.Size = .(, , , )
addMouseBtn.Position = .(, , , )
addMouseBtn.Text =
addMouseBtn.Parent = topRow
.(, addMouseBtn)
exportBtn = .()
exportBtn.Size = .(, , , )
exportBtn.Position = .(, , , )
exportBtn.Text =
exportBtn.Parent = topRow
.(, exportBtn)
importBtn = .()
importBtn.Size = .(, , , )
importBtn.Position = .(, , , )
importBtn.Text =
importBtn.Parent = topRow
.(, importBtn)
markersToggle = .()
markersToggle.Size = .(, , , )
markersToggle.Position = .(, , , )
markersToggle.Text = showMarkers
markersToggle.Parent = topRow
.(, markersToggle)
markersToggle.MouseButton1Click:(()
showMarkers = showMarkers
markersToggle.Text = showMarkers
()
)
animateToggle = .()
animateToggle.Size = .(, , , )
animateToggle.Position = .(, , , )
animateToggle.Text = animateTeleport (..(teleportDuration)..)
animateToggle.Parent = topRow
.(, animateToggle)
animateToggle.MouseButton1Click:(()
animateTeleport = animateTeleport
animateToggle.Text = animateTeleport (..(teleportDuration)..)
)
durationBox = .()
durationBox.Size = .(, , , )
durationBox.Position = .(, , , )
durationBox.PlaceholderText =
durationBox.Text = (teleportDuration)
durationBox.ClearTextOnFocus =
durationBox.Parent = topRow
durationBox.FocusLost:(()
n = (durationBox.Text)
n n >
teleportDuration = n
animateToggle.Text = animateTeleport (..(teleportDuration)..)
durationBox.Text = (teleportDuration)
)
fileSection = .()
fileSection.Size = .(, -, , )
fileSection.Position = .(, , , )
fileSection.BackgroundColor3 = .(, , )
fileSection.Parent = content
.(, fileSection).CornerRadius = .(, )
fileTitle = .()
fileTitle.Size = .(, , , )
fileTitle.Position = .(, , , )
fileTitle.BackgroundTransparency =
fileTitle.Text =
fileTitle.TextColor3 = COLOR_TEXT
fileTitle.Font = .Font.SourceSansBold
fileTitle.TextSize =
fileTitle.Parent = fileSection
filenameBox = .()
filenameBox.Size = .(, -, , )
filenameBox.Position = .(, , , )
filenameBox.PlaceholderText =
filenameBox.Text =
filenameBox.ClearTextOnFocus =
filenameBox.Parent = fileSection
fileButtonRow = .()
fileButtonRow.Size = .(, -, , )
fileButtonRow.Position = .(, , , )
fileButtonRow.BackgroundTransparency =
fileButtonRow.Parent = fileSection
saveFileBtn = .()
saveFileBtn.Size = .(, , , )
saveFileBtn.Position = .(, , , )
saveFileBtn.Text =
saveFileBtn.Parent = fileButtonRow
.(, saveFileBtn)
loadFileBtn = .()
loadFileBtn.Size = .(, , , )
loadFileBtn.Position = .(, , , )
loadFileBtn.Text =
loadFileBtn.Parent = fileButtonRow
.(, loadFileBtn)
saveStatus = .()
saveStatus.Size = .(, , , )
saveStatus.Position = .(, , , )
saveStatus.BackgroundTransparency =
saveStatus.Text =
saveStatus.TextColor3 = COLOR_TEXT
saveStatus.Font = .Font.SourceSans
saveStatus.TextSize =
saveStatus.Parent = fileButtonRow
autosaveSection = .()
autosaveSection.Size = .(, -, , )
autosaveSection.Position = .(, , , )
autosaveSection.BackgroundColor3 = .(, , )
autosaveSection.Parent = content
.(, autosaveSection).CornerRadius = .(, )
autosaveTitle = .()
autosaveTitle.Size = .(, , , )
autosaveTitle.Position = .(, , , )
autosaveTitle.BackgroundTransparency =
autosaveTitle.Text =
autosaveTitle.TextColor3 = COLOR_TEXT
autosaveTitle.Font = .Font.SourceSansBold
autosaveTitle.TextSize =
autosaveTitle.Parent = autosaveSection
autosaveToggle = .()
autosaveToggle.Size = .(, , , )
autosaveToggle.Position = .(, , , )
autosaveToggle.Text = .. (autosaveEnabled )
autosaveToggle.BackgroundColor3 = autosaveEnabled COLOR_ON COLOR_OFF
autosaveToggle.Parent = autosaveSection
.(, autosaveToggle)
autosaveToggle.MouseButton1Click:(()
autosaveEnabled = autosaveEnabled
autosaveToggle.Text = .. (autosaveEnabled )
autosaveToggle.BackgroundColor3 = autosaveEnabled COLOR_ON COLOR_OFF
autosaveEnabled
()
()
)
autosaveNowBtn = .()
autosaveNowBtn.Size = .(, , , )
autosaveNowBtn.Position = .(, , , )
autosaveNowBtn.Text =
autosaveNowBtn.Parent = autosaveSection
.(, autosaveNowBtn)
autosaveNowBtn.MouseButton1Click:(()
filename = filenameBox.Text
success, msg = (filename)
saveStatus.Text = success
saveStatus.TextColor3 = success COLOR_ON COLOR_OFF
(msg)
)
jsonBox = .()
jsonBox.Size = .(, -, , )
jsonBox.Position = .(, , , )
jsonBox.MultiLine =
jsonBox.ClearTextOnFocus =
jsonBox.Text =
jsonBox.PlaceholderText =
jsonBox.TextWrapped =
jsonBox.Parent = content
.(, jsonBox)
waypointListFrame = (content, .(, -, , -), .(, , , ))
()
waypointListFrame:()
()
i, wp (waypoints)
frame = .()
frame.Size = .(, -, , )
frame.BackgroundTransparency =
frame.LayoutOrder = i
frame.Parent = waypointListFrame
nameBoxLocal = .()
nameBoxLocal.Size = .(, , , )
nameBoxLocal.Position = .(, , , )
nameBoxLocal.Text = wp.name
nameBoxLocal.ClearTextOnFocus =
nameBoxLocal.Parent = frame
nameBoxLocal.FocusLost:(()
nameBoxLocal.Text ~=
wp.name = nameBoxLocal.Text
()
nameBoxLocal.Text = wp.name
()
()
)
tpBtn = .()
tpBtn.Size = .(, , , )
tpBtn.Position = .(, , , )
tpBtn.Text =
tpBtn.Parent = frame
.(, tpBtn)
tpBtn.MouseButton1Click:(()
ok, msg = (wp.cframe, {animate = animateTeleport, duration = teleportDuration})
(msg)
)
dupBtn = .()
dupBtn.Size = .(, , , )
dupBtn.Position = .(, , , )
dupBtn.Text =
dupBtn.Parent = frame
.(, dupBtn)
dupBtn.MouseButton1Click:(()
newWp = {
id = (),
name = wp.name .. ,
cframe = wp.cframe,
enabled = wp.enabled,
order = #waypoints + ,
seq = wp.seq
}
.(waypoints, newWp)
()
()
()
()
(():(wp.name))
)
upBtn = .()
upBtn.Size = .(, , , )
upBtn.Position = .(, , , )
upBtn.Text =
upBtn.Parent = frame
.(, upBtn)
upBtn.MouseButton1Click:(()
i >
waypoints[i], waypoints[i-] = waypoints[i-], waypoints[i]
()
()
()
)
downBtn = .()
downBtn.Size = .(, , , )
downBtn.Position = .(, , , )
downBtn.Text =
downBtn.Parent = frame
.(, downBtn)
downBtn.MouseButton1Click:(()
i < #waypoints
waypoints[i], waypoints[i+] = waypoints[i+], waypoints[i]
()
()
()
)
delBtn = .()
delBtn.Size = .(, , , )
delBtn.Position = .(, -, , )
delBtn.Text =
delBtn.Parent = frame
.(, delBtn)
delBtn.MouseButton1Click:(()
confirm = .()
confirm.Size = .(, , , )
confirm.Position = .(, -, , -)
confirm.BackgroundColor3 = .(,,)
confirm.Parent = screenGui
.(, confirm).CornerRadius = .(, )
label = .()
label.Size = .(, -, , )
label.Position = .(, , , )
label.BackgroundTransparency =
label.Text = ():(wp.name)
label.TextWrapped =
label.TextColor3 = COLOR_TEXT
label.Parent = confirm
yes = .()
yes.Size = .(, , , )
yes.Position = .(, -, , -)
yes.Text =
yes.BackgroundColor3 = COLOR_ON
yes.Parent = confirm
.(, yes)
no = .()
no.Size = .(, , , )
no.Position = .(, , , -)
no.Text =
no.BackgroundColor3 = COLOR_BTN
no.Parent = confirm
.(, no)
yes.MouseButton1Click:(()
idx, entry (waypoints)
entry.id == wp.id
.(waypoints, idx)
confirm:()
()
()
()
()
(():(wp.name))
)
no.MouseButton1Click:(()
confirm:()
)
)
addBtn.MouseButton1Click:(()
hrp = ()
hrp
()
givenName = nameBox.Text
wp = {
id = (),
name = (givenName ~= givenName) ( .. (#waypoints + )),
cframe = hrp.CFrame,
enabled = ,
order = #waypoints + ,
seq = #waypoints +
}
.(waypoints, wp)
()
nameBox.Text =
()
()
()
()
(():(wp.name))
)
addMouseBtn.MouseButton1Click:(()
hit = mouse.Hit
hit
()
givenName = nameBox.Text
wp = {
id = (),
name = (givenName ~= givenName) ( .. (#waypoints + )),
cframe = .(hit.Position),
enabled = ,
order = #waypoints + ,
seq = #waypoints +
}
.(waypoints, wp)
()
nameBox.Text =
()
()
()
()
(():(wp.name))
)
exportBtn.MouseButton1Click:(()
exportTbl = {}
_, w (waypoints)
rx, ry, rz = w.cframe:()
.(exportTbl, {
id = w.id,
name = w.name,
cf = {
pos = { x = w.cframe.X, y = w.cframe.Y, z = w.cframe.Z },
orientation = { rx = rx, ry = ry, rz = rz }
},
enabled = w.enabled,
order = w.order,
seq = w.seq
})
ok, json = (() HttpService:(exportTbl) )
ok
jsonBox.Text = json
()
()
)
importBtn.MouseButton1Click:(()
txt = jsonBox.Text
txt txt ==
()
ok, decoded = (() HttpService:(txt) )
ok (decoded) ~=
()
imported =
_, entry (decoded)
(entry) == entry.cf entry.cf.pos
p = entry.cf.pos
rx = entry.cf.orientation entry.cf.orientation.rx
ry = entry.cf.orientation entry.cf.orientation.ry
rz = entry.cf.orientation entry.cf.orientation.rz
(p.x) (p.y) (p.z)
cf = .((p.x), (p.y), (p.z)) *
.((rx), (ry), (rz))
wp = {
id = entry.id (),
name = entry.name ( .. (#waypoints + )),
cframe = cf,
enabled = (entry.enabled ~= ),
order = entry.order (#waypoints + ),
seq = entry.seq (#waypoints + )
}
.(waypoints, wp)
imported = imported +
()
()
()
()
(():(imported))
)
saveFileBtn.MouseButton1Click:(()
filename = filenameBox.Text
success, msg = (filename)
saveStatus.Text = success
saveStatus.TextColor3 = success COLOR_ON COLOR_OFF
(msg)
)
loadFileBtn.MouseButton1Click:(()
filename = filenameBox.Text
success, msg = (filename, )
success
()
()
saveStatus.Text =
saveStatus.TextColor3 = COLOR_ON
saveStatus.Text =
saveStatus.TextColor3 = COLOR_OFF
(msg)
)
()
()
()
teleportListFrame = (content, .(, -, , -), .(, , , ))
()
i, wp (waypoints)
frame = .()
frame.Size = .(, -, , )
frame.BackgroundTransparency =
frame.LayoutOrder = i
frame.Parent = teleportListFrame
nameLabel = .()
nameLabel.Size = .(, , , )
nameLabel.Text = wp.name
nameLabel.BackgroundTransparency =
nameLabel.TextColor3 = COLOR_TEXT
nameLabel.TextXAlignment = .TextXAlignment.Left
nameLabel.Parent = frame
tpBtn = .()
tpBtn.Size = .(, , , )
tpBtn.Position = .(, , , )
tpBtn.Text =
tpBtn.Parent = frame
.(, tpBtn)
tpBtn.MouseButton1Click:(()
ok, msg = (wp.cframe, {animate = animateTeleport, duration = teleportDuration})
(msg)
)
dupBtn = .()
dupBtn.Size = .(, , , )
dupBtn.Position = .(, , , )
dupBtn.Text =
dupBtn.Parent = frame
.(, dupBtn)
dupBtn.MouseButton1Click:(()
newWp = {
id = (),
name = wp.name .. ,
cframe = wp.cframe,
enabled = wp.enabled,
order = #waypoints + ,
seq = wp.seq
}
.(waypoints, newWp)
()
()
()
()
(():(wp.name))
)
delBtn = .()
delBtn.Size = .(, , , )
delBtn.Position = .(, , , )
delBtn.Text =
delBtn.Parent = frame
.(, delBtn)
delBtn.MouseButton1Click:(()
confirm = .()
confirm.Size = .(, , , )
confirm.Position = .(, -, , -)
confirm.BackgroundColor3 = .(,,)
confirm.Parent = screenGui
.(, confirm).CornerRadius = .(, )
label = .()
label.Size = .(, -, , )
label.Position = .(, , , )
label.BackgroundTransparency =
label.Text = ():(wp.name)
label.TextWrapped =
label.TextColor3 = COLOR_TEXT
label.Parent = confirm
yes = .()
yes.Size = .(, , , )
yes.Position = .(, -, , -)
yes.Text =
yes.BackgroundColor3 = COLOR_ON
yes.Parent = confirm
.(, yes)
no = .()
no.Size = .(, , , )
no.Position = .(, , , -)
no.Text =
no.BackgroundColor3 = COLOR_BTN
no.Parent = confirm
.(, no)
yes.MouseButton1Click:(()
idx, entry (waypoints)
entry.id == wp.id
.(waypoints, idx)
confirm:()
()
()
()
()
(():(wp.name))
)
no.MouseButton1Click:(()
confirm:()
)
)
()
()
headerRow = .()
headerRow.Size = .(, -, , )
headerRow.Position = .(, , , )
headerRow.BackgroundTransparency =
headerRow.Parent = content
toggleBtn = .()
toggleBtn.Size = .(, , , )
toggleBtn.Position = .(, , , )
toggleBtn.Text =
toggleBtn.BackgroundColor3 = COLOR_OFF
toggleBtn.Parent = headerRow
.(, toggleBtn)
delayBox = .()
delayBox.Size = .(, , , )
delayBox.Position = .(, , , )
delayBox.PlaceholderText =
delayBox.Text =
delayBox.ClearTextOnFocus =
delayBox.Parent = headerRow
startBox = .()
startBox.Size = .(, , , )
startBox.Position = .(, , , )
startBox.PlaceholderText =
startBox.Text =
startBox.ClearTextOnFocus =
startBox.Parent = headerRow
shuffleBtn = .()
shuffleBtn.Size = .(, , , )
shuffleBtn.Position = .(, , , )
shuffleBtn.Text =
shuffleBtn.BackgroundColor3 = COLOR_BTN
shuffleBtn.Parent = headerRow
.(, shuffleBtn)
shuffleBtn.MouseButton1Click:(()
shuffleMode = shuffleMode
shuffleBtn.Text = .. (shuffleMode )
shuffleBtn.BackgroundColor3 = shuffleMode COLOR_ON COLOR_BTN
)
wrapToggle = .()
wrapToggle.Size = .(, , , )
wrapToggle.Position = .(, , , )
wrapToggle.Text =
wrapToggle.BackgroundColor3 = COLOR_BTN
wrapToggle.Parent = headerRow
.(, wrapToggle)
wrapToggle.MouseButton1Click:(()
wrapEnabled = wrapEnabled
wrapToggle.Text = .. (wrapEnabled )
)
pauseBtn = .()
pauseBtn.Size = .(, , , )
pauseBtn.Position = .(, , , )
pauseBtn.Text =
pauseBtn.BackgroundColor3 = COLOR_WARNING
pauseBtn.Parent = headerRow
.(, pauseBtn)
pauseBtn.Visible =
pauseBtn.MouseButton1Click:(()
automationRunning
automationPaused = automationPaused
pauseBtn.Text = automationPaused
(automationPaused )
)
(on)
toggleBtn.Text = .. (on )
toggleBtn.BackgroundColor3 = on COLOR_ON COLOR_OFF
pauseBtn.Visible = on
()
automationTask
automationStopRequested =
automationPaused =
automationTask = .(()
automationStopRequested
enabled = {}
_, w (waypoints)
w.enabled
.(enabled, w)
#enabled ==
()
automationRunning =
()
shuffleMode
shuffled = {}
i=,#enabled shuffled[i] = enabled[i]
i = #shuffled, , -
j = .(, i)
shuffled[i], shuffled[j] = shuffled[j], shuffled[i]
enabled = shuffled
.(enabled, (a,b)
aSeq = (a.seq)
bSeq = (b.seq)
aSeq ~= bSeq
aSeq < bSeq
(a.order ) < (b.order )
)
= .(, (delayBox.Text) )
startIndex = .((startBox.Text) , , #enabled)
offset = , (#enabled - )
automationStopRequested
automationPaused automationStopRequested
RunService.Heartbeat:()
automationStopRequested
idx = ((startIndex - + offset) % #enabled) +
target = enabled[idx]
target target.enabled
ok, msg = (target.cframe, {animate = animateTeleport, duration = teleportDuration})
(():(target.name, msg))
elapsed =
elapsed <
automationStopRequested
automationPaused
elapsed += RunService.Heartbeat:()
RunService.Heartbeat:()
wrapEnabled
automationTask =
automationRunning =
automationPaused =
()
()
)
toggleBtn.MouseButton1Click:(()
automationRunning = automationRunning
(automationRunning)
automationRunning
()
()
automationStopRequested =
()
)
()
automationListFrame automationListFrame:()
automationListFrame = (content, .(, -, , -), .(, , , ))
()
i, wp (waypoints)
frame = .()
frame.Size = .(, -, , )
frame.BackgroundTransparency =
frame.LayoutOrder = i
frame.Parent = automationListFrame
nameLabel = .()
nameLabel.Size = .(, , , )
nameLabel.Text = wp.name
nameLabel.BackgroundTransparency =
nameLabel.TextColor3 = COLOR_TEXT
nameLabel.TextXAlignment = .TextXAlignment.Left
nameLabel.Parent = frame
toggle = .()
toggle.Size = .(, , , )
toggle.Position = .(, , , )
toggle.Text = wp.enabled
toggle.BackgroundColor3 = wp.enabled COLOR_ON COLOR_OFF
toggle.Parent = frame
.(, toggle)
toggle.MouseButton1Click:(()
wp.enabled = wp.enabled
toggle.Text = wp.enabled
toggle.BackgroundColor3 = wp.enabled COLOR_ON COLOR_OFF
()
)
orderBox = .()
orderBox.Size = .(, , , )
orderBox.Position = .(, , , )
orderBox.Text = (wp.order i)
orderBox.ClearTextOnFocus =
orderBox.Parent = frame
orderBox.FocusLost:(()
n = (orderBox.Text)
n
wp.order = .(.(, n))
()
orderBox.Text = (wp.order i)
)
seqBox = .()
seqBox.Size = .(, , , )
seqBox.Position = .(, , , )
seqBox.Text = (wp.seq i)
seqBox.PlaceholderText =
seqBox.ClearTextOnFocus =
seqBox.Parent = frame
seqBox.FocusLost:(()
n = (seqBox.Text)
n
wp.seq = .(.(, n))
()
seqBox.Text = (wp.seq i)
)
tpBtn = .()
tpBtn.Size = .(, , , )
tpBtn.Position = .(, , , )
tpBtn.Text =
tpBtn.Parent = frame
.(, tpBtn)
tpBtn.MouseButton1Click:(()
ok, msg = (wp.cframe, {animate = animateTeleport, duration = teleportDuration})
(msg)
)
delBtn = .()
delBtn.Size = .(, , , )
delBtn.Position = .(, -, , )
delBtn.Text =
delBtn.Parent = frame
.(, delBtn)
delBtn.MouseButton1Click:(()
confirm = .()
confirm.Size = .(, , , )
confirm.Position = .(, -, , -)
confirm.BackgroundColor3 = .(,,)
confirm.Parent = screenGui
.(, confirm).CornerRadius = .(, )
label = .()
label.Size = .(, -, , )
label.Position = .(, , , )
label.BackgroundTransparency =
label.Text = ():(wp.name)
label.TextWrapped =
label.TextColor3 = COLOR_TEXT
label.Parent = confirm
yes = .()
yes.Size = .(, , , )
yes.Position = .(, -, , -)
yes.Text =
yes.BackgroundColor3 = COLOR_ON
yes.Parent = confirm
.(, yes)
no = .()
no.Size = .(, , , )
no.Position = .(, , , -)
no.Text =
no.BackgroundColor3 = COLOR_BTN
no.Parent = confirm
.(, no)
yes.MouseButton1Click:(()
idx, entry (waypoints)
entry.id == wp.id
.(waypoints, idx)
confirm:()
()
()
()
()
()
(():(wp.name))
)
no.MouseButton1Click:(()
confirm:()
)
)
()
i, btn (tabButtons)
btn.MouseButton1Click:(()
_, b (tabButtons) b.BackgroundColor3 = COLOR_BTN
btn.BackgroundColor3 = COLOR_BTN_ACTIVE
i == () i == () ()
)
tabButtons[].BackgroundColor3 = COLOR_BTN_ACTIVE
()
dragging, dragStart, startPos, dragConnection
(input)
delta = input.Position - dragStart
newPos = startPos + .(, delta.X, , delta.Y)
main.Position = newPos
header.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
dragging =
dragStart = input.Position
startPos = main.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
UserInputService.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement input.UserInputType == .UserInputType.Touch)
(input)
)
minimizeBtn.MouseButton1Click:(()
minimized = minimized
content.Visible = minimized
tabsFrame.Visible = minimized
hint.Visible = minimized
main.Size = minimized .(, , , ) .(, , , )
minimizeBtn.Text = minimized
)
closeBtn.MouseButton1Click:(()
screenGui.Enabled =
)
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == HOTKEY_TOGGLE
screenGui.Enabled = screenGui.Enabled
input.KeyCode == HOTKEY_ALT_TOGGLE
(UserInputService:(.KeyCode.LeftControl)
UserInputService:(.KeyCode.RightControl))
screenGui.Enabled = screenGui.Enabled
)
player.CharacterRemoving:(()
automationStopRequested =
automationRunning =
automationTask
)
()
()