Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do i fix the wield of a tool?

Asked by
G0ZZEN 17
4 years ago

I recently wanted to add some swords to my game and i have come across this issue:

https://gyazo.com/e52392c16e4aed4f8f2dd5f863ac945d

Do i have to just change the rotation of the tool?

Here's my current sword script:



r = game:service("RunService") local damage = 7 local slash_damage = 12 local lunge_damage = 31 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) if (hit.Parent == nil) then return end local humanoid = hit.Parent:findFirstChild("Humanoid") local vCharacter = Tool.Parent local vPlayer = game.Players:playerFromCharacter(vCharacter) local hum = vCharacter:findFirstChild("Humanoid") if humanoid and humanoid ~= hum and hum then -- final check, make sure sword is in-hand local guygettingsliced = game.Players:GetPlayerFromCharacter(hit.Parent) --OH LOOK, here's an edit local right_arm = vCharacter:FindFirstChild("Right Arm") if (right_arm) then local joint = right_arm:FindFirstChild("RightGrip") if (joint and (joint.Part0 == sword or joint.Part1 == sword)) then if guygettingsliced then --If he's a player --if vPlayer.TeamColor ~= guygettingsliced.TeamColor then tagHumanoid(humanoid, vPlayer) humanoid:TakeDamage(damage) wait(1) untagHumanoid(humanoid) --end else --If he's not a player (AI, shop, etc) tagHumanoid(humanoid, vPlayer) humanoid:TakeDamage(damage) wait(1) untagHumanoid(humanoid) end end 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) if game.Players:FindFirstChild(hit.Parent.Name) then local Victim = game.Players:GetPlayerFromCharacter(hit.Parent) if Victim:FindFirstChild('Duelling') then else if not vCharacter:FindFirstChild('RK') then local TaggedasRk = Instance.new('StringValue', vCharacter) TaggedasRk.Name = "RK" TaggedasRk.Value = vPlayer.Name end end end if hit.Parent.Name == "Sword bot" then if not vCharacter:FindFirstChild('RK') then local TaggedasRk = Instance.new('StringValue', vCharacter) TaggedasRk.Name = "RK" TaggedasRk.Value = vPlayer.Name end end humanoid:TakeDamage(damage) wait(1) untagHumanoid(humanoid) end end end --Added those two (if player/if not player) in so this wouldn't break if you used it on AI, or something of the sort. 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 local force = Instance.new("BodyVelocity") force.velocity = Vector3.new(0,10,0) force.maxForce = Vector3.new(0,4000,0) -- ADD THIS TO CHANGE MOMENTUM force.Parent = Tool.Parent.Torso wait(.25) swordOut() wait(.25) force.Parent = nil wait(.5) swordUp() damage = slash_damage end function swordUp() Tool.GripForward = Vector3.new(1, 0, 0) Tool.GripRight = Vector3.new(0, 0, -1) Tool.GripUp = Vector3.new(0, -1, 0) end function swordOut() Tool.GripForward = Vector3.new(1, 0, 0) Tool.GripRight = Vector3.new(0, 0, -1) Tool.GripUp = Vector3.new(-20, -1, 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 local 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)
0
Thanks, will try this out. G0ZZEN 17 — 4y
0
Nope, this breaks after i hit. The grip is already right. G0ZZEN 17 — 4y
0
Nvm figured it out myself, all i had to do was change the grip values in the script G0ZZEN 17 — 4y

Answer this question