Run it
Copy the script and paste it into your executor.
targetItems = {
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = -, category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
[] = {quantity = , category = },
}
i = ,
targetItems[ .. i] = {quantity = , category = }
categories = {, , , , , }
COOLDOWN =
TELEPORT_OFFSET =
AUTO_COLLECT_MODE =
Players = :()
TweenService = :()
RunService = :()
Player = Players.LocalPlayer
canTeleport =
canScan =
canDiscover =
collectedItems = {}
availableItems = {}
discoveredItems = {}
currentCategory =
itemPositions = {}
playerGui = Player:()
screenGui = .()
screenGui.Name =
screenGui.Parent = playerGui
screenGui.ResetOnSpawn =
screenGui.ZIndexBehavior = .ZIndexBehavior.Sibling
mainFrame = .()
mainFrame.Size = .(, , , )
mainFrame.Position = .(, -, , -)
mainFrame.BackgroundColor3 = .(, , )
mainFrame.BorderSizePixel =
mainFrame.Draggable =
mainFrame.Active =
mainFrame.Parent = screenGui
corner = .()
corner.CornerRadius = .(, )
corner.Parent = mainFrame
shadow = .()
shadow.Name =
shadow.Image =
shadow.ImageColor3 = .(, , )
shadow.ImageTransparency =
shadow.ScaleType = .ScaleType.Slice
shadow.SliceCenter = Rect.(, , , )
shadow.Size = .(, , , )
shadow.Position = .(, -, , -)
shadow.BackgroundTransparency =
shadow.Parent = mainFrame
shadow.ZIndex = -
header = .()
header.Size = .(, , , )
header.BackgroundColor3 = .(, , )
header.BorderSizePixel =
header.Parent = mainFrame
headerCorner = .()
headerCorner.CornerRadius = .(, )
headerCorner.Parent = header
title = .()
title.Parent = header
title.Size = .(, , , )
title.Position = .(, , , )
title.BackgroundTransparency =
title.TextColor3 = .(, , )
title.Font = .Font.SourceSansSemibold
title.Text =
title.TextSize =
title.TextYAlignment = .TextYAlignment.Bottom
subtitle = .()
subtitle.Parent = header
subtitle.Size = .(, , , )
subtitle.Position = .(, , , )
subtitle.BackgroundTransparency =
subtitle.TextColor3 = .(, , )
subtitle.Font = .Font.SourceSans
subtitle.Text =
subtitle.TextSize =
subtitle.TextYAlignment = .TextYAlignment.Top
tabContainer = .()
tabContainer.Parent = mainFrame
tabContainer.Size = .(, -, , )
tabContainer.Position = .(, , , )
tabContainer.BackgroundColor3 = .(, , )
tabContainer.BorderSizePixel =
tabCorner = .()
tabCorner.CornerRadius = .(, )
tabCorner.Parent = tabContainer
tabListLayout = .()
tabListLayout.Parent = tabContainer
tabListLayout.FillDirection = .FillDirection.Horizontal
tabListLayout.Padding = .(, )
modeToggle = .()
modeToggle.Parent = mainFrame
modeToggle.Size = .(, -, , )
modeToggle.Position = .(, , , )
modeToggle.BackgroundTransparency =
modeLabel = .()
modeLabel.Parent = modeToggle
modeLabel.Size = .(, , , )
modeLabel.BackgroundTransparency =
modeLabel.TextColor3 = .(, , )
modeLabel.Font = .Font.SourceSans
modeLabel.Text =
modeLabel.TextSize =
modeLabel.TextXAlignment = .TextXAlignment.Left
modeSwitch = .()
modeSwitch.Parent = modeToggle
modeSwitch.Size = .(, , , )
modeSwitch.Position = .(, , , )
modeSwitch.BackgroundColor3 = .(, , )
modeSwitch.Text =
modeSwitch.BorderSizePixel =
switchCorner = .()
switchCorner.CornerRadius = .(, )
switchCorner.Parent = modeSwitch
switchIndicator = .()
switchIndicator.Parent = modeSwitch
switchIndicator.Size = .(, , , )
switchIndicator.Position = .(, , , )
switchIndicator.BackgroundColor3 = .(, , )
switchIndicator.BorderSizePixel =
indicatorCorner = .()
indicatorCorner.CornerRadius = .(, )
indicatorCorner.Parent = switchIndicator
statusBar = .()
statusBar.Parent = mainFrame
statusBar.Size = .(, -, , )
statusBar.Position = .(, , , )
statusBar.BackgroundTransparency =
statusLabel = .()
statusLabel.Parent = statusBar
statusLabel.Size = .(, , , )
statusLabel.BackgroundTransparency =
statusLabel.TextColor3 = .(, , )
statusLabel.Font = .Font.SourceSans
statusLabel.Text =
statusLabel.TextSize =
statusLabel.TextXAlignment = .TextXAlignment.Left
scrollFrame = .()
scrollFrame.Parent = mainFrame
scrollFrame.Size = .(, -, , -)
scrollFrame.Position = .(, , , )
scrollFrame.BackgroundTransparency =
scrollFrame.ScrollBarThickness =
scrollFrame.ScrollBarImageColor3 = .(, , )
scrollFrame.BorderSizePixel =
scrollFrame.BottomImage =
scrollFrame.MidImage =
scrollFrame.TopImage =
listLayout = .()
listLayout.Parent = scrollFrame
listLayout.Padding = .(, )
(position, itemName)
character = Player.Character
character character:()
statusLabel.Text =
humanoidRootPart = character.HumanoidRootPart
offsetPosition = position + .(
.(-TELEPORT_OFFSET, TELEPORT_OFFSET),
,
.(-TELEPORT_OFFSET, TELEPORT_OFFSET)
)
tweenInfo = TweenInfo.(, .EasingStyle.Quart, .EasingDirection.Out)
tween = TweenService:(humanoidRootPart, tweenInfo, {
= .(offsetPosition)
})
statusLabel.Text = .. itemName ..
tween:()
tween.Completed:(()
statusLabel.Text = .. itemName ..
.()
statusLabel statusLabel.Parent
statusLabel.Text =
)
(itemName)
canTeleport
statusLabel.Text =
canTeleport =
character = Player.Character
character character:()
statusLabel.Text =
canTeleport =
itemsFound = {}
itemData = targetItems[itemName] {quantity = }
statusLabel.Text = .. itemName ..
_, item (:())
item.Name == itemName
position =
item:()
position = item.Position
item:()
primaryPart = item.PrimaryPart item:()
primaryPart
position = primaryPart.Position
position
.(itemsFound, {item = item, position = position})
#itemsFound ==
statusLabel.Text = .. itemName ..
canTeleport =
playerPosition = character.HumanoidRootPart.Position
closestItem =
closestDistance = .huge
_, itemInfo (itemsFound)
distance = (playerPosition - itemInfo.position).Magnitude
distance < closestDistance
closestDistance = distance
closestItem = itemInfo
closestItem
(closestItem.position, itemName)
statusLabel.Text = .. itemName
.(()
.(COOLDOWN)
canTeleport =
)
()
canTeleport
statusLabel.Text =
AUTO_COLLECT_MODE
statusLabel.Text =
canTeleport =
character = Player.Character
character character:()
statusLabel.Text =
canTeleport =
itemQueue = {}
itemsCounted = {}
statusLabel.Text =
itemName, _ (targetItems)
itemsCounted[itemName] =
_, item (:())
targetItems[item.Name]
itemName = item.Name
targetCount = targetItems[itemName].quantity
targetCount == - itemsCounted[itemName] < targetCount
position =
item:()
position = item.Position
item:()
primaryPart = item.PrimaryPart item:()
primaryPart
position = primaryPart.Position
position
.(itemQueue, {
name = itemName,
position = position,
item = item
})
itemsCounted[itemName] = itemsCounted[itemName] +
#itemQueue ==
statusLabel.Text =
canTeleport =
playerPosition = character.HumanoidRootPart.Position
.(itemQueue, (a, b)
distA = (playerPosition - a.position).Magnitude
distB = (playerPosition - b.position).Magnitude
distA < distB
)
statusLabel.Text = .. #itemQueue ..
itemQueue[]
(itemQueue[].position, itemQueue[].name)
.(()
.(COOLDOWN * )
canTeleport =
)
(icon, color)
button = .()
button.Size = .(, , , )
button.BackgroundColor3 = color
button.Text = icon
button.TextSize =
button.TextColor3 = .(, , )
button.AutoButtonColor =
corner = .()
corner.CornerRadius = .(, )
corner.Parent = button
button.MouseButton1Down:(()
button.Size = .(, , , )
)
button.MouseButton1Up:(()
button.Size = .(, , , )
)
button
updateItemDisplay
()
canDiscover
canDiscover =
discoveredItems = {}
newItemsFound =
statusLabel.Text =
_, item (:())
item:() item:()
itemName = item.Name
targetItems[itemName] discoveredItems[itemName]
skipNames = {
, , , , ,
, , , ,
, , , , , ,
, , , , , ,
, , , , ,
, , , ,
}
shouldSkip =
_, skipName (skipNames)
itemName == skipName itemName:() itemName:()
shouldSkip =
shouldSkip itemName ~= #itemName >
discoveredItems[itemName] = (discoveredItems[itemName] ) +
newItemsFound = newItemsFound +
newItemsFound >
statusLabel.Text = .. newItemsFound ..
itemName, count (discoveredItems)
targetItems[itemName]
targetItems[itemName] = {quantity = , category = }
availableItems[itemName] = count
()
statusLabel.Text =
.(()
.()
canDiscover =
)
(itemName, found, target)
entry = .()
entry.Name = itemName ..
entry.Size = .(, -, , )
entry.BackgroundColor3 = .(, , )
entry.BorderSizePixel =
entry.Text =
entry.AutoButtonColor =
entry.Parent = scrollFrame
entryCorner = .()
entryCorner.CornerRadius = .(, )
entryCorner.Parent = entry
itemData = targetItems[itemName] {quantity = , category = }
displayTarget = itemData.quantity
entry.MouseButton1Click:(()
found >
(itemName)
)
itemLabel = .()
itemLabel.Parent = entry
itemLabel.Size = .(, , , )
itemLabel.Position = .(, , , )
itemLabel.BackgroundTransparency =
itemLabel.TextColor3 = .(, , )
itemLabel.Font = .Font.SourceSans
itemLabel.Text = itemName
itemLabel.TextSize =
itemLabel.TextXAlignment = .TextXAlignment.Left
itemLabel.ClipsDescendants =
categoryLabel = .()
categoryLabel.Parent = entry
categoryLabel.Size = .(, , , )
categoryLabel.Position = .(, , , )
categoryLabel.BackgroundTransparency =
categoryLabel.TextColor3 = .(, , )
categoryLabel.Font = .Font.SourceSans
categoryLabel.Text = itemData.category
categoryLabel.TextSize =
categoryLabel.TextXAlignment = .TextXAlignment.Left
countLabel = .()
countLabel.Parent = entry
countLabel.Size = .(, -, , )
countLabel.Position = .(, , , )
countLabel.BackgroundTransparency =
countLabel.Font = .Font.SourceSansSemibold
countLabel.TextSize =
countLabel.TextXAlignment = .TextXAlignment.Right
teleportIcon = .()
teleportIcon.Parent = entry
teleportIcon.Size = .(, , , )
teleportIcon.Position = .(, , , )
teleportIcon.BackgroundTransparency =
teleportIcon.Text =
teleportIcon.TextSize =
teleportIcon.TextXAlignment = .TextXAlignment.Center
found ==
countLabel.Text = .. (displayTarget == - displayTarget)
countLabel.TextColor3 = .(, , )
itemLabel.TextColor3 = .(, , )
entry.BackgroundColor3 = .(, , )
teleportIcon.TextTransparency =
displayTarget == -
countLabel.Text = found ..
countLabel.TextColor3 = .(, , )
teleportIcon.TextTransparency =
found >= displayTarget
countLabel.Text = found .. .. displayTarget ..
countLabel.TextColor3 = .(, , )
teleportIcon.TextTransparency =
countLabel.Text = found .. .. displayTarget
countLabel.TextColor3 = .(, , )
teleportIcon.TextTransparency =
entry.MouseEnter:(()
found >
entry.BackgroundColor3 = .(, , )
)
entry.MouseLeave:(()
entry.BackgroundColor3 = found > .(, , ) .(, , )
)
entry
updateItemDisplay = ()
_, child (scrollFrame:())
child:() child.Name:()
child:()
itemName, itemData (targetItems)
currentCategory == itemData.category == currentCategory
foundCount = availableItems[itemName]
(itemName, foundCount, itemData.quantity)
scrollFrame.CanvasSize = .(, , , listLayout.AbsoluteContentSize.Y + )
()
canScan
canScan =
availableItems = {}
itemPositions = {}
totalItems =
statusLabel.Text =
(container, containerName)
_, item (container:())
targetItems[item.Name]
availableItems[item.Name] = (availableItems[item.Name] ) +
totalItems = totalItems +
position =
item:()
position = item.Position
item:()
primaryPart = item.PrimaryPart item:()
primaryPart
position = primaryPart.Position
position
itemPositions[item.Name]
itemPositions[item.Name] = {}
.(itemPositions[item.Name], position)
(, )
itemContainers = :() :() :()
itemContainers
(itemContainers, )
statusLabel.Text = .. totalItems ..
()
.(()
.()
canScan =
)
modeSwitch.MouseButton1Click:(()
AUTO_COLLECT_MODE = AUTO_COLLECT_MODE
tweenInfo = TweenInfo.(, .EasingStyle.Quad, .EasingDirection.Out)
AUTO_COLLECT_MODE
modeSwitch.BackgroundColor3 = .(, , )
tween = TweenService:(switchIndicator, tweenInfo, {
Position = .(, , , )
})
tween:()
statusLabel.Text =
modeSwitch.BackgroundColor3 = .(, , )
tween = TweenService:(switchIndicator, tweenInfo, {
Position = .(, , , )
})
tween:()
statusLabel.Text =
.(()
.()
statusLabel.Text =
)
)
(name)
button = .()
button.Name = name ..
button.Size = .(/#categories, , , )
button.BackgroundColor3 = name == .(, , ) .(, , )
button.TextColor3 = name == .(, , ) .(, , )
button.Font = .Font.SourceSansSemibold
button.Text = name
button.TextSize =
button.AutoButtonColor =
button.BorderSizePixel =
button.Parent = tabContainer
buttonCorner = .()
buttonCorner.CornerRadius = .(, )
buttonCorner.Parent = button
button.MouseButton1Click:(()
_, btn (tabContainer:())
btn:()
btn.BackgroundColor3 = .(, , )
btn.TextColor3 = .(, , )
button.BackgroundColor3 = .(, , )
button.TextColor3 = .(, , )
currentCategory = name
()
)
button
_, cat (categories)
(cat)
buttonContainer = .()
buttonContainer.Parent = mainFrame
buttonContainer.Size = .(, -, , )
buttonContainer.Position = .(, , , )
buttonContainer.BackgroundTransparency =
buttonLayout = .()
buttonLayout.Parent = buttonContainer
buttonLayout.FillDirection = .FillDirection.Horizontal
buttonLayout.Padding = .(, )
buttonLayout.HorizontalAlignment = .HorizontalAlignment.Center
scanButton = (, .(, , ))
scanButton.Parent = buttonContainer
scanButton.MouseButton1Click:(scanWorkspaceItems)
discoverButton = (, .(, , ))
discoverButton.Parent = buttonContainer
discoverButton.MouseButton1Click:(discoverNewItems)
autoButton = (, .(, , ))
autoButton.Parent = buttonContainer
autoButton.MouseButton1Click:(autoCollectItems)
nearestButton = (, .(, , ))
nearestButton.Parent = buttonContainer
()
canTeleport
statusLabel.Text =
canTeleport =
character = Player.Character
character character:()
statusLabel.Text =
canTeleport =
playerPosition = character.HumanoidRootPart.Position
nearestItem =
nearestDistance = .huge
nearestItemName =
statusLabel.Text =
_, item (:())
targetItems[item.Name]
position =
item:()
position = item.Position
item:()
primaryPart = item.PrimaryPart item:()
primaryPart
position = primaryPart.Position
position
distance = (playerPosition - position).Magnitude
distance < nearestDistance
nearestDistance = distance
nearestItem = position
nearestItemName = item.Name
nearestItem
statusLabel.Text = .. nearestItemName .. .. .(nearestDistance) ..
(nearestItem, nearestItemName)
statusLabel.Text =
.(()
.(COOLDOWN)
canTeleport =
)
nearestButton.MouseButton1Click:(teleportToNearestItem)
UserInputService = :()
UserInputService.InputBegan:((input, gameProcessed)
gameProcessed
input.KeyCode == .KeyCode.T
()
input.KeyCode == .KeyCode.R
()
input.KeyCode == .KeyCode.G AUTO_COLLECT_MODE
()
)
keybindInfo = .()
keybindInfo.Parent = mainFrame
keybindInfo.Size = .(, -, , )
keybindInfo.Position = .(, , , -)
keybindInfo.BackgroundTransparency =
keybindInfo.TextColor3 = .(, , )
keybindInfo.Font = .Font.SourceSans
keybindInfo.Text =
keybindInfo.TextSize =
keybindInfo.TextXAlignment = .TextXAlignment.Center
.(()
.()
()
)
waypointHistory = {}
maxWaypoints =
(position, itemName)
.(waypointHistory, , {
position = position,
name = itemName,
timestamp = ()
})
#waypointHistory > maxWaypoints
.(waypointHistory)
()
#waypointHistory >
waypoint = waypointHistory[]
waypoint
(waypoint.position, .. waypoint.name)
statusLabel.Text =
waypointButton = (, .(, , ))
waypointButton.Parent = buttonContainer
waypointButton.MouseButton1Click:(teleportToPreviousWaypoint)
originalTeleportToPosition = teleportToPosition
teleportToPosition = (position, itemName)
(position, itemName)
(position, itemName)
()
( .. (#targetItems) .. )
()
()
()
()
()This script will work better when the map reach its max FEATURES: -Teleport to any item (literally)

99 Nights in the Forest 🔦