local function WaitForChild(parent, childName) while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end return parent[childName] end local SLASH_DAMAGE = 70 local DOWNSTAB_DAMAGE = 60 local THROWING_DAMAGE = 100 local HOLD_TO_THROW_TIME = 0.38 local Damage = 60 local MyHumanoid = nil local MyTorso = nil local MyCharacter = nil local MyPlayer = nil local Tool = script.Parent local Handle = WaitForChild(Tool, 'Handle') local BlowConnection local Button1DownConnection local Button1UpConnection local PlayStabPunch local PlayDownStab local PlayThrow local PlayThrowCharge local IconUrl = Tool.TextureId local DebrisService = Game:GetService('Debris') local PlayersService = Game:GetService('Players') local SlashSound local HitPlayers = {} local LeftButtonDownTime = nil local Attacking = false function Blow(hit) if Attacking then BlowDamage(hit, Damage) end end function BlowDamage(hit, damage) local humanoid = hit.Parent:FindFirstChild("Humanoid") local player = PlayersService:GetPlayerFromCharacter(hit.Parent) if humanoid ~= nil and MyHumanoid ~= nil and humanoid ~= MyHumanoid then if not MyPlayer.Neutral then end end local rightArm = MyCharacter:FindFirstChild('Right Arm') if (rightArm ~= nil) then local joint = rightArm:FindFirstChild('RightGrip') if (joint ~= nil and (joint.Part0 == Handle or joint.Part1 == Handle)) then if player and not HitPlayers[player] then TagHumanoid(humanoid, MyPlayer) print("Sending " .. damage) humanoid:TakeDamage(damage) Handle.Splat.Volume = 1 HitPlayers[player] = true end end end end function TagHumanoid(humanoid, player) -- Add more tags here to customize what tags are available. while humanoid:FindFirstChild('creator') do humanoid:FindFirstChild('creator'):Destroy() end local creatorTag = Instance.new('ObjectValue') creatorTag.Value = player creatorTag.Name = 'creator' creatorTag.Parent = humanoid DebrisService:AddItem(creatorTag, 1.5) local weaponIconTag = Instance.new('StringValue') weaponIconTag.Value = IconUrl weaponIconTag.Name = 'icon' weaponIconTag.Parent = creatorTag DebrisService:AddItem(weaponIconTag, 1.5) end function HardAttack() Damage = SLASH_DAMAGE SlashSound:play() if PlayStabPunch then PlayStabPunch.Value = true wait(1.0) PlayStabPunch.Value = false end end function NormalAttack() Damage = DOWNSTAB_DAMAGE KnifeDown() SlashSound:play() if PlayDownStab then PlayDownStab.Value = true wait(1.0) PlayDownStab.Value = false end KnifeUp() end function ThrowAttack() KnifeOut() if PlayThrow then PlayThrow.Value = true wait(0.3) if not Handle then return end local throwingHandle = Handle:Clone() DebrisService:AddItem(throwingHandle, 5) throwingHandle.Parent = Workspace if MyCharacter and MyHumanoid then throwingHandle.Velocity = (MyHumanoid.TargetPoint - throwingHandle.CFrame.p).unit * 100 -- set the orientation to the direction it is being thrown in throwingHandle.CFrame = CFrame.new(throwingHandle.CFrame.p, throwingHandle.CFrame.p + throwingHandle.Velocity) * CFrame.Angles(0, 0, math.rad(-90)) local floatingForce = Instance.new('BodyForce', throwingHandle) floatingForce.force = Vector3.new(0, 196.2 * throwingHandle:GetMass() * 0.98, 0) local spin = Instance.new('BodyAngularVelocity', throwingHandle) spin.angularvelocity = throwingHandle.CFrame:vectorToWorldSpace(Vector3.new(0, -400, 0)) end Handle.Transparency = 1 wait(0.08) if throwingHandle then local touchedConn = throwingHandle.Touched:connect(function(hit) print("hit throw") BlowDamage(hit, THROWING_DAMAGE) end) local touchedConn = throwingHandle.Touched:connect(function(hit) throwingHandle.Anchored = true BlowDamage(hit, THROWING_DAMAGE) end) local touchedConn = throwingHandle.Touched:connect(function(hit) script.Parent.Handle.Throwhit:Play() BlowDamage(hit, THROWING_DAMAGE) end) end if throwingHandle then throwingHandle.CanCollide = true end wait(0.6) if Handle and PlayThrow then Handle.Transparency = 0 PlayThrow.Value = false end end KnifeUp() end function KnifeUp() Tool.GripForward = Vector3.new(-1,0,0) Tool.GripRight = Vector3.new(0,1,0) Tool.GripUp = Vector3.new(0,0,1) end function KnifeDown() Tool.GripForward = Vector3.new(-1,0,0) Tool.GripRight = Vector3.new(0,1,0) Tool.GripUp = Vector3.new(0,0,-1) end function KnifeOut() Tool.GripForward = Vector3.new(0,0,1) Tool.GripRight = Vector3.new(0,-1,0) Tool.GripUp = Vector3.new(-1,0,0) end Tool.Enabled = true function OnLeftButtonDown() LeftButtonDownTime = time() if PlayThrowCharge then PlayThrowCharge.Value = true end end function OnLeftButtonUp() if not Tool.Enabled then return end HitPlayers = {} if PlayThrowCharge then PlayThrowCharge.Value = false end if Tool.Enabled and MyHumanoid and MyHumanoid.Health > 0 then Tool.Enabled = false local currTime = time() if LeftButtonDownTime and currTime - LeftButtonDownTime > HOLD_TO_THROW_TIME and currTime - LeftButtonDownTime < 1.15 then ThrowAttack() else Attacking = true if math.random(1, 2) == 1 then HardAttack() else NormalAttack() end Attacking = false end Tool.Enabled = true end end function OnEquipped(mouse) PlayStabPunch = WaitForChild(Tool, 'PlayStabPunch') PlayDownStab = WaitForChild(Tool, 'PlayDownStab') PlayThrow = WaitForChild(Tool, 'PlayThrow') PlayThrowCharge = WaitForChild(Tool, 'PlayThrowCharge') SlashSound = WaitForChild(Handle, 'Swoosh1') Handle.Splat.Volume = 0 SlashSound:play() BlowConnection = Handle.Touched:connect(Blow) MyCharacter = Tool.Parent MyTorso = MyCharacter:FindFirstChild('Torso') MyHumanoid = MyCharacter:FindFirstChild('Humanoid') MyPlayer = PlayersService.LocalPlayer if mouse then Button1DownConnection = mouse.Button1Down:connect(OnLeftButtonDown) Button1UpConnection = mouse.Button1Up:connect(OnLeftButtonUp) end KnifeUp() end function OnUnequipped() if BlowConnection then BlowConnection:disconnect() BlowConnection = nil end if Button1DownConnection then Button1DownConnection:disconnect() Button1DownConnection = nil end if Button1UpConnection then Button1UpConnection:disconnect() Button1UpConnection = nil end MyHumanoid = nil end Tool.Equipped:connect(OnEquipped) Tool.Unequipped:connect(OnUnequipped)
Please say witch line...
I'm guessing if the damage isn't working then it has something to do with this function.
function BlowDamage(hit, damage)
local humanoid = hit.Parent:FindFirstChild("Humanoid")
local player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
if humanoid ~= nil and MyHumanoid ~= nil and humanoid ~= MyHumanoid then
if not MyPlayer.Neutral then
end
end
local rightArm = MyCharacter:FindFirstChild('Right Arm') if (rightArm ~= nil) then local joint = rightArm:FindFirstChild('RightGrip') if (joint ~= nil and (joint.Part0 == Handle or joint.Part1 == Handle)) then -- Not sure if both parts should be Handle. if player and not HitPlayers[player] then TagHumanoid(humanoid, MyPlayer) print("Sending " .. damage) humanoid:TakeDamage(damage) Handle.Splat.Volume = 1 HitPlayers[player] = true end end end end