
KeylessUniversal

-- --- SANDEVISTAN SCRIPT (TELEPORT MODE - 5 CLONES PER COLOR) ---
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")
local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local VRService = game:GetService("VRService")
local player = Players.LocalPlayer
-- --- TỰ ĐỘNG XÓA GUI CŨ KHI CHẠY LẠI LOADSTRING ---
local playerGui = player:WaitForChild("PlayerGui")
if playerGui:FindFirstChild("SandyGui") then
playerGui.SandyGui:Destroy()
end
local character = player.Character or player.CharacterAdded:Wait()
local hrp = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")
local camera = workspace.CurrentCamera
player.CharacterAdded:Connect(function(newChar)
character = newChar
hrp = character:WaitForChild("HumanoidRootPart")
humanoid = character:WaitForChild("Humanoid")
end)
local sandyActive = false
local activeClones = {}
local auraHighlight = nil -- Biến quản lý hào quang trắng
-- --- LIMIT CONFIGURATION ---
local maxEnergy = 100
local currentEnergy = 100
local depleteSpeed = 4
local rechargeSpeed = 10
-- --- TELEPORT SANDEVISTAN CONFIGURATION ---
local TELEPORT_DISTANCE = 4
local TELEPORT_INTERVAL = 0.07
-- --- DASH CONFIGURATION ---
local DASH_SPEED = 120
local DASH_DURATION = 0.18
-- --- KEYBINDS PC CONFIGURATION ---
local KEY_SANDEVISTAN = Enum.KeyCode.E
local KEY_DASH = Enum.KeyCode.V
-- --- BẢNG MÀU CHUYỂN ĐỔI (3 MÀU) ---
local COLOR_PALETTE = {
Color3.fromRGB(0, 170, 255), -- Xanh dương nhạt
Color3.fromRGB(0, 35, 145), -- Xanh đậm
Color3.fromRGB(0, 255, 0) -- Xanh lá
}
local cloneCounter = 0
local colorIndex = 1
-- Đổi màu sau khi tạo đủ 5 clones
local function getNextCloneColor()
cloneCounter = cloneCounter + 1
if cloneCounter >= 5 then
cloneCounter = 0
colorIndex = colorIndex + 1
if colorIndex > #COLOR_PALETTE then
colorIndex = 1
end
end
return COLOR_PALETTE[colorIndex]
end
-- --- SOUND ID CONFIGURATION ---
local SOUND_ACTIVATE = "rbxassetid://90335135763714"
local SOUND_DASH = "rbxassetid://90335135763714"
-- --- GUI CREATION ---
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SandyGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui
if VRService.VREnabled then
screenGui.Enabled = false
end
-- 1. Nút Sandevistan
local actionButton = Instance.new("TextButton")
actionButton.Size = UDim2.new(0, 90, 0, 90)
actionButton.Position = UDim2.new(0.82, 0, 0.5, -45)
actionButton.BackgroundColor3 = Color3.fromRGB(20, 30, 50)
actionButton.TextColor3 = COLOR_PALETTE[1]
actionButton.Text = "SANDEVISTAN"
actionButton.TextSize = 10
actionButton.Font = Enum.Font.SourceSansBold
actionButton.Parent = screenGui
Instance.new("UICorner", actionButton).CornerRadius = UDim.new(0.5, 0)
-- 2. Nút Dash
local dashButton = Instance.new("TextButton")
dashButton.Size = UDim2.new(0, 75, 0, 75)
dashButton.Position = UDim2.new(0.83, -85, 0.5, 15)
dashButton.BackgroundColor3 = Color3.fromRGB(15, 20, 35)
dashButton.TextColor3 = COLOR_PALETTE[1]
dashButton.Text = "DASH"
dashButton.TextSize = 14
dashButton.Font = Enum.Font.SourceSansBold
dashButton.Parent = screenGui
Instance.new("UICorner", dashButton).CornerRadius = UDim.new(0.5, 0)
-- 3. Thanh Nộ / Energy (Cố định ở bên trái màn hình)
local barBackground = Instance.new("Frame")
barBackground.Size = UDim2.new(0, 20, 0, 180)
barBackground.Position = UDim2.new(0, 20, 0.5, -90)
barBackground.BackgroundColor3 = Color3.fromRGB(10, 15, 25)
barBackground.BorderSizePixel = 0
barBackground.Parent = screenGui
Instance.new("UICorner", barBackground).CornerRadius = UDim.new(0.3, 0)
local barFill = Instance.new("Frame")
barFill.Size = UDim2.new(1, 0, 1, 0)
barFill.BackgroundColor3 = COLOR_PALETTE[1]
barFill.Parent = barBackground
Instance.new("UICorner", barFill).CornerRadius = UDim.new(0.3, 0)
-- 4. NÚT LOCK/UNLOCK DI CHUYỂN GUI
local lockButton = Instance.new("TextButton")
lockButton.Size = UDim2.new(0, 60, 0, 30)
lockButton.Position = UDim2.new(0.82, 0, 0.5, -90)
lockButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40) -- Mặc định màu đỏ (Locked)
lockButton.TextColor3 = Color3.fromRGB(255, 255, 255)
lockButton.Text = "LOCKED"
lockButton.TextSize = 11
lockButton.Font = Enum.Font.SourceSansBold
lockButton.Parent = screenGui
Instance.new("UICorner", lockButton).CornerRadius = UDim.new(0.3, 0)
-- --- TÍNH NĂNG KÉO THẢ (DRAG SYSTEM) ---
local isUnlocked = false
local function makeDraggable(guiObject)
local dragging = false
local dragInput, dragStart, startPos
guiObject.InputBegan:Connect(function(input)
if not isUnlocked then return end
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = guiObject.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
guiObject.InputChanged:Connect(function(input)
if not isUnlocked then return end
if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
dragInput = input
end
end)
UserInputService.InputChanged:Connect(function(input)
if dragging and input == dragInput and isUnlocked then
local delta = input.Position - dragStart
guiObject.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
end
makeDraggable(actionButton)
makeDraggable(dashButton)
makeDraggable(lockButton)
lockButton.Activated:Connect(function()
isUnlocked = not isUnlocked
if isUnlocked then
lockButton.Text = "UNLOCKED"
lockButton.BackgroundColor3 = Color3.fromRGB(40, 180, 40)
else
lockButton.Text = "LOCKED"
lockButton.BackgroundColor3 = Color3.fromRGB(180, 40, 40)
end
end)
-- CYBERPUNK BLUE EFFECT
local colorCorrection = Instance.new("ColorCorrectionEffect")
colorCorrection.Enabled = false
colorCorrection.Saturation = 0.5
colorCorrection.Contrast = 0.2
colorCorrection.TintColor = Color3.fromRGB(150, 200, 255)
colorCorrection.Parent = Lighting
-- HELPER FUNCTIONS
local function playOneShotSound(soundId, volume, speed)
if not hrp then return end
local s = Instance.new("Sound")
s.SoundId = soundId
s.Volume = volume or 2
s.PlaybackSpeed = speed or 1
s.Parent = hrp
s:Play()
Debris:AddItem(s, 2)
end
local function getDashDirection()
if humanoid and humanoid.MoveDirection.Magnitude > 0 then
return humanoid.MoveDirection
else
return camera.CFrame.LookVector.Unit
end
end
-- CLONE FUNCTION (SANDEVISTAN)
local function generatePermanentClone(isStanding)
if not character or not hrp then return end
character.Archivable = true
local clone = character:Clone()
character.Archivable = false
local currentColor = getNextCloneColor()
if clone then
local clonedAura = clone:FindFirstChild("SandyWhiteAura")
if clonedAura then clonedAura:Destroy() end
for _, child in ipairs(clone:GetChildren()) do
if child:IsA("LocalScript") or child:IsA("Script") then
child:Destroy()
elseif child:IsA("Tool") then
for _, tc in ipairs(child:GetDescendants()) do
if tc:IsA("LocalScript") or tc:IsA("Script") then tc:Destroy() end
end
end
end
if clone:FindFirstChild("Humanoid") then clone.Humanoid:Destroy() end
if clone:FindFirstChild("Animate") then clone.Animate:Destroy() end
clone.Parent = workspace
local backDirection = -hrp.CFrame.LookVector * 6
for _, part in pairs(clone:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.Anchored = true
if part.Name ~= "HumanoidRootPart" then
part.Color = currentColor
part.Material = Enum.Material.Neon
part.Transparency = 0.3
if isStanding then
local targetCFrame = part.CFrame + backDirection
TweenService:Create(part, TweenInfo.new(0.6, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
CFrame = targetCFrame
}):Play()
end
else
part.Transparency = 1
end
end
end
table.insert(activeClones, clone)
Debris:AddItem(clone, isStanding and 0.6 or 3)
end
end
-- CLONE FADING FUNCTION (DASH)
local function generateFadingClone(duration)
if not character or not hrp then return end
character.Archivable = true
local clone = character:Clone()
character.Archivable = false
local fadeTime = duration or 0.3
local currentColor = getNextCloneColor()
if clone then
local clonedAura = clone:FindFirstChild("SandyWhiteAura")
if clonedAura then clonedAura:Destroy() end
for _, child in ipairs(clone:GetChildren()) do
if child:IsA("LocalScript") or child:IsA("Script") then
child:Destroy()
elseif child:IsA("Tool") then
for _, tc in ipairs(child:GetDescendants()) do
if tc:IsA("LocalScript") or tc:IsA("Script") then tc:Destroy() end
end
end
end
if clone:FindFirstChild("Humanoid") then clone.Humanoid:Destroy() end
if clone:FindFirstChild("Animate") then clone.Animate:Destroy() end
clone.Parent = workspace
for _, part in pairs(clone:GetDescendants()) do
if part:IsA("BasePart") then
part.CanCollide = false
part.Anchored = true
if part.Name ~= "HumanoidRootPart" then
part.Color = currentColor
part.Material = Enum.Material.Neon
TweenService:Create(part, TweenInfo.new(fadeTime), {Transparency = 1}):Play()
else
part.Transparency = 1
end
end
end
Debris:AddItem(clone, fadeTime)
end
end
-- LOGIC SANDEVISTAN
local function cleanUpSandevistan()
if sandyActive then
sandyActive = false
actionButton.Text = "READY"
colorCorrection.Enabled = false
if auraHighlight then
auraHighlight:Destroy()
auraHighlight = nil
end
for _, clone in ipairs(activeClones) do
if clone and clone.Parent then
clone:Destroy()
end
end
table.clear(activeClones)
end
end
local function toggleSandevistan()
if isUnlocked then return end
if sandyActive then
cleanUpSandevistan()
elseif currentEnergy >= 10 then
sandyActive = true
actionButton.Text = "ACTIVE"
colorCorrection.Enabled = true
playOneShotSound(SOUND_ACTIVATE, 3.5, 1)
if character then
if auraHighlight then auraHighlight:Destroy() end
auraHighlight = Instance.new("Highlight")
auraHighlight.Name = "SandyWhiteAura"
auraHighlight.FillTransparency = 1
auraHighlight.OutlineColor = Color3.fromRGB(255, 255, 255)
auraHighlight.OutlineTransparency = 0
auraHighlight.Parent = character
end
task.spawn(function()
while sandyActive do
if humanoid and hrp then
if humanoid.MoveDirection.Magnitude > 0 then
generatePermanentClone(false)
local dir = humanoid.MoveDirection
hrp.CFrame = hrp.CFrame + (dir * TELEPORT_DISTANCE)
task.wait(TELEPORT_INTERVAL)
else
generatePermanentClone(true)
task.wait(0.12)
end
else
task.wait(0.1)
end
end
end)
end
end
actionButton.Activated:Connect(toggleSandevistan)
-- --- TÍNH NĂNG DASH ---
local function doDash()
if isUnlocked then return end
if not hrp then return end
colorCorrection.Enabled = true
playOneShotSound(SOUND_DASH, 2, 1.5)
local dashDir = getDashDirection()
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(9e9, 9e9, 9e9)
bv.Velocity = dashDir * DASH_SPEED
bv.Parent = hrp
local steeringConnection
steeringConnection = RunService.RenderStepped:Connect(function()
if bv and bv.Parent and humanoid and hrp then
local currentDir = getDashDirection()
bv.Velocity = currentDir * DASH_SPEED
hrp.CFrame = CFrame.lookAt(hrp.Position, hrp.Position + currentDir)
end
end)
task.spawn(function()
for i = 1, 15 do
if not bv or not bv.Parent then break end
generateFadingClone(0.3)
task.wait(0.01)
end
end)
task.wait(DASH_DURATION)
if steeringConnection then steeringConnection:Disconnect() end
bv:Destroy()
if not sandyActive then colorCorrection.Enabled = false end
end
dashButton.Activated:Connect(doDash)
-- INPUTS PC & VR
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if VRService.VREnabled then
if input.KeyCode == Enum.KeyCode.ButtonR2 then
doDash()
elseif input.KeyCode == Enum.KeyCode.ButtonR1 then
toggleSandevistan()
end
else
if input.KeyCode == KEY_SANDEVISTAN then
toggleSandevistan()
elseif input.KeyCode == KEY_DASH then
doDash()
end
end
end)
-- Energy cycle
task.spawn(function()
while true do
task.wait(0.1)
if sandyActive then
currentEnergy = math.max(0, currentEnergy - (depleteSpeed * 0.1))
if currentEnergy <= 0 then cleanUpSandevistan() end
else
currentEnergy = math.min(maxEnergy, currentEnergy + (rechargeSpeed * 0.1))
end
local h = currentEnergy / maxEnergy
TweenService:Create(barFill, TweenInfo.new(0.1), {Size = UDim2.new(1, 0, h, 0), Position = UDim2.new(0, 0, 1-h, 0)}):Play()
end
end)



script up choom
The Sandevistan Sound its Loud