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)

5 comments
https://www.roblox.com/library/174577307/Tool-Grip-Editor
Thanks, will try this out.
Nope, this breaks after i hit. The grip is already right.
try this https://www.roblox.com//library/148570182/asset
Nvm figured it out myself, all i had to do was change the grip values in the script