-- Waypoint Walker Script local UserInputService = game:GetService("UserInputService") local Players = game:GetService("Players") local VirtualUser = game:GetService("VirtualUser") local InventoryService = game:GetService("ReplicatedStorage").Packages._Index["leifstout_networker@0.3.1"].networker._remotes.InventoryService.RemoteEvent local NotificationService = game:GetService("ReplicatedStorage").Packages._Index["leifstout_networker@0.3.1"].networker._remotes.NotificationService.RemoteEvent local GlobalBossService = game:GetService("ReplicatedStorage").Packages._Index["leifstout_networker@0.3.1"].networker._remotes.GlobalBossService.RemoteEvent local TransformationService = game:GetService("ReplicatedStorage").Packages._Index["leifstout_networker@0.3.1"].networker._remotes.TransformationService.RemoteFunction -- Configuration local TOGGLE_KEY = Enum.KeyCode.V -- Press V to start walking local SET_WAYPOINT_KEY = Enum.KeyCode.P -- Press P to set waypoint local CLEAR_KEY = Enum.KeyCode.C -- Press C to clear all waypoints local SHOW_POS_KEY = Enum.KeyCode.F -- Press F to show current position local WALK_SPEED = 16.5 -- Walking speed (default is 16.5) local DAMAGE_IDLE_TIME = 3 -- Seconds without damage before teleporting back -- Boss state tracking local bossState = { FriezaActive = false, lastFriezaDamageTime = 0, NineTailedFoxActive = false, lastNineTailedFoxDamageTime = 0, wasWalkerActive = false } -- Boss configurations with hard coded destinations local BOSSES = { Frieza = { eventName = "GoldenFrieza", destination = Vector3.new(-511.7, 148.63, 4293.9) }, NineTailedFox = { eventName = "NineTailedFox", destination = Vector3.new(246.4, -436.13, 721.56) } } -- Meditation location (for when potion runs out) local MEDITATION_LOCATION = Vector3.new(356.03, -13.3, 305.74) -- Waypoints (hardcoded) local WAYPOINTS = { Vector3.new(284.22, -436.13, 671.65), Vector3.new(194.04, -436.13, 675.83), Vector3.new(196.38, -436.13, 578.61), Vector3.new(280.34, -436.13, 580.05) } local preTPPosition = nil -- Storage local isActive = false local currentWaypointIndex = 1 -- Print instructions print("[V] start/stop | [F] show position | [C] info") print("[Boss TP] Both: notification triggers TP, damage detection tracks if alive") print("[Potion] When AuraSize2xPotion runs out → Auto TP to meditation") print("[Waypoints]") for i, waypoint in ipairs(WAYPOINTS) do print("Waypoint " .. i .. ": X: " .. math.floor(waypoint.X * 100) / 100 .. " | Y: " .. math.floor(waypoint.Y * 100) / 100 .. " | Z: " .. math.floor(waypoint.Z * 100) / 100) end -- Anti-AFK: Prevent disconnect while farming Players.LocalPlayer.Idled:connect(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) -- Function to toggle potions local function togglePotions() InventoryService:FireServer("TogglePotionPaused", "AuraSize2xPotion") InventoryService:FireServer("TogglePotionPaused", "WalkspeedPotion") end -- Get player local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local humanoid = character:WaitForChild("Humanoid") -- Handle character respawn player.CharacterAdded:Connect(function(newCharacter) character = newCharacter humanoidRootPart = character:WaitForChild("HumanoidRootPart") humanoid = character:WaitForChild("Humanoid") -- Stop walking and toggle potions off if active if isActive then isActive = false togglePotions() end currentWaypointIndex = 1 end) -- Transformation activation loop (runs every 40 seconds) coroutine.wrap(function() while true do wait(40) local success, result = pcall(function() return TransformationService:InvokeServer("ActivateTransformation") end) if success then print("[Transformation] Activated!") else print("[Transformation] Failed: " .. tostring(result)) end end end)() -- Toggle on key press UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end -- Show current position if input.KeyCode == SHOW_POS_KEY then local pos = humanoidRootPart.Position print("[Current Position]") print("X: " .. math.floor(pos.X * 100) / 100) print("Y: " .. math.floor(pos.Y * 100) / 100) print("Z: " .. math.floor(pos.Z * 100) / 100) end -- Clear waypoints if input.KeyCode == CLEAR_KEY then -- Waypoints are hardcoded, cannot clear print("[Info] Waypoints are hardcoded and cannot be cleared") end -- Toggle walking if input.KeyCode == TOGGLE_KEY then isActive = not isActive togglePotions() end end) -- Listen for potion run out notifications NotificationService.OnClientEvent:Connect(function(eventName, notificationData) if eventName == "ShowNotification" then -- Check if potion ran out local lines = notificationData.Lines or {} local potionRanOut = false for _, line in ipairs(lines) do if type(line) == "string" and line:find("AuraSize2xPotion") then potionRanOut = true break elseif type(line) == "table" and line.Text then if line.Text:find("AuraSize2xPotion") or line.Text:find("Potion") and line.Text:find("ran out") then potionRanOut = true break end end end -- Handle potion ran out if potionRanOut then print("[Potion] AuraSize2xPotion ran out! Going to meditation...") if isActive then isActive = false togglePotions() end humanoidRootPart.CFrame = CFrame.new(MEDITATION_LOCATION) print("[Meditation] Teleported to meditation location!") end end end) -- Listen for boss damage events (only to track if boss is alive) GlobalBossService.OnClientEvent:Connect(function(eventName, bossName, damage) if eventName == "DamageDealt" then -- Track Frieza damage if bossName == BOSSES.Frieza.eventName and bossState.FriezaActive then bossState.lastFriezaDamageTime = tick() end -- Track Nine-Tailed Fox damage if bossName == BOSSES.NineTailedFox.eventName and bossState.NineTailedFoxActive then bossState.lastNineTailedFoxDamageTime = tick() end end end) -- Listen for boss spawn notifications NotificationService.OnClientEvent:Connect(function(eventName, notificationData) if eventName == "ShowNotification" then -- Check if boss spawned local lines = notificationData.Lines or {} local isFriezaSpawn = false local isNineTailedFoxSpawn = false for _, line in ipairs(lines) do if type(line) == "table" and line.Text then if line.Text:find("Golden Frieza") then isFriezaSpawn = true elseif line.Text:find("Nine-Tailed Fox") or line.Text:find("spirit awakening") then isNineTailedFoxSpawn = true end end end -- Handle Frieza spawn if isFriezaSpawn and BOSSES.Frieza.destination then print("[Boss] Frieza spawned! Pausing walker...") bossState.wasWalkerActive = isActive if isActive then isActive = false togglePotions() end preTPPosition = humanoidRootPart.Position humanoidRootPart.CFrame = CFrame.new(BOSSES.Frieza.destination) bossState.FriezaActive = true bossState.lastFriezaDamageTime = tick() print("[Boss] Teleported! Waiting for damage events...") end -- Handle Nine-Tailed Fox spawn if isNineTailedFoxSpawn and BOSSES.NineTailedFox.destination then print("[Boss] Nine-Tailed Fox spawned! Pausing walker...") bossState.wasWalkerActive = isActive if isActive then isActive = false togglePotions() end preTPPosition = humanoidRootPart.Position humanoidRootPart.CFrame = CFrame.new(BOSSES.NineTailedFox.destination) bossState.NineTailedFoxActive = true bossState.lastNineTailedFoxDamageTime = tick() print("[Boss] Teleported! Waiting for damage events...") end end end) -- Main walking loop while true do wait(0.1) -- Check if Frieza damage has stopped if bossState.FriezaActive then local timeSinceLastDamage = tick() - bossState.lastFriezaDamageTime if timeSinceLastDamage > DAMAGE_IDLE_TIME then bossState.FriezaActive = false if #WAYPOINTS > 0 then humanoidRootPart.CFrame = CFrame.new(WAYPOINTS[1]) print("[Boss] Frieza defeated! Teleported to waypoint 1!") else humanoidRootPart.CFrame = CFrame.new(preTPPosition) print("[Boss] Frieza defeated! Teleported back!") end -- Resume walker if it was active before boss spawn if bossState.wasWalkerActive then isActive = true togglePotions() print("[Walker] Resumed!") end end end -- Check if Nine-Tailed Fox damage has stopped if bossState.NineTailedFoxActive then local timeSinceLastDamage = tick() - bossState.lastNineTailedFoxDamageTime if timeSinceLastDamage > DAMAGE_IDLE_TIME then bossState.NineTailedFoxActive = false if #WAYPOINTS > 0 then humanoidRootPart.CFrame = CFrame.new(WAYPOINTS[1]) print("[Boss] Nine-Tailed Fox defeated! Teleported to waypoint 1!") else humanoidRootPart.CFrame = CFrame.new(preTPPosition) print("[Boss] Nine-Tailed Fox defeated! Teleported back!") end -- Resume walker if it was active before boss spawn if bossState.wasWalkerActive then isActive = true togglePotions() print("[Walker] Resumed!") end end end if isActive then local currentWaypoint = WAYPOINTS[currentWaypointIndex] local distance = (humanoidRootPart.Position - currentWaypoint).Magnitude -- Walk to waypoint humanoid:MoveTo(currentWaypoint) -- Check if reached waypoint if distance < 5 then -- Move to next waypoint currentWaypointIndex = currentWaypointIndex + 1 if currentWaypointIndex > #WAYPOINTS then currentWaypointIndex = 1 end wait(0.005) -- Minimal delay before walking to next waypoint end end end