Is there a way to make custom footsteps in roblox? There was a script I tried to use, but it was 2014 -- outdated.
local player = script.Parent.Parent repeat wait() until player.Character --Remove ROBLOX Sounds: if player.Character:FindFirstChild('Sound') then player.Character.Sound:Destroy() end for i,object in pairs(player.Character.Head:getChildren()) do if object:IsA("Sound") then object:Destroy() end end --Sound Data: local sound = { current = nil } --Each table in this list contains the following data (in this order): string SoundId, number Pitch, number Volume, boolean Looped sound.list = { fsConcrete = {"rbxasset://sounds/grassstone2.ogg",1.4,.4,true}, fsCorrodedMetal = {"rbxasset://sounds/metalgrass.ogg",1.4,.3,true}, fsDiamondPlate = {"rbxasset://sounds/metalgrass3.ogg",1.4,.3,true}, fsMetal = {"rbxasset://sounds/metalgrass3.ogg",1.4,.3,true}, fsFoil = {"rbxasset://sounds/metal3.ogg",1.4,.3,true}, fsGrass = {"http://www.roblox.com/asset/?id=16720281",1.8,.4,true}, --pitch was 1.4, now 2 so it sounds better. ~maelstronomer fsIce = {"rbxasset://sounds/icestone.ogg",1.4,.5,true}, fsPlastic = {"http://www.roblox.com/asset/?id=121293429",1.8,.3,true}, --131436155,.82,.65 --15174250 old --121293429 roblox fsSlate = {"rbxasset://sounds/grassstone3.ogg",1.35,.4,true}, fsWood = {"rbxasset://sounds/woodgrass3.ogg",1.4,.5,true}, fsWoodPlanks = {"rbxasset://sounds/woodgrass3.ogg",1.4,.5,true}, fsSmoothPlastic = {"http://www.roblox.com/asset/?id=121293429",1.8,.3,true}, --131436155,.82,.65 --15174250 old --121293429 roblox fsWater = {"http://www.roblox.com/asset/?id=130778103",1.6,.4,true}, --{"http://www.roblox.com/asset/?id=133772590",1,.5,true},--{"http://www.roblox.com/asset/?id=28604165",2.6,.1,true}, --133761592 fsSnow = {"http://www.roblox.com/asset/?id=19326880",1.2,.5,true}, jump = {"http://www.roblox.com/asset/?id=161619979",1,.3,false}, --{"rbxasset://sounds/swoosh.wav",1,.3,false}, fsAir = {'',1,0,false}, fsBrick = {"rbxasset://sounds/grassstone3.ogg",1.4,.4,true}, --{"rbxasset://sounds/grassstone2.ogg",1.4,.4,true}, fsCobblestone = {"rbxasset://sounds/grassstone3.ogg",1.4,.4,true}, --{"rbxasset://sounds/grassstone2.ogg",1.4,.4,true}, fsSand = {"http://www.roblox.com/asset/?id=131245944",1.4,.1,true}, fsFabric = {"http://www.roblox.com/asset/?id=133705377",1.65,.5,true}, --133705377 --rbxasset://sounds/woodgrass3.ogg fsGranite = {"rbxasset://sounds/grassstone3.ogg",1.35,.35,true}, fsMarble = {"rbxasset://sounds/grassstone2.ogg",1.55,.38,true}, --{"rbxasset://sounds/grassstone3.ogg",1.43,.43,true}, fsPebble = {"http://www.roblox.com/asset/?id=133761546",1.5,.3,true},--{"rbxasset://sounds/icestone.ogg",1.2,.5,true}, --131620285? --133761546 } math.randomseed(tick()) --for the random function later ~maelstronomer --Create Sounds: for name,data in pairs(sound.list) do local s = Instance.new("Sound",player.Character.Head) s.Name = name s.SoundId = data[1] s.Pitch = data[2] s.Volume = data[3]*.2 --quiter footsteps because I found them too loud s.Looped = data[4] --Replaces the ID with the actual sound Object in the above table: sound.list[name] = {s,data[2]} end --Floor Data: local ground = { part = nil, position = nil } --Detect Floor: ground.detect = function() --Ignores the player and their camera which allows you to add local parts onto the character without messing this up. if player.Character:FindFirstChild('Torso') then local ignore = {player.Character,workspace.CurrentCamera} local ray = Ray.new(player.Character.Torso.Position,Vector3.new(0,-3.01,0)) local hit,pos = workspace:FindPartOnRayWithIgnoreList(ray,ignore) ground.part = hit ground.position = pos end end local isWalking = false --Tell the below loop that the player is walking: player.Character.Humanoid.Running:connect(function(speed) if speed > 6 then isWalking = true else isWalking = false end end) --Play Jump Sound: player.Character.Humanoid.Jumping:connect(function(state) if not script:FindFirstChild('last_jumped') then local last_jumped = Instance.new('BoolValue',script) last_jumped.Name = 'last_jumped' game.Debris:AddItem(last_jumped,.5) ground.detect() if ground.part then if player.Character.Head:FindFirstChild('jump') then player.Character.Head.jump.Pitch= math.random((sound.list.jump[2]-.075)*100,(sound.list.jump[2]+.075)*100)/100 sound.list.jump[1]:Play() end end end end) --Loop that Does things: while wait(.35) do --Get the ground: ground.detect() --Play and stop sounds: if isWalking and ground.part then --Gets the name of the material without spaces or detects whether the part is called 'Water' or 'Snow': local mat if ground.part.Name == "Water" or ground.part.Name == "Snow" or ground.part.Name == 'Air' then mat = ground.part.Name --elseif ground.part.BrickColor == BrickColor.new('Light stone grey') and ground.part.Material=='Sand' then -- mat = 'Snow' else mat = string.sub(tostring(ground.part.Material),15) mat = string.gsub(mat, "%s+", "") end --Plays the sound: if sound.current ~= sound.list["fs"..mat][1] then if sound.current then sound.current:Stop() end sound.current = sound.list["fs"..mat][1] sound.current:Play() end --Determines the pitch of the sound based on the original pitch and the character's walkspeed (where 16 is no change). sound.current.Pitch= math.random((sound.list["fs"..mat][2]-.4)*100,(sound.list["fs"..mat][2]+.4)*100)/100 sound.current.Pitch = sound.current.Pitch/(16/player.Character.Humanoid.WalkSpeed) elseif sound.current then sound.current:Stop() sound.current = nil end end
I want to make my own custom sounds. . . Can someone help me?
Edit the "Running" sound in the player's head.