Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- This script was decompiled with Critmel
- -- Critmel b1 by UnVenom
- local hum = script.Parent:WaitForChild("Humanoid")
- local humRtPt = script.Parent:WaitForChild("HumanoidRootPart")
- local Leg_L = script.parent:WaitForChild("Left Leg")
- local Leg_R = script.parent:WaitForChild("Right Leg")
- local animIDs = game.ReplicatedStorage:WaitForChild("AnimIDs")
- local mainClientScript = game.Players.LocalPlayer:WaitForChild("PlayerScripts"):WaitForChild("CL_MAIN_GameScript")
- local isLowPerformance = false
- spawn(function()
- while true do
- isLowPerformance = mainClientScript.isLowPerformance:Invoke()
- wait(1)
- end
- end)
- local wallAnim = Instance.new("Animation")
- wallAnim.AnimationId = "rbxassetid://" .. animIDs.WallHang.Value
- local anim = hum:LoadAnimation(wallAnim)
- local lastJump = tick()
- local onWall
- hum.Touched:connect(function()
- local notSwimming = hum:GetStateEnabled(Enum.HumanoidStateType.Jumping)
- local state = hum:GetState()
- if notSwimming and (state == Enum.HumanoidStateType.Jumping or state == Enum.HumanoidStateType.Freefall) then
- local ray = Ray.new(humRtPt.Position, (humRtPt.Position + humRtPt.CFrame.lookVector - humRtPt.Position).unit * 2.5)
- local part, pos, normal = workspace:FindPartOnRay(ray, script.Parent)
- if part and part:FindFirstChild("_Wall") and tick() > lastJump + 0.1 then
- do
- local landSnd = Instance.new("Sound")
- landSnd.SoundId = "rbxassetid://1527502984"
- landSnd.Volume = 1
- landSnd.Parent = game.Players.LocalPlayer
- landSnd:Play()
- game:GetService("Debris"):AddItem(landSnd, 1)
- humRtPt.Anchored = true
- humRtPt.CFrame = CFrame.new(humRtPt.Position, humRtPt.Position + normal)
- anim:Play()
- local begin = tick()
- local jumped
- spawn(function()
- game:GetService("UserInputService").JumpRequest:wait()
- if begin < tick() + 0.75 then
- jumped = true
- end
- end)
- repeat
- wait()
- until jumped or tick() > begin + 0.75
- anim:Stop()
- humRtPt.Anchored = false
- if jumped then
- humRtPt.Velocity = Vector3.new(normal.X * 50, 50 + normal.Y * 50, normal.Z * 50)
- local jumpSnd = Instance.new("Sound")
- jumpSnd.SoundId = "rbxassetid://1527481141"
- jumpSnd.Volume = 1
- jumpSnd.Parent = game.Players.LocalPlayer
- jumpSnd:Play()
- game:GetService("Debris"):AddItem(jumpSnd, 1)
- else
- humRtPt.Velocity = Vector3.new()
- end
- lastJump = tick()
- end
- end
- end
- end)
- hum.Jumping:connect(function(isJumping)
- if isJumping then
- humRtPt.Velocity = Vector3.new(humRtPt.Velocity.X, hum.JumpPower * 1.1, humRtPt.Velocity.Z)
- end
- end)
- local newShadowsEnabled = true
- local ignoreList = {
- script.Parent
- }
- function createShadow()
- local newSh = Instance.new("Part")
- newSh.Size = Vector3.new(4, 0.05, 4)
- newSh.Transparency = 1
- newSh.CanCollide = false
- newSh.Anchored = true
- newSh.Material = Enum.Material.Concrete
- newSh.Name = "ShadowPt"
- local decal = Instance.new("Decal")
- decal.Texture = "rbxassetid://1057492965"
- decal.Face = "Top"
- decal.Name = "ShadowImg"
- decal.Transparency = 0.5
- decal.Parent = newSh
- return newSh
- end
- if newShadowsEnabled then
- shadowL = workspace.CurrentCamera:FindFirstChild("ShadowL")
- shadowR = workspace.CurrentCamera:FindFirstChild("ShadowR")
- if not shadowL and not shadowR then
- shadowL = createShadow()
- shadowR = createShadow()
- shadowL.Parent = workspace.CurrentCamera
- shadowR.Parent = workspace.CurrentCamera
- else
- shadowL.ShadowImg.Transparency = 0.5
- shadowR.ShadowImg.Transparency = 0.5
- end
- hum.Died:connect(function()
- if shadowL and shadowR then
- shadowL:Destroy()
- shadowR:Destroy()
- end
- end)
- table.insert(ignoreList, shadowL)
- table.insert(ignoreList, shadowR)
- else
- shadow = workspace.CurrentCamera:FindFirstChild("ShadowPt")
- if not shadow then
- shadow = createShadow()
- shadow.Parent = workspace.CurrentCamera
- else
- shadow.ShadowImg.Transparency = 0.5
- end
- hum.Died:connect(function()
- if shadow then
- shadow.ShadowImg.Transparency = 1
- end
- end)
- table.insert(ignoreList, shadow)
- end
- workspace.ChildAdded:connect(function(item)
- if game.Players:FindFirstChild(item.Name) then
- table.insert(ignoreList, item)
- end
- end)
- for _, c in pairs(game.Players:GetPlayers()) do
- if c.Character then
- table.insert(ignoreList, c.Character)
- end
- end
- while game:GetService("RunService").Heartbeat:wait() do
- if newShadowsEnabled then
- if shadowL and shadowR and shadowL.Parent ~= nil and shadowR.Parent ~= nil then
- if isLowPerformance then
- shadowL.ShadowImg.Transparency = 1
- shadowR.ShadowImg.Transparency = 1
- else
- shadowL.ShadowImg.Transparency = 0.6
- local ray = Ray.new(Leg_L.Position, Vector3.new(0, -300, 0))
- local ignore = {
- shadowL,
- shadowR,
- script.Parent
- }
- local part, pos, normal = workspace:FindPartOnRayWithIgnoreList(ray, ignore)
- if pos then
- shadowL.CFrame = CFrame.new(pos)
- end
- shadowR.ShadowImg.Transparency = 0.6
- local ray = Ray.new(Leg_R.Position, Vector3.new(0, -300, 0))
- local ignore = {
- shadowL,
- shadowR,
- script.Parent
- }
- local part, pos, normal = workspace:FindPartOnRayWithIgnoreList(ray, ignore)
- if pos then
- shadowR.CFrame = CFrame.new(pos)
- end
- end
- end
- elseif isLowPerformance then
- shadow.ShadowImg.Transparency = 1
- else
- shadow.ShadowImg.Transparency = 0.5
- local ray = Ray.new(humRtPt.Position, Vector3.new(0, -300, 0))
- local ignore = {
- shadow,
- script.Parent
- }
- local part, pos, normal = workspace:FindPartOnRayWithIgnoreList(ray, ignore)
- if pos then
- shadow.CFrame = CFrame.new(pos)
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement