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

This knife script wont take any damage?

Asked by 10 years ago
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...

0
Any errors? jav2612 180 — 10y
0
That's not how we roll, sorry. You're clearly not the author of this script, markus6, and haven't made any attempt to investigate the problem yourself, show a little initiative and then we'll see what we can do. duckwit 1404 — 10y
0
duckwit you're right, i havent made this script, but i have edited 55% of the script markus6 5 — 10y

1 answer

Log in to vote
0
Answered by
jav2612 180
10 years ago

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
Ad

Answer this question