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

How do I make a bayonet script?

Asked by 10 years ago

I was trying to make a gun with a bayonet and i wanted it to do damage, the script I have in it is called "BayonetScript"

r = game:service("RunService")


local damage = 7


local slash_damage = 15
local lunge_damage = 45

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 DarkKill(character, humanoid, attacker)

    if (character:FindFirstChild("ForceField") ~= nil) then return end

    local childs = character:GetChildren()

    local colors = {}

    tagHumanoid(humanoid, attacker)
    humanoid.Health = 0

    for i=1,#childs do
        if (childs[i].className == "Part") then
            colors[i] = childs[i].BrickColor
            childs[i].BrickColor = BrickColor.new(26)
            childs[i].CanCollide = true
            childs[i].Anchored = true
        end
    end

    wait(.25)

    for i=1,#childs do
        if (childs[i].className == "Part") then
            local b = Instance.new("BodyVelocity")
            b.velocity = Vector3.new(math.random() - .5, 0, math.random() - .5).unit * 80
            b.maxForce = Vector3.new(1e5,1e5,1e5)
            b.Parent = childs[i]
        end
    end

    for i=1,#childs do
        if (childs[i].className == "Part") then
            childs[i].Anchored = false
        end
    end








end




function blow(hit)
    local humanoid = hit.Parent:findFirstChild("Monster")
    local vCharacter = Tool.Parent
    local vPlayer = game.Players:playerFromCharacter(vCharacter)
    local hum = vCharacter:findFirstChild("Humanoid") -- non-nil if tool held by a character
    if humanoid~=nil and humanoid ~= hum and hum ~= nil then
        -- final check, make sure sword is in-hand

        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
                hum.Health = hum.Health + (damage * .5)
                if humanoid.Health > damage then
                    tagHumanoid(humanoid, vPlayer)
                    humanoid:TakeDamage(damage)
                    wait(1)
                    untagHumanoid(humanoid)
                else
                    DarkKill(humanoid.Parent, humanoid, vPlayer)
                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.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,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)

1 answer

Log in to vote
0
Answered by 10 years ago

I think you need to delete the "--" from every green text, because green text means normal test not script.

0
Green text is a comment, which means that ROBLOX completely ignores whatever is written after --. In this case, the original author of this script wanted some of the code to be optional. Stop using your rear to come up with answers, and learn to use your head! OniiCh_n 410 — 10y
0
Green text is a comment, which means that ROBLOX completely ignores whatever is written after --. In this case, the original author of this script wanted some of the code to be optional. Stop using your rear to come up with answers, and learn to use your head! OniiCh_n 410 — 10y
0
okay xXxCONBOY456xXx 15 — 10y
Ad

Answer this question