-- Auto Teleport PP Script with Death Train for Super Power Training Simulator (SPTS Genesis) -- Created based on provided GUI script and research -- This script automatically farms Psychic Power (PP) by spamming the relevant remote events. -- Optionally teleports to the optimal PP training area based on your current PP level. -- To "bypass" zone requirement (train without being in the zone), set bypassZone = true below. -- - If bypassZone = true, it will use the highest remote argument based on your PP level without teleporting. -- - Note: This may not work if the game server checks your position; test in-game. From research, no confirmed bypass exploit, but spamming higher events might work if unchecked. -- Added "Death Train" feature: Enables training in the next higher PP zone where you can survive at least one hit but die quickly for faster farming. -- - On death, auto-respawns and returns to the death train position. -- - Activate by setting deathTrainEnabled = true below. -- Improvements from previous: Reconnect Died event, retry logic, manual respawn (press R). -- WARNING: Use at your own risk. Anti-cheat may detect rapid movement, remote spamming, frequent deaths, or invalid event firing. -- Execute this in a Roblox exploit like Synapse X or Krnl. local player = game.Players.LocalPlayer local replicatedStorage = game:GetService("ReplicatedStorage") local tweenService = game:GetService("TweenService") local runService = game:GetService("RunService") local userInputService = game:GetService("UserInputService") -- Configuration local deathTrainEnabled = false -- Set to true to enable death training in the next higher zone local bypassZone = true -- Set to true to attempt farming without teleporting to the zone (may not grant exp if server checks position) local respawnRetryAttempts = 3 -- Number of times to retry respawning if it fails local respawnDelay = 6 -- Delay after death to account for game’s respawn timer local characterLoadTimeout = 10 -- Max time to wait for character to load local tweenSpeed = 80 -- Lower speed for more natural movement (anti-cheat) -- PP Training Locations and Arguments (from original script) local ppLocations = { {requiredPP = 0, arguments = {"+PP2", "+PP1"}, cframe = nil}, -- No zone needed {requiredPP = 1000000, arguments = {"+PP3"}, cframe = CFrame.new(-2527, 5486, -532)}, {requiredPP = 1000000000, arguments = {"+PP4"}, cframe = CFrame.new(-2560, 5500, -439)}, {requiredPP = 100000000000, arguments = {"+PP5"}, cframe = CFrame.new(-2582, 5516, -504)}, {requiredPP = 10000000000000, arguments = {"+PP6"}, cframe = CFrame.new(-2544, 5412, -495)} } -- Remote event for farming PP local remoteEvent = replicatedStorage:WaitForChild("RemoteEvent") -- Function to get current PP value local function getCurrentPP() local success, pp = pcall(function() return tonumber(player.PrivateStats.PsychicPower.Value) or 0 end) return success and pp or 0 end -- Function to find the best PP arguments and location (or next for death train) local function getBestConfig() local currentPP = getCurrentPP() local bestIndex = 1 for i, config in ipairs(ppLocations) do if currentPP >= config.requiredPP then bestIndex = i else break end end if deathTrainEnabled and bestIndex < #ppLocations then local nextConfig = ppLocations[bestIndex + 1] if currentPP >= nextConfig.requiredPP * 0.1 then -- Rough check for surviving one hit return nextConfig end end return ppLocations[bestIndex] end -- Function to tween to target CFrame local function safeTeleport(targetCFrame) local character = player.Character if not character or not character:FindFirstChild("HumanoidRootPart") then print("Error: Character or HumanoidRootPart not found") return false end local humanoidRootPart = character.HumanoidRootPart local distance = (humanoidRootPart.Position - targetCFrame.Position).Magnitude local duration = distance / tweenSpeed local tweenInfo = TweenInfo.new(duration, Enum.EasingStyle.Linear, Enum.EasingDirection.Out) local tween = tweenService:Create(humanoidRootPart, tweenInfo, {CFrame = targetCFrame}) tween:Play() tween.Completed:Wait() return true end -- Auto-farm PP loop local farming = false local function startFarming(arguments) if farming then return end farming = true spawn(function() while farming do for _, arg in ipairs(arguments) do pcall(function() remoteEvent:FireServer({[1] = arg}) end) end runService.Stepped:Wait() -- Spam fast for glitch-like speed (from research: spamming increases rate) end end) end local function stopFarming() farming = false end -- Wait for character to fully load local function waitForCharacter() local startTime = tick() while not player.Character or not player.Character:FindFirstChild("HumanoidRootPart") or not player.Character:FindFirstChild("Humanoid") do if tick() - startTime > characterLoadTimeout then print("Error: Character load timeout") return false end wait(0.1) end return true end -- Respawn function with retry logic local function attemptRespawn() for i = 1, respawnRetryAttempts do print("Attempting respawn #" .. i) pcall(function() remoteEvent:FireServer({[1] = "Respawn"}) end) wait(respawnDelay) if waitForCharacter() then print("Respawn successful") return true end end print("Error: Failed to respawn after " .. respawnRetryAttempts .. " attempts") return false end -- Main auto-farm logic local lastPosition = nil local lastArguments = nil local function autoPP() stopFarming() local bestConfig = getBestConfig() lastArguments = bestConfig.arguments print("Using PP farming arguments: " .. table.concat(bestConfig.arguments, ", ") .. " (Required PP: " .. bestConfig.requiredPP .. ")") if not bypassZone and bestConfig.cframe then print("Teleporting to PP area (bypassZone=false)") if safeTeleport(bestConfig.cframe) then lastPosition = bestConfig.cframe else print("Teleport failed, retrying in 5 seconds") wait(5) if waitForCharacter() then autoPP() end return end else print("Bypassing zone teleport (farming from current position)") end startFarming(bestConfig.arguments) print("Auto-farming PP started") end -- Death Train: Handle death and respawn local function setupDeathTrain() if not deathTrainEnabled then return end local function connectDied() local character = player.Character if character and character:FindFirstChild("Humanoid") then local humanoid = character.Humanoid humanoid.Died:Connect(function() print("Player died, initiating respawn") stopFarming() if attemptRespawn() then if lastPosition and not bypassZone then safeTeleport(lastPosition) end if lastArguments then startFarming(lastArguments) end end end) end end -- Reconnect on character respawn player.CharacterAdded:Connect(function(newChar) waitForCharacter() print("Character respawned, reconnecting Died event") connectDied() if lastPosition and not bypassZone then safeTeleport(lastPosition) end if lastArguments then startFarming(lastArguments) end end) -- Initial connection connectDied() end -- Manual respawn toggle (press R to force respawn) userInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.R then print("Manual respawn triggered") stopFarming() if attemptRespawn() then if lastPosition and not bypassZone then safeTeleport(lastPosition) end if lastArguments then startFarming(lastArguments) end end end end) -- Start the script if waitForCharacter() then setupDeathTrain() autoPP() -- Periodic re-check for better PP config every 60 seconds spawn(function() while true do wait(60) local currentBest = getBestConfig() if lastArguments ~= currentBest.arguments then -- If better config unlocked autoPP() end end end) end -- Anti-idle local virtualUser = game:GetService("VirtualUser") player.Idled:Connect(function() virtualUser:CaptureController() virtualUser:ClickButton2(Vector2.new()) end)