Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Quantum Services
- local UserInputService = game:GetService("UserInputService")
- local StarterGui = game:GetService("StarterGui")
- local Players = game:GetService("Players")
- local RunService = game:GetService("RunService")
- local Workspace = game:GetService("Workspace")
- local CollectionService = game:GetService("CollectionService")
- -- Quantum Variables
- local player = Players.LocalPlayer
- local balls = {}
- local reach = 10
- local magnetStrength = 0
- local reachCircle = nil
- local refreshInterval = 1 -- Refresh every 1 second
- local lastRefreshTime = tick()
- -- Function to add tags to all valid balls
- local function tagBalls()
- for _, v in pairs(Workspace:GetDescendants()) do
- if v:IsA("BasePart") and (v.Name == "TPS" or v.Name == "ESA" or v.Name == "MRS" or v.Name == "PRS" or v.Name == "MPS") then
- if not CollectionService:HasTag(v, "QuantumBall") then
- CollectionService:AddTag(v, "QuantumBall")
- end
- end
- end
- end
- -- Function to refresh the list of balls efficiently
- local function refreshBalls()
- if tick() - lastRefreshTime < refreshInterval then return end
- lastRefreshTime = tick()
- -- Clear the old ball list
- balls = {}
- -- Gather all tagged balls
- for _, ball in pairs(CollectionService:GetTagged("QuantumBall")) do
- if ball:IsA("BasePart") and ball.Parent then
- table.insert(balls, ball)
- end
- end
- end
- -- Initial tagging and refresh of balls
- tagBalls()
- refreshBalls()
- -- Function to create a visible reach circle with rainbow effect
- local function createReachCircle()
- if not reachCircle then
- reachCircle = Instance.new("Part", Workspace)
- reachCircle.Shape = Enum.PartType.Ball
- reachCircle.Anchored = true
- reachCircle.CanCollide = false
- reachCircle.Transparency = 0.8
- reachCircle.Material = Enum.Material.ForceField
- end
- reachCircle.Size = Vector3.new(reach * 2, reach * 2, reach * 2)
- -- Update circle's position and apply rainbow effect
- RunService.RenderStepped:Connect(function()
- if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- reachCircle.Position = player.Character.HumanoidRootPart.Position
- -- Apply rainbow color effect
- local hue = tick() % 5 / 5 -- Cyclic hue value
- reachCircle.Color = Color3.fromHSV(hue, 1, 1)
- end
- end)
- end
- -- Function to create GUI for reach and magnet strength adjustment
- local function createReachGUI()
- local screenGui = Instance.new("ScreenGui")
- screenGui.Name = "QuantumReachGUI"
- screenGui.ResetOnSpawn = false
- screenGui.Parent = player:WaitForChild("PlayerGui")
- -- Reach Frame
- local reachFrame = Instance.new("Frame", screenGui)
- reachFrame.Size = UDim2.new(0.2, 0, 0.1, 0)
- reachFrame.Position = UDim2.new(0.01, 0, 0.01, 0)
- reachFrame.BackgroundColor3 = Color3.new(0, 0, 0)
- reachFrame.BackgroundTransparency = 0.5
- reachFrame.BorderSizePixel = 0
- local reachCorner = Instance.new("UICorner", reachFrame)
- reachCorner.CornerRadius = UDim.new(0.1, 0)
- local reachLabel = Instance.new("TextLabel", reachFrame)
- reachLabel.Size = UDim2.new(1, 0, 0.5, 0)
- reachLabel.Text = "Quantum Reach: " .. reach
- reachLabel.Font = Enum.Font.SourceSansBold
- reachLabel.TextScaled = true
- reachLabel.TextColor3 = Color3.new(1, 1, 1)
- reachLabel.BackgroundTransparency = 1
- local decrementReachButton = Instance.new("TextButton", reachFrame)
- decrementReachButton.Size = UDim2.new(0.5, 0, 0.5, 0)
- decrementReachButton.Position = UDim2.new(0, 0, 0.5, 0)
- decrementReachButton.Text = "-"
- decrementReachButton.Font = Enum.Font.SourceSansBold
- decrementReachButton.TextScaled = true
- decrementReachButton.TextColor3 = Color3.new(1, 1, 1)
- decrementReachButton.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
- local incrementReachButton = Instance.new("TextButton", reachFrame)
- incrementReachButton.Size = UDim2.new(0.5, 0, 0.5, 0)
- incrementReachButton.Position = UDim2.new(0.5, 0, 0.5, 0)
- incrementReachButton.Text = "+"
- incrementReachButton.Font = Enum.Font.SourceSansBold
- incrementReachButton.TextScaled = true
- incrementReachButton.TextColor3 = Color3.new(1, 1, 1)
- incrementReachButton.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
- -- Magnet Frame
- local magnetFrame = Instance.new("Frame", screenGui)
- magnetFrame.Size = UDim2.new(0.2, 0, 0.1, 0)
- magnetFrame.Position = UDim2.new(0.01, 0, 0.12, 0)
- magnetFrame.BackgroundColor3 = Color3.new(0, 0, 0)
- magnetFrame.BackgroundTransparency = 0.5
- magnetFrame.BorderSizePixel = 0
- local magnetCorner = Instance.new("UICorner", magnetFrame)
- magnetCorner.CornerRadius = UDim.new(0.1, 0)
- local magnetLabel = Instance.new("TextLabel", magnetFrame)
- magnetLabel.Size = UDim2.new(1, 0, 0.5, 0)
- magnetLabel.Text = "Magnet Strength: " .. magnetStrength
- magnetLabel.Font = Enum.Font.SourceSansBold
- magnetLabel.TextScaled = true
- magnetLabel.TextColor3 = Color3.new(1, 1, 1)
- magnetLabel.BackgroundTransparency = 1
- local decrementMagnetButton = Instance.new("TextButton", magnetFrame)
- decrementMagnetButton.Size = UDim2.new(0.5, 0, 0.5, 0)
- decrementMagnetButton.Position = UDim2.new(0, 0, 0.5, 0)
- decrementMagnetButton.Text = "-"
- decrementMagnetButton.Font = Enum.Font.SourceSansBold
- decrementMagnetButton.TextScaled = true
- decrementMagnetButton.TextColor3 = Color3.new(1, 1, 1)
- decrementMagnetButton.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
- local incrementMagnetButton = Instance.new("TextButton", magnetFrame)
- incrementMagnetButton.Size = UDim2.new(0.5, 0, 0.5, 0)
- incrementMagnetButton.Position = UDim2.new(0.5, 0, 0.5, 0)
- incrementMagnetButton.Text = "+"
- incrementMagnetButton.Font = Enum.Font.SourceSansBold
- incrementMagnetButton.TextScaled = true
- incrementMagnetButton.TextColor3 = Color3.new(1, 1, 1)
- incrementMagnetButton.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
- -- Adjust Reach with Hold
- local function adjustReach(change)
- reach = math.max(1, reach + change)
- reachLabel.Text = "Quantum Reach: " .. reach
- createReachCircle()
- end
- local function onButtonHold(button, change)
- local holding = false
- button.MouseButton1Down:Connect(function()
- holding = true
- while holding do
- adjustReach(change)
- wait(0.1) -- Adjusts speed of change when holding down
- end
- end)
- button.MouseButton1Up:Connect(function()
- holding = false
- end)
- end
- onButtonHold(decrementReachButton, -1)
- onButtonHold(incrementReachButton, 1)
- -- Adjust Magnet Strength with Hold
- local function adjustMagnet(change)
- magnetStrength = magnetStrength + change
- magnetLabel.Text = "Magnet Strength: " .. magnetStrength
- end
- local function onMagnetHold(button, change)
- local holding = false
- button.MouseButton1Down:Connect(function()
- holding = true
- while holding do
- adjustMagnet(change)
- wait(0.1) -- Adjusts speed of change when holding down
- end
- end)
- button.MouseButton1Up:Connect(function()
- holding = false
- end)
- end
- onMagnetHold(decrementMagnetButton, -1)
- onMagnetHold(incrementMagnetButton, 1)
- end
- -- Function to handle touch for a specific body part
- local function handleBodyPartTouch(bodyPart)
- local character = player.Character
- if not character or not character:FindFirstChild("HumanoidRootPart") then
- return -- Character or HumanoidRootPart doesn't exist yet
- end
- -- Attempt to find the body part dynamically
- local targetPart = character:FindFirstChild(bodyPart)
- or character:FindFirstChild(bodyPart .. "Upper")
- or character:FindFirstChild(bodyPart .. "Lower")
- if targetPart then
- for _, v in pairs(targetPart:GetDescendants()) do
- if v:IsA("TouchTransmitter") and v.Parent then
- for _, ball in pairs(balls) do
- if (ball.Position - targetPart.Position).magnitude < reach then
- firetouchinterest(ball, v.Parent, 0)
- firetouchinterest(ball, v.Parent, 1)
- break
- end
- end
- end
- end
- end
- end
- -- Function to ensure a second touch for a specific body part
- local function ensureSecondTouch(bodyPart)
- RunService.RenderStepped:Connect(function()
- for _, v in pairs(player.Character[bodyPart]:GetDescendants()) do
- if v:IsA("TouchTransmitter") and v.Parent then
- for _, ball in pairs(balls) do
- if (ball.Position - player.Character[bodyPart].Position).magnitude < reach then
- firetouchinterest(ball, v.Parent, 0)
- firetouchinterest(ball, v.Parent, 1)
- break
- end
- end
- end
- end
- end)
- end
- -- Create initial reach circle and GUI
- createReachCircle()
- createReachGUI()
- -- Apply magnetic effect to balls
- RunService.RenderStepped:Connect(function()
- for _, ball in pairs(balls) do
- if ball and ball.Parent and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
- local distance = (ball.Position - player.Character.HumanoidRootPart.Position).magnitude
- if distance < reach then
- local direction = (player.Character.HumanoidRootPart.Position - ball.Position).unit
- ball.Velocity = ball.Velocity + direction * magnetStrength
- end
- end
- end
- end)
- -- Refresh balls and ensure touch functionality
- while true do
- tagBalls()
- refreshBalls()
- handleBodyPartTouch("Right Leg")
- handleBodyPartTouch("Left Leg")
- handleBodyPartTouch("Torso")
- handleBodyPartTouch("Head")
- handleBodyPartTouch("Right Arm")
- handleBodyPartTouch("Left Arm")
- wait(0.1)
- end
- -- Ensure second touch for all body parts
- ensureSecondTouch("Right Leg")
- ensureSecondTouch("Left Leg")
- ensureSecondTouch("Torso")
- ensureSecondTouch("Head")
- ensureSecondTouch("Right Arm")
- ensureSecondTouch("Left Arm")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement