--// Wally West Ultimate Speedster Script (Updated & Automated)
--// Absolutely NO Roblox Official Smooth Speed / No Shift-Lock Forcing
_G.NightMode = false -- Set to true for night mode, false for day mode
_G.TODC = false -- TimeOfDayChange: Set to false to not change the timeofday
AllowedPlayers = {
["Player1Username"] = "RF",
["Player2Username"] = "Zoom",
["Player3Username"] = "Regular"
}
local Players = game:GetService("Players")
local Lighting = game:GetService("Lighting")
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
--// Configuration States
local currentSpeed = 16
local maxSpeed = 499
local accelRate = 450 -- Adjust this to change how fast you accelerate from 16 to 499
local isMaxSpeedTracked = false
local isMoving = false
local auraEmitters, allTrails = {}, {}
local speedLineSounds = {}
--// Sound Initialization Helper
local function createSound(id, volume, looped)
local sound = Instance.new("Sound")
sound.SoundId = "rbxassetid://" .. tostring(id)
sound.Volume = volume
sound.Looped = looped
sound.Parent = workspace
return sound
end
--// Load Sounds (Original Audio Kept Intact)
local soundIdleLightning = createSound(120549006123546, 6, true)
local soundImpact1 = createSound(115333984709778, 10, false)
local soundImpact2 = createSound(102886893958510, 10, false)
local soundImpact3 = createSound(138106864622900, 10, false)
local soundImpact4 = createSound(168586586, 10, false)
-- Layered Speedline running sounds
table.insert(speedLineSounds, createSound(82055526234026, 7, true))
table.insert(speedLineSounds, createSound(70447855840049, 7, true))
table.insert(speedLineSounds, createSound(89042164719064, 7, true))
--// Aura Generation (Original VFX Retained, Forced MAX NEON)
local function createAuraEmitter(part)
local att = Instance.new("Attachment", part)
local p = Instance.new("ParticleEmitter", att)
p.Texture = "rbxassetid://3442350629"
p.Rate = 45
p.Lifetime = NumberRange.new(0.15, 0.35)
p.Speed = NumberRange.new(5, 12)
p.VelocitySpread = 360
p.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 1.5), NumberSequenceKeypoint.new(1, 0.2)})
p.LightEmission = 1 -- Extreme Neon Glow Blending
p.Brightness = 10 -- OVERDRIVE NEON BRIGHTNESS
p.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 0.1), NumberSequenceKeypoint.new(1, 1)})
p.Color = ColorSequence.new(Color3.fromRGB(0, 255, 255))
p.ZOffset = 1
table.insert(auraEmitters, att)
end
local function createElectricAura(char)
for _, part in ipairs(char:GetChildren()) do
if part:IsA("BasePart") then
createAuraEmitter(part)
end
end
-- CYAN OUTLINE ON CHARACTER (MAX NEON)
if not char:FindFirstChild("WallyOutline") then
local highlight = Instance.new("Highlight")
highlight.Name = "WallyOutline"
highlight.FillTransparency = 1
highlight.OutlineColor = Color3.fromRGB(0, 255, 255)
highlight.OutlineTransparency = 0 -- FULLY SOLID NEON OUTLINE
highlight.Parent = char
end
end
--// Custom Trails (Original VFX Retained, Max Neon)
local function createTrail(part, offset0, offset1, width)
local a0 = Instance.new("Attachment", part)
local a1 = Instance.new("Attachment", part)
a0.Position = offset0
a1.Position = offset1
local trail = Instance.new("Trail", part)
trail.Attachment0 = a0
trail.Attachment1 = a1
trail.Lifetime = 0.25
trail.LightEmission = 1 -- Extreme Neon Glow Blending
trail.Brightness = 10 -- OVERDRIVE NEON BRIGHTNESS
trail.WidthScale = NumberSequence.new(width)
trail.Color = ColorSequence.new(Color3.fromRGB(0, 255, 255), Color3.fromRGB(255, 255, 255))
trail.Transparency = NumberSequence.new{
NumberSequenceKeypoint.new(0, 0.05),
NumberSequenceKeypoint.new(1, 1)
}
table.insert(allTrails, trail)
end
local function createAllTrails(char)
for _, part in ipairs(char:GetChildren()) do
if part:IsA("BasePart") then
createTrail(part, Vector3.new(0, 0.4, 0), Vector3.new(0, -0.4, 0), 0.15)
end
end
end
local function destroyAllTrails()
for _, trail in ipairs(allTrails) do
if trail and trail.Parent then trail:Destroy() end
end
table.clear(allTrails)
end
--// Instant Impact Frame Trigger Module
local function triggerImpactFrame()
-- Play all 4 heavy bass boosted sounds immediately overlayed
soundImpact1:Play()
soundImpact2:Play()
soundImpact3:Play()
soundImpact4:Play()
-- Full screen Flash GUI Build (No Blue Filter)
local flashGui = Instance.new("ScreenGui")
flashGui.Name = "ImpactFlashUI"
flashGui.Parent = player:WaitForChild("PlayerGui")
local flashFrame = Instance.new("Frame")
flashFrame.Size = UDim2.new(1, 0, 1, 0)
flashFrame.Position = UDim2.new(0, 0, 0, 0)
flashFrame.BackgroundColor3 = Color3.fromRGB(220, 255, 255) -- Vibrant light cyan/white mix
flashFrame.BorderSizePixel = 0
flashFrame.ZIndex = 10
flashFrame.Parent = flashGui
-- Camera FOV Pop
camera.FieldOfView = 125
-- Rapid Fade out matching 0.2s duration window
local tween = TweenService:Create(flashFrame, TweenInfo.new(0.2, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Transparency = 1})
tween:Play()
tween.Completed:Connect(function()
flashGui:Destroy()
end)
end
--// Core Physics Bypass Engine & Global Render Loop
RunService.Heartbeat:Connect(function(dt)
local char = player.Character
if not char then return end
local rootPart = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not rootPart or not hum then return end
local moveDir = hum.MoveDirection
isMoving = moveDir.Magnitude > 0
if isMoving then
-- Grow speed dynamically from 16 to 499 limit
currentSpeed = math.clamp(currentSpeed + (accelRate * dt), 16, maxSpeed)
-- Effects ONLY trigger at 499 (bypasses 399 completely)
if currentSpeed >= maxSpeed and not isMaxSpeedTracked then
isMaxSpeedTracked = true
triggerImpactFrame()
createAllTrails(char)
for _, sound in ipairs(speedLineSounds) do sound:Play() end
end
-- Custom Vector Bypass Logic (Completely ignores standard Roblox WalkSpeed restrictions)
local targetVelocity = Vector3.new(moveDir.X * currentSpeed, rootPart.AssemblyLinearVelocity.Y, moveDir.Z * currentSpeed)
rootPart.AssemblyLinearVelocity = targetVelocity
else
-- Handle transition back to static state
currentSpeed = 16
if isMaxSpeedTracked then
isMaxSpeedTracked = false
destroyAllTrails()
for _, sound in ipairs(speedLineSounds) do sound:Stop() end
camera.FieldOfView = 70
end
end
end)
-- Realistic Medium, Slow Moving Screen Shake Loop
RunService.RenderStepped:Connect(function()
if isMoving then
-- Uses sine waves for a realistic, slower, medium cinematic head-bob rather than violent jitter
local t = os.clock()
local speedMultiplier = math.clamp(currentSpeed / maxSpeed, 0.2, 1)
local shakeIntensity = 0.015 * speedMultiplier
local swayX = math.sin(t * 8) * shakeIntensity
local swayY = math.cos(t * 10) * shakeIntensity
local swayZ = math.sin(t * 6) * (shakeIntensity * 0.5)
local runShake = CFrame.Angles(swayX, swayY, swayZ)
camera.CFrame = camera.CFrame * runShake
end
end)
--// Dynamic Character Allocator Lifecycle Hooks
local function onCharacterAdded(char)
task.wait(0.5)
-- Preserve normal control structures, block forced shift locks
local hum = char:WaitForChild("Humanoid")
hum.AutoRotate = true
-- AUTO-EXECUTE: Turns on original idle effects instantly without any GUI buttons
createElectricAura(char)
soundIdleLightning:Play()
end
player.CharacterAdded:Connect(onCharacterAdded)
if player.Character then
onCharacterAdded(player.Character)
end
--[[
WARNING: Heads up! This script has not been verified by ScriptBlox. Use at your own risk!
]]
loadstring(game:HttpGet("https://raw.githubusercontent.com/Unkn0wnKnown/Wally-West-FE/refs/heads/main/Wally%20West%20FE"))()
Comments
No comments yet
Be the first to share your thoughts!