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

Why is my button1down not detecting the click?

Asked by 4 years ago

So i have this script that is a tool. This script is a server script.

local player = script.Parent.Parent.Parent
local char = player.Character
local knife = script.Rock
local holdan = script.Hold
local idle = script.Idle
local hit = script.Hit
wait(1)
local hold = char.Humanoid:LoadAnimation(holdan)
local idlepla = char.Humanoid:LoadAnimation(idle)
local hit = char.Humanoid:LoadAnimation(hit)
local hitting = false
script.Parent.Equipped:Connect(function(mouse)
    mouse.Button1Down:connect(function()
        print(mouse.Parent.Name)
        print("yes")
        if hitting == false then
            hitting = true
            idlepla:Stop()
            hit:Play()
            wait(1)
            idlepla:Play()
            hitting = false
        end
    end)
    char.Humanoid:AddAccessory(knife:Clone())
    hold:Play()
    wait(0.46)
    idlepla.Looped = true
    idlepla:Play()
end)
script.Parent.Unequipped:Connect(function()
    idlepla:Stop()
    char.Rock:Destroy()
end)

That is the whole code which is supposed to play animations

script.Parent.Equipped:Connect(function(mouse)
    mouse.Button1Down:connect(function()
        print(mouse.Parent.Name)
        print("yes")
        if hitting == false then
            hitting = true
            idlepla:Stop()
            hit:Play()
            wait(1)
            idlepla:Play()
            hitting = false
        end
    end)

this part is not working as the "mouse.Button1Down:connect(function()" part is not detecting the click. Please help me.

0
What is this script parented to? ZIRFAL3 17 — 4y

1 answer

Log in to vote
0
Answered by 4 years ago

First, you need to call the mouse. To do this, you need mouse = players.LocalPlayer:GetMouse()

When the sword is equipped, the click function runs only every time the sword is equipped. Since the button1down function is written inside the equip function, once the equip function runs, unless there is some sort of loop involved, the code inside the equip function will only run once. Essentially, your mouse function will run only right after the equip function, and only once and then the whole thing ends.

In short, you need to take out the mouse.button1down function outside of the equip function, otherwise, it will check for clicks before you can even attempt to click at all.

Perhaps a solution would be having three separate functions and one bool value.

Create a boolean value variable named "equipped", preferably with that script, or just make a boolean value in the workspace, also name it equipped. Set that boolean value's value to false.

Create a function that triggers when you equip the tool. Write an if statement that checks if the equipped value is set to false. If so, set equipped to true. and put whatever knife cloning or other code you have also inside that equip function

Below that, write a function that triggers when the tool is unequipped. Write an if statement that checks if the equipped value is set to true. If so, set equipped to false. and put whatever knife stuff or other code you have also inside that unequip function

Now, at the very bottom write this:

mouse.Button1Down:Connect(function()
    if hitting == false then
        hitting = true
        idlepla:Stop()
        hit:Play()
        wait(1)
        idlepla:Play()
        hitting = false
    end
end)
Ad

Answer this question