
KeylessUniversal

writefile("RUN.mp3", game:HttpGet("https://github.com/ian49972/smth/raw/refs/heads/main/RUN.mp3"))
-- Create ScreenGui
local gui = Instance.new("ScreenGui")
gui.Name = "SimpleFadeGui"
gui.ResetOnSpawn = false
gui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")
-- Create TextLabel
local textLabel = Instance.new("TextLabel")
textLabel.Size = UDim2.new(0.4, 0, 0.1, 0)
textLabel.Position = UDim2.new(0.3, 0, 0.45, 0)
textLabel.BackgroundTransparency = 1
textLabel.TextScaled = true
textLabel.Font = Enum.Font.GothamBold
textLabel.TextColor3 = Color3.new(1, 1, 1)
textLabel.Text = "Made by ban_thid or just Rob"
textLabel.Parent = gui
-- Fade out effect
for i = 1, 30 do
textLabel.TextTransparency = i / 30
textLabel.TextStrokeTransparency = i / 30
wait(0.1)
end
-- Optionally, destroy after fading
wait(0.2)
gui:Destroy()
-- SERVICES
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Lighting = game:GetService("Lighting")
local TweenService = game:GetService("TweenService")
-- PLAYER SETUP
local player = Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()
local hum = char:WaitForChild("Humanoid")
local hrp = char:WaitForChild("HumanoidRootPart")
local originalSpawn = hrp.CFrame
-- VARIABLES
local maps = {
115430544439657,
107690645083160,
101535581314104,
}
local chosenMapId = maps[math.random(1, #maps)]
local mapModel = game:GetObjects("rbxassetid://"..chosenMapId)[1]
mapModel.Parent = workspace
local function getRandomSpawn()
local parts = mapModel:GetDescendants()
local candidates = {}
for _, v in ipairs(parts) do
if v:IsA("BasePart") and v.CanCollide and v.Size.Magnitude > 2 then
table.insert(candidates, v)
end
end
return candidates[math.random(1, #candidates)]
end
hrp.CFrame = getRandomSpawn().CFrame + Vector3.new(0, 3, 0)
-- KILLER SETUP
local killer = game:GetObjects("rbxassetid://70629105087017")[1]
killer.Parent = workspace
local killerHRP = killer:WaitForChild("HumanoidRootPart")
local killerHum = killer:WaitForChild("Humanoid")
killerHRP.CFrame = getRandomSpawn().CFrame + Vector3.new(0, 3, 0)
-- ANIMATIONS
local Animator = loadstring(game:HttpGet("https://raw.githubusercontent.com/ProudNamed/SuperLightning/refs/heads/main/AnimModule/MainModule"))()
local function loadAnim(model, id)
local a = game:GetObjects("rbxassetid://"..id)[1]
a.Parent = model
return Animator.new(model, a)
end
local killerAnims = {
Run = loadAnim(killer, "93054787145505"),
Walk = loadAnim(killer, "93622022596108"),
Slash = loadAnim(killer, "126830014841198")
}
local playerAnims = {
Idle = loadAnim(char, "131082534135875"),
Walk = loadAnim(char, "108018357044094"),
Run = loadAnim(char, "136252471123500"),
}
-- STAMINA & SPEED SETTINGS
local playerMaxStam, playerStam = 100, 100
local killerMaxStam, killerStam = 110, 110
local playerDrain, playerRecover = 20, 25
local killerDrain, killerRecover = 15, 10
local playerWalkSpeed, playerSprintSpeed = 16, 27
local killerWalkSpeed, killerSprintSpeed = 13, 28
-- GUI SETUP
local gui = Instance.new("ScreenGui", player:WaitForChild("PlayerGui"))
gui.Name = "GameUI"
local function createBar(name, size, position, color, parent)
local bg = Instance.new("Frame", parent)
bg.Name = name.."BG"
bg.Size, bg.Position = size, position
bg.BackgroundColor3, bg.BorderSizePixel = Color3.new(0, 0, 0), 2
local fill = Instance.new("Frame", bg)
fill.Name = name.."Fill"
fill.Size = UDim2.new(1, 0, 1, 0)
fill.BackgroundColor3 = color
return fill
end
local playerStaminaFill = createBar("PlayerStam", UDim2.new(0,200,0,25), UDim2.new(0.5,-100,1,-90), Color3.new(0,1,0), gui)
local killerBill = Instance.new("BillboardGui", killerHRP)
killerBill.Size, killerBill.StudsOffset, killerBill.AlwaysOnTop = UDim2.new(0,100,0,15), Vector3.new(0,3,0), true
local killerStaminaFill = createBar("KillerStam", UDim2.new(1,0,1,0), UDim2.new(0,0,0,0), Color3.new(1,0,0), killerBill)
local sprintBtn = Instance.new("TextButton", gui)
sprintBtn.Size, sprintBtn.Position = UDim2.new(0,120,0,40), UDim2.new(0.5, -60, 1, -50)
sprintBtn.BackgroundColor3, sprintBtn.TextColor3, sprintBtn.Text = Color3.new(1,0,0), Color3.new(1,1,1), "SPRINT"
local isSprinting = false
sprintBtn.MouseButton1Down:Connect(function()
if playerStam > 0 then
isSprinting = not isSprinting
hum.WalkSpeed = isSprinting and playerSprintSpeed or playerWalkSpeed
sprintBtn.Text = isSprinting and "STOP" or "SPRINT"
sprintBtn.BackgroundColor3 = isSprinting and Color3.new(0,1,0) or Color3.new(1,0,0)
end
end)
-- SOUND + TIMER SETUP
local sound = Instance.new("Sound")
sound.SoundId = getcustomasset("RUN.mp3")
sound.Volume = 1
sound.Looped = false
sound.Parent = workspace
sound:Play()
local timerLabel = Instance.new("TextLabel", gui)
timerLabel.Size, timerLabel.Position, timerLabel.Font, timerLabel.TextSize = UDim2.new(0,150,0,50), UDim2.new(0.5,-75,0,10), Enum.Font.SourceSansBold, 40
timerLabel.TextColor3 = Color3.fromRGB(255,255,255)
timerLabel.BackgroundTransparency = 1
local countdown = 73
-- NIGHT MODE
Lighting.ClockTime = 0.0
Lighting.FogEnd, Lighting.FogStart = 100,0
-- SLASH HANDLER WITH HITBOX EXTENSION
local lastSlash = 0
local slashCooldown = 2
local function canSlash()
return tick() - lastSlash >= slashCooldown
end
local function trySlash(hit)
if not canSlash() then return end
if hit:IsDescendantOf(char) then
lastSlash = tick()
killerAnims.Slash:Play()
local h = hit.Parent:FindFirstChildOfClass("Humanoid")
if h then h:TakeDamage(20) end
end
end
killerHRP.Touched:Connect(trySlash)
-- Additional hitbox around killerHRP for aggressive attacks when close
local hitbox = Instance.new("Part")
hitbox.Transparency = 1
hitbox.CanCollide = false
hitbox.Anchored = true
hitbox.Size = Vector3.new(6, 6, 6) -- hitbox bigger than killerHRP
hitbox.CFrame = killerHRP.CFrame
hitbox.Parent = workspace
hitbox.Touched:Connect(trySlash)
-- AI PATHFINDING USING RAYCASTS + OBSTACLE ESCAPE
local function facePlayer()
local dir = (hrp.Position - killerHRP.Position)
if dir.Magnitude > 1 then
killerHRP.CFrame = CFrame.new(killerHRP.Position, Vector3.new(hrp.Position.X, killerHRP.Position.Y, hrp.Position.Z))
end
end
local function detectObstacle()
local from = killerHRP.Position + Vector3.new(0,2,0)
local to = hrp.Position + Vector3.new(0,2,0)
local params = RaycastParams.new()
params.FilterDescendantsInstances = {killer, char, hitbox}
params.FilterType = Enum.RaycastFilterType.Blacklist
local res = workspace:Raycast(from, to - from, params)
return res
end
local function teleportOutOfObstacle(hitPos, normal)
-- Move the killer 5 studs away from obstacle surface along normal, and slightly upward
local newPos = hitPos + normal * 5 + Vector3.new(0,3,0)
-- Teleport killer smoothly, but not near player
if (newPos - hrp.Position).Magnitude < 15 then
-- If newPos too close to player, move away along killer to player vector
local dir = (killerHRP.Position - hrp.Position).Unit
newPos = killerHRP.Position + dir * 10 + Vector3.new(0,3,0)
end
killerHRP.CFrame = CFrame.new(newPos, Vector3.new(hrp.Position.X, newPos.Y, hrp.Position.Z))
hitbox.CFrame = killerHRP.CFrame
end
-- UPDATE
local killerIsSprinting = false
task.spawn(function()
while true do
task.wait(0.1)
facePlayer()
local obstacle = detectObstacle()
if obstacle then
teleportOutOfObstacle(obstacle.Position, obstacle.Normal)
end
if not killerIsSprinting and killerStam >= killerMaxStam - 0.1 then
killerIsSprinting = true
end
if killerIsSprinting then
killerHum.WalkSpeed = killerSprintSpeed
killerStam = math.max(killerStam - killerDrain * 0.1, 0)
if not killerAnims.Run.IsPlaying then
killerAnims.Walk:Stop()
killerAnims.Run:Play()
end
if killerStam <= 0 then
killerIsSprinting = false
end
else
killerHum.WalkSpeed = killerWalkSpeed
killerStam = math.min(killerStam + killerRecover * 0.1, killerMaxStam)
if not killerAnims.Walk.IsPlaying then
killerAnims.Run:Stop()
killerAnims.Walk:Play()
end
end
-- Move the hitbox with killer
hitbox.CFrame = killerHRP.CFrame
killerHum:MoveTo(hrp.Position)
playerStaminaFill.Size = UDim2.new(playerStam/playerMaxStam,0,1,0)
killerStaminaFill.Size = UDim2.new(killerStam/killerMaxStam,0,1,0)
end
end)
RunService.Heartbeat:Connect(function(dt)
local moving = hrp.Velocity.Magnitude > 1
if isSprinting and playerStam > 0 and moving then
playerStam = math.max(playerStam - playerDrain * dt, 0)
if playerStam == 0 then
isSprinting = false
hum.WalkSpeed = playerWalkSpeed
sprintBtn.Text = "SPRINT"
sprintBtn.BackgroundColor3 = Color3.new(1,0,0)
end
else
playerStam = math.min(playerStam + playerRecover * dt, playerMaxStam)
end
if not moving then
if not playerAnims.Idle.IsPlaying then
playerAnims.Run:Stop(); playerAnims.Walk:Stop(); playerAnims.Idle:Play()
end
elseif isSprinting then
if not playerAnims.Run.IsPlaying then
playerAnims.Idle:Stop(); playerAnims.Walk:Stop(); playerAnims.Run:Play()
end
else
if not playerAnims.Walk.IsPlaying then
playerAnims.Idle:Stop(); playerAnims.Run:Stop(); playerAnims.Walk:Play()
end
end
playerStaminaFill.Size = UDim2.new(playerStam/playerMaxStam,0,1,0)
end)
-- TIMER
local cleanupCalled = false
local function cleanup()
if cleanupCalled then return end
cleanupCalled = true
if player and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
player.Character.HumanoidRootPart.CFrame = originalSpawn
end
Lighting.ClockTime = 14
sound:Stop()
mapModel:Destroy()
killer:Destroy()
hitbox:Destroy()
gui:Destroy()
end
spawn(function()
while countdown >= 0 do
local mm = string.format("%02d", math.floor(countdown / 60))
local ss = string.format("%02d", (countdown % 60))
timerLabel.Text = mm .. ":" .. ss
task.wait(1)
countdown -= 1
end
cleanup()
end)
hum.Died:Connect(cleanup)



honestly works with xeno and I LOVE IT ITS SUPER FUN FOR WHEN YOUR BORED!!
The script of map doesn't working anymore more...