Hello, I'm new to Robox Studio and trying the very first thing didn't work. I took the sword from "ROBLOX Sets", "Weapons" and dropped it on the map. Then hit "Play" and picked up the sword. That worked, but then when I click the mouse button to swing it I hear the sound but he doesn't swing the sword. I must be missing something obvious, what am I doing wrong? Thanks for any help.
That's weird. Try browsing through freemodels to find a sword that actually works. What you can also do is:
Click on the sword that you inserted in Roblox studio. Find it on the explorer on the right side of your screen. Then, drag it into StarterPack. Now, you will spawn with it each time and it should work. If it still doesn't work, try looking for another sword.
Just to answer my own question, it turns out this sword doesn't work with the R15 Avatar Type. I had to set the game to only allow R6 avatar type, and now the sword animation works.
Here's the working script for this problem, i had the same thing >.>
r = game:service("RunService")
local damage = 5
local slash_damage = 4 local lunge_damage = 12
sword = script.Parent.Handle Tool = script.Parent
local SlashSound = Instance.new("Sound") SlashSound.SoundId = "rbxasset://sounds\swordslash.wav" SlashSound.Parent = sword SlashSound.Volume = .7
local LungeSound = Instance.new("Sound") LungeSound.SoundId = "rbxasset://sounds\swordlunge.wav" LungeSound.Parent = sword LungeSound.Volume = .6
local UnsheathSound = Instance.new("Sound") UnsheathSound.SoundId = "rbxasset://sounds\unsheath.wav" UnsheathSound.Parent = sword UnsheathSound.Volume = 1
function blow(hit) local humanoid = hit.Parent:findFirstChild("Humanoid") local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character if humanoid~=nil and humanoid ~= hum and hum ~= nil then -- final check, make sure sword is in-hand
local right_arm = vCharacter:FindFirstChild("Right Arm") if (right_arm ~= nil) then local joint = right_arm:FindFirstChild("RightGrip") if (joint ~= nil and (joint.Part0 == sword or joint.Part1 == sword)) then tagHumanoid(humanoid, vPlayer) humanoid:TakeDamage(damage) wait(1) untagHumanoid(humanoid) end end end
end
function tagHumanoid(humanoid, player) local creator_tag = Instance.new("ObjectValue") creator_tag.Value = player creator_tag.Name = "creator" creator_tag.Parent = humanoid end
function untagHumanoid(humanoid) if humanoid ~= nil then local tag = humanoid:findFirstChild("creator") if tag ~= nil then tag.Parent = nil end end end
function attack() damage = slash_damage SlashSound:play() local anim = Instance.new("StringValue") anim.Name = "toolanim" anim.Value = "Slash" anim.Parent = Tool end
function lunge() damage = lunge_damage
LungeSound:play() local anim = Instance.new("StringValue") anim.Name = "toolanim" anim.Value = "Lunge" anim.Parent = Tool force = Instance.new("BodyVelocity") force.velocity = Vector3.new(0,10,0) --Tool.Parent.Torso.CFrame.lookVector * 80 force.Parent = Tool.Parent.Torso wait(.1) swordOut() wait(.1) force.Parent = nil wait(.2) swordUp() damage = slash_damage
end
function swordUp() Tool.GripForward = Vector3.new(-1,0,0) Tool.GripRight = Vector3.new(0,1,0) Tool.GripUp = Vector3.new(0,0,1) end
function swordOut() Tool.GripForward = Vector3.new(0,0,1) Tool.GripRight = Vector3.new(0,-1,0) Tool.GripUp = Vector3.new(-1,0,0) end
function swordAcross() -- parry end
Tool.Enabled = true local last_attack = 0 function onActivated()
if not Tool.Enabled then return end Tool.Enabled = false local character = Tool.Parent; local humanoid = character.Humanoid if humanoid == nil then print("Humanoid not found") return end t = r.Stepped:wait() if (t - last_attack < .2) then lunge() else attack() end last_attack = t --wait(.5) Tool.Enabled = true
end
function onEquipped() UnsheathSound:play() end
script.Parent.Activated:connect(onActivated) script.Parent.Equipped:connect(onEquipped)
connection = sword.Touched:connect(blow)