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)