SPTS GEN PP
Key RequiredUniversal

SPTS GEN PP

Universal Scriptinvaliduser1432invaliduser1432 5.8K views 1.6K executesUpdated Aug 24, 2025
2.5/ 5(2 votes)
1150% Positive
Lua Script•248 lines (9138 chars)
-- 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)

Features & Information

Auto Teleport PP Script with Death Train for Super Power Training Simulator (SPTS Genesis)

Community Comments (1)

kenaprttykenaprttyAug 24, 2025

didn't work, gamelink?

More Scripts for Universal Scripts