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

Help with this sword script?

Asked by 10 years ago

Okay so, I am trying to script the swords where if your on a certain area, itll only kill the boss. here it is.

r = game:service("RunService")
gw=game.Workspace

z1=gw.zone1
z2=gw.zone2
z3=gw.zone3

function check2(z, t)
    local tp=t.Position
    local ap=z.Position
    local as=z.Size
    local ax=(as.x+1)/2
    local ay=(as.z+1)/2
    local ax1=ap.x-ax
    local ax2=ap.x+ax
    local ay1=ap.z-ay
    local ay2=ap.z+ay
    if tp.x>ax1 and tp.x<ax2 and tp.z>ay1 and tp.z<ay2 then
        return true
    else
        return false
    end
end

function check(t)
    if check2(z1, t) then
        return true
elseif check2(z2, t) then
        return true
elseif check2(z3, t) then
        return true
    else
        return false
    end
end

local damage = 5


local slash_damage = 10
local lunge_damage = 35

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("bHumanoid")
    local vCharacter = Tool.Parent
    local vPlayer = game.Players:playerFromCharacter(vCharacter)
    local hum = vCharacter:findFirstChild("Humanoid")
    if humanoid~=nil and humanoid ~= hum and hum ~= nil then
    local player=game.Players:playerFromCharacter(humanoid.Parent)
        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)
                local t = hit.Parent.Torso
                if check(t) then
                for i=1,damage do
                    if hum.Health<=0 then break end
                    humanoid:TakeDamage(1)
                end
                wait(1)
                untagHumanoid(humanoid)
            end
            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.maxForce = Vector3.new(0,4000,0)
    force.Parent = Tool.Parent.Torso
    wait(.2)
    swordOut()
    wait(.25)
    force.Parent = nil
    wait(1)
    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)



any help?

Answer this question