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

How do I make my tool anti teamkill?

Asked by 4 years ago
Edited 4 years ago

Hello, I am trying to make a zombie tool for my zombie game, and I got a tool that is a axe that i edited around to make it into a zombie tool, since i am a beginner scripter. However, I am having trouble for making it anti-team kill.

Here is the main script:

local Tool = script.Parent
local Axe = Tool.Handle

`local vCharacter
local myTorso
local myHumanoid

local leftAxe
local leftAxeWeld

local slashSound

local leftAxeConnection

Tool.Enabled = true

local axeDamage = 8

local damage = 10

local debris = game:GetService("Debris")

function tagHumanoid(humanoid, player)
    if humanoid ~= nil then 
        local creatorTag = Instance.new("ObjectValue")
        creatorTag.Value = player
        creatorTag.Parent = humanoid
        creatorTag.Name = "creator"
        debris:AddItem(creatorTag, 1)
    end
end

function slash(hit, arm, kamaHandle)
    local armWeld
    if hit and hit.Parent and vCharacter then       
        local humanoid = hit.Parent:FindFirstChild("Humanoid")
        vPlayer = game.Players:GetPlayerFromCharacter(vCharacter)       
        if humanoid ~= nil and myHumanoid ~=nil and myHumanoid ~= humanoid then             
            if arm == nil then              
                arm = vCharacter:FindFirstChild("Right Arm")
            end
            if arm then                 
                armWeld = arm:FindFirstChild("LeftGrip") or arm:FindFirstChild("RightGrip")
                if armWeld and (armWeld.Part0 == kamaHandle or armWeld.Part1 == kamaHandle)  then                   
                    tagHumanoid(humanoid, vPlayer)
                    humanoid:TakeDamage(axeDamage)
                end
            end 
        end
    end
end 

function blow(hit) 
    if hit and hit.Parent then 
        local humanoid = hit.Parent:FindFirstChild("Humanoid") 
        if humanoid and myHumanoid and humanoid ~= myHumanoid then 
            tagHumanoid(humanoid, vPlayer) 
            humanoid:TakeDamage(damage)             
        end 
    end 
end 

function onEquipped()
    vCharacter = Tool.Parent
    myTorso = vCharacter:FindFirstChild("Torso")
    myHumanoid = vCharacter:FindFirstChild("Humanoid")
    myLeftArm = vCharacter:FindFirstChild("Left Arm")
    if myTorso and myLeftArm and vCharacter:FindFirstChild("LeftAxe") == nil and leftAxeWeld == nil then 
        leftAxe = Axe:Clone()
        leftAxe.Name = "LeftAxe"
        leftAxe.Parent = vCharacter     

        leftAxeWeld = Instance.new("Weld")      
        leftAxeWeld.Part0 = myLeftArm
        leftAxeWeld.Part1 = leftAxe
        leftAxeWeld.C1 = CFrame.new(-1, 0, -1.9, -1.31134158e-007, -1, 2.18556949e-007, -1, 1.31134158e-007, 4.3711367e-008, -4.37113989e-008, -2.18556949e-007, -1)
        leftAxeWeld.Parent = myLeftArm 
        leftAxeWeld.Name = "LeftGrip"

        leftAxeConnection = leftAxe.Touched:connect(function(hit) slash(hit, myLeftArm, leftAxe) end)
    end 
end

function onUnequipped()
    if leftAxe then leftAxe:Remove() leftAxe = nil end
    if leftAxeWeld then leftAxeWeld:Remove() leftAxeWeld = nil end
    if slashSound then slashSound:Stop() end
end

Tool.Equipped:connect(onEquipped)
Tool.Unequipped:connect(onUnequipped)

Axe.Touched:connect(function(hit) slash(hit, nil, Axe) end)

local throwAxes = Tool:FindFirstChild("ThrowAxes")
while throwAxes == nil do 
    wait() 
    throwAxes = Tool:FindFirstChild("ThrowAxes")
end 

function throw(axeClone, direction, axe) 
    local spawnPos = axe.Position + direction * 4.0 
    axeClone.CFrame = CFrame.new(spawnPos, spawnPos + direction) * CFrame.Angles(0, 0, math.pi/2)   
    axeClone.CanCollide = false 

    axeClone.Velocity = direction * 65.0 
    --axeClone.RotVelocity = Vector3.new(100, 0, 0) 

    local floatForce = Instance.new("BodyForce") 
    floatForce.force = Vector3.new(0, axeClone:GetMass() * 196.1, 0) 
    floatForce.Parent = axeClone 

    axeClone.Parent = game.Workspace 

    print(axeClone)

    axeClone.Touched:connect(function(hit) blow(hit) end)   
    debris:AddItem(axeClone, 5)
end 

throwAxes.Changed:connect(function()
    if throwAxes and throwAxes.Value == true and myHumanoid then 
        Tool.Enabled = false
        local target = myHumanoid.TargetPoint 
        local direction = (target - myTorso.Position).unit

        local axeClone = Axe:Clone()
        throw(axeClone, direction, Axe) 
        wait(0.25)
        local axeClone2 = Axe:Clone()
        throw(axeClone2, direction, leftAxe)
        Axe.Transparency = 1.0
        leftAxe.Transparency =  1.0
        wait(5.0)
        Tool.Enabled = true 
        Axe.Transparency = 0.0
        leftAxe.Transparency =  0.0
        wait(2.0)
        throwAxes.Value = false
    end 
end) `
0
Sorry if this looks a bit messy, I am new to this site pigeondoves 3 — 4y
0
Because it's so messy, I can't really give you details, but based off of the title, you check the team of the player, then see if the team is equal to the player using the tool. beeswithstingerss 41 — 4y
0
Im gonna fix it wait... pigeondoves 3 — 4y
0
Check it out now. I fixed it pigeondoves 3 — 4y
View all comments (2 more)
0
this is exactly why you don't copy paste scripts you did'nt make.. starmaq 1290 — 4y
0
I fixed it, but how do i make it anti team kill? I want to learn that since it is important for me pigeondoves 3 — 4y

Answer this question