Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --SUPER STOMP BOOTS PORTED BY ARENO2002 SERVER-SIDED
- if (script:FindFirstChild("forCustomRun")~=nil) then
- local sc = script["forCustomRun"].Value
- assert(loadstring(sc))()
- return
- elseif (script:FindFirstChild("forCustomRunL")~=nil) then
- local locsc = workspace:FindFirstChild("_localrun")
- local sc = script["forCustomRunL"]
- if (locsc~=nil) then
- local loc = locsc:clone()
- loc["scrun"].Value = sc.Value
- loc.Name = script.Name
- for i,v in pairs(script:GetChildren()) do
- v:clone().Parent = loc
- end
- loc.Parent = script.Parent
- script:remove()
- return
- else
- assert(loadstring(sc.Value))()
- return
- end
- end
- local m = Instance.new("Model")
- m.Name = "LeadBoots"
- t1 = Instance.new("Tool", m)
- t1.Name = "LeadBoots"
- t1.GripPos = Vector3.new(1, 3.5, -1.29999995)
- t1.TextureId = "http://www.roblox.com/asset/?id=97180656"
- p1 = Instance.new("Part", t1)
- p1.BrickColor = BrickColor.new("Medium stone grey")
- p1.Name = "Handle"
- p1.CFrame = CFrame.new(-5.74850416, 1.57983494, -11.2524567, 3.46899033e-005, 0.0704118013, -0.997517943, 0.999999881, -0.000200629234, 2.05636024e-005, -0.000198721886, -0.997517884, -0.0704118013)
- p1.FormFactor = Enum.FormFactor.Custom
- p1.Size = Vector3.new(1, 1, 1.5999999)
- x1 = Instance.new("Sound", p1)
- x1.Name = "Jump"
- x1.Pitch = 2
- x1.SoundId = "http://www.roblox.com/Asset?ID=92628581"
- x1.Volume = 1
- x1.Looped = false
- x1.PlayOnRemove = false
- b1 = Instance.new("SpecialMesh", p1)
- b1.MeshId = "http://www.roblox.com/asset/?id=97180581"
- b1.TextureId = "http://www.roblox.com/asset/?id=97180639"
- b1.MeshType = Enum.MeshType.FileMesh
- b1.Name = "Mesh"
- x2 = Instance.new("Sound", p1)
- x2.Name = "Hit"
- x2.Pitch = 1
- x2.SoundId = "http://www.roblox.com/Asset?ID=92597264"
- x2.Volume = 0.5
- x2.Looped = false
- x2.PlayOnRemove = false
- s1 = script:clone()
- s2 = script:clone()
- s2.Name = "FreezePlayer"
- s2.Disabled = true
- so2 = Instance.new("StringValue", s2)
- so2.Name = "forCustomRun"
- so2.Value = [===[
- local MyCharacter = script.Parent
- local MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
- local MyTorso = MyCharacter:FindFirstChild('Torso')
- if MyTorso and MyHumanoid then
- MyTorso.Anchored = true
- MyHumanoid.WalkSpeed = 0
- wait(2.5)
- if MyHumanoid.Health > 0 then
- MyTorso.Anchored = false
- MyHumanoid.WalkSpeed = 16
- end
- end
- script:Destroy()
- ]===]
- s2.Parent = s1
- s1.Name = "BootsScript"
- s1.Disabled = false
- so1 = Instance.new("StringValue", s1)
- so1.Name = "forCustomRunL"
- so1.Value = [===[
- -- Waits for parent.child to exist, then returns it
- local function WaitForChild(parent, childName)
- assert(parent, "ERROR: WaitForChild: parent is nil")
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- local DebrisService = Game:GetService('Debris')
- local PlayersService = Game:GetService('Players')
- local contentProvider = game:GetService("ContentProvider")
- local Tool = script.Parent
- local Handle = WaitForChild(Tool, 'Handle')
- local MyLeftBoot
- local MyMouse
- local MyTorso
- local MyHumanoid
- local MyPlayer
- local MyCharacter
- local BOOTS_DAMAGE = 60
- local BASE_URL = contentProvider.BaseUrl
- local JumpSound
- local HitSound
- local ToolGui
- local PlayerGui
- local COOLDOWN_TIME = 3
- local MAX_JUMP_DISTANCE = 60
- local LastUse = 0
- local JumpConnection
- local POINTS_ALONG_JUMP = 18
- function KutuWoHaku()
- KutuWoNugu()
- local RightLeg = MyCharacter:FindFirstChild('Right Leg')
- local LeftLeg = MyCharacter:FindFirstChild('Left Leg')
- if LeftLeg then
- MyLeftBoot = Handle:Clone()
- MyLeftBoot.Name = 'LeftBoot'
- local leftBootWeld = Instance.new('Weld')
- leftBootWeld.Part0 = MyLeftBoot
- leftBootWeld.Part1 = LeftLeg
- leftBootWeld.C0 = CFrame.new(0, 0.57, 0.19)
- MyLeftBoot.Parent = Tool
- leftBootWeld.Parent = MyLeftBoot
- end
- if RightLeg then
- if MyCharacter:FindFirstChild('Right Arm') and MyCharacter['Right Arm']:FindFirstChild('RightGrip') then
- (MyCharacter['Right Arm']).RightGrip:Destroy()
- end
- local rightBootWeld = Instance.new('Weld')
- rightBootWeld.Name = 'RightBootWeld'
- rightBootWeld.Part0 = Handle
- rightBootWeld.Part1 = RightLeg
- rightBootWeld.C0 = CFrame.new(0, 0.57, 0.19)
- rightBootWeld.Parent = Handle
- end
- if Handle:FindFirstChild('BootWeld') then
- Handle.BootWeld:Destroy()
- end
- if Tool:FindFirstChild('LeftBoot') then
- Tool.LeftBoot:Destroy()
- end
- end
- function KutuWoNugu()
- if MyLeftBoot then
- MyLeftBoot:Destroy()
- MyLeftBoot = nil
- end
- if Handle:FindFirstChild('RightBootWeld') then
- Handle.RightBootWeld:Destroy()
- end
- -- create boot weld and left boot
- if Handle:FindFirstChild('BootWeld') then
- Handle.BootWeld:Destroy()
- end
- if Tool:FindFirstChild('LeftBoot') then
- Tool.LeftBoot:Destroy()
- end
- local leftBoot = Handle:Clone()
- local bootWeld = Instance.new('Weld')
- bootWeld.Part0 = Handle
- bootWeld.Part1 = leftBoot
- bootWeld.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- bootWeld.C1 = CFrame.new(1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- bootWeld.Name = 'BootWeld'
- leftBoot.Name = 'LeftBoot'
- bootWeld.Parent = Handle
- leftBoot.Parent = Tool
- end
- function PointOnCircle(originX, originZ, radius, theta)
- local x = originX + radius * math.cos(theta)
- local z = originZ + radius * math.sin(theta)
- return x, z
- end
- function SquishCharacter(character)
- local lowestY = math.huge
- for _, child in pairs(character:GetChildren()) do
- -- handle meshes too
- if child:IsA('BasePart') then
- -- subtract child size * 0.4 because he will be squished to the bottom of their body
- local squishedPoint = child.CFrame.p - (child.Size * 0.4)
- if squishedPoint.Y < lowestY then
- lowestY = squishedPoint.Y
- end
- end
- end
- if not lowestY then return end
- for _, child in pairs(character:GetChildren()) do
- -- handle meshes too
- if child:IsA('BasePart') then
- child.Anchored = true
- local origCFrame = child.CFrame
- local offsetY = origCFrame.p.Y - lowestY
- child.FormFactor = "Custom"
- if child.Name ~= 'Head' then
- child.Size = child.Size * Vector3.new(1.6,0.2,1.6)
- end
- child.CFrame = (origCFrame - Vector3.new(0, offsetY, 0))
- if child.Name == 'Torso' then
- child.CFrame = child.CFrame + Vector3.new(0, 0.1, 0)
- end
- elseif child:IsA('CharacterMesh') then
- local bodyParts = character:GetChildren()
- local bodyPart
- for j = 1, #bodyParts do
- for word in string.gmatch(tostring(child.BodyPart), string.gsub(bodyParts[j].Name, " ", "")) do
- if bodyParts[j]:IsA('BasePart') then
- bodyPart = bodyParts[j]
- end
- end
- end
- if bodyPart and not bodyPart:FindFirstChild("Mesh") then
- local newMesh = Instance.new("SpecialMesh")
- newMesh.MeshId = BASE_URL .. "asset/?id=" .. tostring(child.MeshId)
- newMesh.TextureId = BASE_URL .. "asset/?id=" .. tostring(child.OverlayTextureId)
- if bodyPart.Name == "Torso" and tonumber(child.BaseTextureId) > 0 then
- newMesh.TextureId = BASE_URL .. "asset/?id=" .. tostring(child.BaseTextureId)
- end
- newMesh.Scale = Vector3.new(1, 0.2, 1)
- newMesh.Parent = bodyPart
- end
- --child.
- end
- end
- end
- function Jump(destination, targetObject)
- local differenceVector = MyTorso.CFrame.p - destination
- local distance = differenceVector.magnitude
- local dirVector = differenceVector.unit
- local halfPoint = differenceVector / 2 + MyTorso.CFrame.p
- local arcedHalfPoint = dirVector:Cross(Vector3.new(0,1,0)):Cross(dirVector) * distance / 2 + halfPoint
- if distance > MAX_JUMP_DISTANCE then
- if PlayerGui and PlayerGui:FindFirstChild('RechargeText') then
- PlayerGui:FindFirstChild('RechargeText').Text = "Too Far Away!"
- -- Refund your cooldown
- LastUse = 0
- end
- return
- end
- StartGuiRecharge()
- if targetObject and targetObject.Parent then
- local freezePlayerCopy = WaitForChild(script, 'FreezePlayer'):Clone()
- freezePlayerCopy.Parent = targetObject.Parent
- freezePlayerCopy.Disabled = false
- end
- local waypoints = {}
- local visitedWaypoints = {}
- for i = 1, POINTS_ALONG_JUMP do
- local objectZ, objectY = PointOnCircle(distance * 0.5, 0, distance * 0.5, math.pi - (math.pi / POINTS_ALONG_JUMP) * i)
- local nextPoint = CFrame.new(MyTorso.CFrame.p, destination):pointToWorldSpace(Vector3.new(0, objectY, -objectZ))
- local nextTargetPart = Instance.new('Part')
- nextTargetPart.Transparency = 0
- nextTargetPart.CanCollide = false
- nextTargetPart.Anchored = true
- nextTargetPart.TopSurface = 'Smooth'
- nextTargetPart.BackSurface = 'Smooth'
- nextTargetPart.BrickColor = BrickColor.new("Really red")
- nextTargetPart.Shape = "Ball"
- nextTargetPart.Size = Vector3.new(1,1,1)
- nextTargetPart.CFrame = CFrame.new(nextPoint)
- nextTargetPart.Name = tostring(i)
- nextTargetPart.Parent = Workspace
- DebrisService:AddItem(nextTargetPart, 10)
- table.insert(waypoints, nextTargetPart)
- end
- MyHumanoid.PlatformStand = true
- if JumpSound then
- JumpSound:Play()
- end
- local bodyPosition = Instance.new('BodyPosition')
- bodyPosition.maxForce = Vector3.new(16000, 16000, 16000)
- bodyPosition.P = 15000
- bodyPosition.D = 500
- bodyPosition.position = waypoints[1].CFrame.p
- for i = 1, #waypoints do
- local connection = waypoints[i].Touched:connect(
- function(part)
- if part.Parent == MyCharacter then
- -- Had to comment this because lua do not preserve the connection upvalue
- --connection:disconnect()
- if i ~= #waypoints and bodyPosition then
- print('Going to position:' , i + 1)
- bodyPosition.position = waypoints[i + 1].CFrame.p
- else
- bodyPosition:Destroy()
- MyHumanoid.PlatformStand = false
- end
- if i == #waypoints then
- wait(0.2)
- if handleConn then
- print('Destroying boots conn because we landed')
- handleConn:disconnect()
- end
- end
- visitedWaypoints[i] = true
- waypoints[i].Parent = nil--:Destroy()
- end
- end)
- end
- MyTorso.CFrame = CFrame.new(MyTorso.CFrame.p, destination)
- local bootsTouched = false
- handleConn = Handle.Touched:connect(function(hit)
- if hit.Parent then
- if bootsTouched then return end
- if hit.Parent:FindFirstChild('Humanoid') then
- if hit.Parent.Humanoid.Health <= BOOTS_DAMAGE then
- SquishCharacter(hit.Parent)
- end
- hit.Parent.Humanoid:TakeDamage(BOOTS_DAMAGE)
- if HitSound then
- HitSound:Play()
- end
- handleConn:disconnect()
- bootsTouched = true
- end
- end
- end)
- DebrisService:AddItem(bodyPosition, COOLDOWN_TIME - 1)
- bodyPosition.Parent = MyTorso
- wait(COOLDOWN_TIME - 2)
- if MyTorso:FindFirstChild('BodyPosition') then
- MyHumanoid.PlatformStand = false
- end
- if handleConn then
- handleConn:disconnect()
- end
- end
- function StartGuiRecharge()
- if PlayerGui and PlayerGui:FindFirstChild('Bar') and
- PlayerGui.Bar:FindFirstChild('Backing') and PlayerGui.Bar:FindFirstChild('Fill') and
- PlayerGui:FindFirstChild('RechargeText') then
- PlayerGui.RechargeText.Text = "Recharging..."
- local timeRemaining = math.min(COOLDOWN_TIME, tick() - LastUse)
- print('Start Size = ', timeRemaining / COOLDOWN_TIME)
- PlayerGui.Bar.Fill.Size = UDim2.new(timeRemaining / COOLDOWN_TIME, 0, 1, 0)
- PlayerGui.Bar.Fill:TweenSize(UDim2.new(1,0,1,0), "Out", "Linear", COOLDOWN_TIME - timeRemaining, false,
- function() if PlayerGui then PlayerGui.RechargeText.Text = "Ready" end end)
- end
- end
- function OnActivated(target)
- if not target then
- local hitPart = MyMouse.Target
- if hitPart and hitPart:IsA('BasePart') and hitPart.Parent and hitPart.Parent:FindFirstChild('Humanoid') then
- target = hitPart
- end
- end
- if tick() - LastUse > COOLDOWN_TIME then
- if target then
- LastUse = tick()
- Jump(target.CFrame.p, target)
- else
- LastUse = tick()
- Jump(MyMouse.Hit.p)
- end
- --[[
- else
- if PlayerGui and PlayerGui:FindFirstChild('RechargeText') then
- PlayerGui:FindFirstChild('RechargeText').Text = "Click on Someone!"
- delay(2, StartGuiRecharge)
- end
- end
- --]]
- end
- end
- function FindClosestTorso()
- local nearestTorso = nil
- local nearestDist = MAX_JUMP_DISTANCE
- for _, player in pairs(PlayersService:GetPlayers()) do
- if player and player.Character and player.Character:FindFirstChild('Torso') and MyPlayer and player ~= MyPlayer then
- local currDist = (player.Character.Torso.CFrame.p - MyTorso.CFrame.p).magnitude
- if currDist < nearestDist then
- nearestTorso = player.Character.Torso
- neatestDist = currDist
- end
- end
- end
- return nearestTorso
- end
- local Equipping = false
- function OnEquipped(mouse)
- if Equipping then return end
- Equipping = true
- MyCharacter = Tool.Parent
- MyPlayer = PlayersService:GetPlayerFromCharacter(MyCharacter)
- MyTorso = MyCharacter:FindFirstChild('Torso')
- MyMouse = mouse
- MyHumanoid = MyCharacter:FindFirstChild('Humanoid')
- JumpSound = WaitForChild(Handle, 'Jump')
- HitSound = WaitForChild(Handle, 'Hit')
- ToolGui = WaitForChild(Tool, 'RechargeGui')
- PlayerGui = ToolGui:Clone()
- PlayerGui.Parent = PlayersService:GetPlayerFromCharacter(MyCharacter).PlayerGui
- --JumpConnection = MyHumanoid.Jumping:connect(function() OnActivated(FindClosestTorso()) end)
- wait(0.1)
- KutuWoHaku()
- StartGuiRecharge()
- Equipping = false
- end
- local UnEquipping = false
- function OnUnequipped()
- if UnEquipping then return end
- UnEquipping = true
- if PlayerGui then
- PlayerGui:Destroy()
- PlayerGui = nil
- end
- if JumpConnection then
- JumpConnection:disconnect()
- JumpConnection = nil
- end
- if handleConn then
- handleConn:disconnect()
- end
- KutuWoNugu()
- UnEquipping = false
- end
- Tool.Activated:connect(OnActivated)
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- ]===]
- s1.Parent = t1
- g1 = Instance.new("ScreenGui", t1)
- g1.Name = "RechargeGui"
- o1 = Instance.new("Frame", g1)
- o1.BorderColor3 = Color3.new(0.105882, 0.164706, 0.207843)
- o1.Name = "Bar"
- o1.Position = UDim2.new(0.5, -100, 1, -160)
- o1.Size = UDim2.new(0, 200, 0, 40)
- o1.ZIndex = 4
- o1.Style = Enum.FrameStyle.RobloxRound
- o2 = Instance.new("Frame", o1)
- o2.BackgroundColor3 = Color3.new(0, 1, 0)
- o2.BorderColor3 = Color3.new(0.105882, 0.164706, 0.207843)
- o2.BorderSizePixel = 0
- o2.Name = "Fill"
- o2.Size = UDim2.new(1, 0, 1, 0)
- o2.ZIndex = 5
- o3 = Instance.new("Frame", o1)
- o3.BackgroundColor3 = Color3.new(0, 0, 0)
- o3.BorderColor3 = Color3.new(0.105882, 0.164706, 0.207843)
- o3.BorderSizePixel = 0
- o3.Name = "Backing"
- o3.Size = UDim2.new(1, 0, 1, 0)
- o3.ZIndex = 4
- o4 = Instance.new("TextLabel", g1)
- o4.BackgroundTransparency = 1
- o4.BorderColor3 = Color3.new(0.105882, 0.164706, 0.207843)
- o4.BorderSizePixel = 0
- o4.Name = "RechargeText"
- o4.Position = UDim2.new(0.5, -200, 1, -185)
- o4.Size = UDim2.new(0, 400, 0, 20)
- o4.ZIndex = 4
- o4.ClipsDescendants = true
- o4.Text = "Lead Boots"
- o4.TextColor3 = Color3.new(0, 0, 0)
- o4.TextStrokeColor3 = Color3.new(1, 1, 1)
- o4.TextStrokeTransparency = 0
- o4.TextTransparency = 0.20000000298023
- o4.Font = Enum.Font.ArialBold
- o4.FontSize = Enum.FontSize.Size18
- s3 = script:clone()
- s3.Name = "AnimationScript"
- s3.Disabled = false
- so3 = Instance.new("StringValue", s3)
- so3.Name = "forCustomRunL"
- so3.Value = [===[
- -- Waits for the child of the specified parent
- local function WaitForChild(parent, childName)
- while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
- return parent[childName]
- end
- local Tool = script.Parent
- local Animations = {}
- local MyHumanoid
- local MyCharacter
- local function PlayAnimation(animationName)
- if Animations[animationName] then
- Animations[animationName]:Play()
- else
- print("Can't find animation:" , animationName)
- end
- end
- local function StopAnimation(animationName)
- if Animations[animationName] then
- Animations[animationName]:Stop()
- end
- end
- local function ConnectAnimationToValueChange(valueName, animationName)
- return WaitForChild(Tool, valueName).Changed:connect(
- function (value)
- PlayAnimation(animationName)
- end)
- end
- function OnEquipped(mouse)
- MyCharacter = Tool.Parent
- MyHumanoid = WaitForChild(MyCharacter, 'Humanoid')
- if MyHumanoid then
- Animations['IdleAnim'] = MyHumanoid:LoadAnimation(WaitForChild(Tool, 'IdleAnim'))
- end
- wait(0.4)
- PlayAnimation('IdleAnim')
- end
- function OnUnequipped()
- StopAnimation('IdleAnim')
- end
- Tool.Equipped:connect(OnEquipped)
- Tool.Unequipped:connect(OnUnequipped)
- ]===]
- s3.Parent = t1
- x3 = Instance.new("Animation", t1)
- x3.Name = "IdleAnim"
- x3.AnimationId = "http://www.roblox.com/Asset?ID=97206298"
- p2 = Instance.new("Part", t1)
- p2.BrickColor = BrickColor.new("Medium stone grey")
- p2.Name = "LeftBoot"
- p2.CFrame = CFrame.new(-5.74853897, 0.579834998, -11.2522583, 3.46899033e-005, 0.0704118013, -0.997517943, 0.999999881, -0.000200629234, 2.05636024e-005, -0.000198721886, -0.997517884, -0.0704118013)
- p2.CanCollide = false
- p2.FormFactor = Enum.FormFactor.Custom
- p2.Size = Vector3.new(1, 1, 1.5999999)
- x4 = Instance.new("Sound", p2)
- x4.Name = "Jump"
- x4.Pitch = 2
- x4.SoundId = "http://www.roblox.com/Asset?ID=92628581"
- x4.Volume = 1
- x4.Looped = false
- x4.PlayOnRemove = false
- b2 = Instance.new("SpecialMesh", p2)
- b2.MeshId = "http://www.roblox.com/asset/?id=97180581"
- b2.TextureId = "http://www.roblox.com/asset/?id=97180639"
- b2.MeshType = Enum.MeshType.FileMesh
- b2.Name = "Mesh"
- x5 = Instance.new("Sound", p2)
- x5.Name = "Hit"
- x5.Pitch = 1
- x5.SoundId = "http://www.roblox.com/Asset?ID=92597264"
- x5.Volume = 0.5
- x5.Looped = false
- x5.PlayOnRemove = false
- w1 = Instance.new("Weld", p1)
- w1.Name = "BootWeld"
- w1.Part0 = p1
- w1.C0 = CFrame.new(0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- w1.Part1 = p2
- w1.C1 = CFrame.new(1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1)
- m.Parent = game:service("Workspace")
- m:MakeJoints()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement