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

Making a tool come back to you?

Asked by 9 years ago

So this is my Sword script and I don't want people to be able to press backspace to give their sword to other people. How would i do it and where would I place it in my script?. All help appreciated! Thanks!

r = game:service("RunService") 
ching = false
Tool = script.Parent
sword = Tool:WaitForChild("Handle")

function blow(hit) 
    if ching == true then
        return
    end 
    local humanoid = hit.Parent:findFirstChild("Human") 
    local vCharacter = Tool.Parent 
    local vPlayer = game.Players:playerFromCharacter(vCharacter) 
    local DD = vPlayer.DD 
    if humanoid then 
        ching = true 
        tagHumanoid(humanoid, vPlayer) 
        local damage = math.random(script.Parent.MinDmg.Value,script.Parent.MaxDmg.Value)+math.floor(vPlayer.leaderstats.Lvl.Value/5)
        DD.Value = DD.Value + math.floor(damage)
        humanoid:TakeDamage(damage) 
        local part = Instance.new("ScreenGui") 
        local part2 = Instance.new("TextLabel") 
        local c1 = script.FadeClean:Clone()
        local c2 = script.TextRiser:Clone()
        part2.FontSize = "Size18"
        part2.Size = UDim2.new(0,50,0,50) 
        part2.Position = UDim2.new(0.5,0,0.25,0) 
        part2.BackgroundTransparency = 1
        part2.Parent = part 
        c1.Parent = part2
        c1.Disabled = false
        c2.Parent = part2
        c2.Disabled = false
        part.Parent = vPlayer.PlayerGui 
        if (damage == 0) then 
            part2.TextColor3 = Color3.new(0/255,102/255,255/255) 
        else 
            part2.TextColor3 = Color3.new(255/255,255/255,255/255) 
        end 
        part2.Text = ""..damage.."" 
        wait(0.4)
        ching = false
        spawn(function()
            wait(.5)
            untagHumanoid(humanoid)
        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 then 
        for i, tag in pairs(humanoid:GetChildren()) do
            if tag.Name == "creator" and tag:IsA("ObjectValue") then
                tag:Destroy()
            end
        end
    end
end

function attack() 
    local anim = Instance.new("StringValue") 
    anim.Name = "toolanim" 
    anim.Value = "Slash" 
    anim.Parent = Tool 
end 

function lunge()
    local anim = Instance.new("StringValue") 
    anim.Name = "toolanim" 
    anim.Value = "Lunge" 
    anim.Parent = Tool
    local force = Instance.new("BodyVelocity") 
    force.velocity = Vector3.new(0,10,0) 
    force.Parent = Tool.Parent.Torso
    swordOut() 
    force:Destroy()
    swordUp()
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

Tool.Enabled = true 

function onActivated() 
    if not Tool.Enabled then 
        return 
    end 
    Tool.Enabled = false 
    local character = Tool.Parent; 
    local humanoid = character:FindFirstChild("Humanoid")
    if not humanoid then 
        return 
    end
    attack()
    Tool.Enabled = true 
end

script.Parent.Activated:connect(onActivated)
connection = sword.Touched:connect(blow)

1 answer

Log in to vote
1
Answered by
dyler3 1510 Moderation Voter
9 years ago

There is actually a Property built into the tool that prevents this. Go to the tool, and at the bottom of it's Properties list, there should be on called CanBeDropped. Just toggle this off, and everything should work fine. Hope I helped :P

0
Oh haha did not know that, thanks alot :) Bubbles5610 217 — 9y
0
Haha, no prob. Glad I could help. dyler3 1510 — 9y
Ad

Answer this question