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

Why is this not working??

Asked by 10 years ago

I couldn't find an output error with this script, but for some reason it won't work...

debounce = true
done = {}
script.Parent.Touched:connect(function(player)
    if debounce == true then
        debounce = false
        a == false
        for i,v in pairs (done) do
            if player.Parent.Name == done[i] then
                open() --I hid the function, but it's correct
                a = true
            end
        end
        if a == false then
            ls = game.Players:FindFirstChild(player.Parent.Name).leaderstats.Admins
            ls.Value = ls.Value-1
            done.insert[player.Parent.Name]
            open()
        end
        a = false
        wait(1)
        debounce = true
    end
end)

What should happen is this: When a player touches the brick, he should only be charged once instead of all the time when he touches the brick. But it doesn't work properly and I can't find an output error (not sure why)...

0
Do you have anything for your script to do if a is true? M39a9am3R 3210 — 10y
0
On line 6, you have two equal signs. Is there supposed to be an if statement? If not, remove one. We need a better explanation of this script, especially pertaining the 'a' variable. Shawnyg 4330 — 10y

1 answer

Log in to vote
1
Answered by
BlueTaslem 18071 Moderation Voter Administrator Community Moderator Super Administrator
10 years ago

If we run this script, we get the following error:

input:6: syntax error near '=='

(Sometimes syntax errors aren't visible when you run in Solo or as a Server, so just pressing Play to play in normal studio sometimes helps catch them)

On line six you have written:

-- (Incorrect snippet for explanatory use)
a == false

This probably is either meant to be a condition that you forgot to write (like if a == false then) or an assignment a = false.

Based on the context, it's almost surely meant to be the assignment a = false.


Once we fix that, we have a second syntax error:

input:17: syntax error near 'open'

This is caused by the previous line:

-- (Incorrect snippet for explanatory use)
done.insert[player.Parent.Name]

Since insert is a function, we would use parenthesis (( )) not square brackets ([ ]):

-- (Incorrect snippet for explanatory use)
done.insert(player.Parent.Name)

However, unlike other languages, Lua doesn't have a insert by default in tables. This is because of how Lua indexes things and the mess that would create. You must use the function table.insert:

table.insert(done, player.Parent.Name);

Please also be warned that in some cases, the Parent of an object hitting will be nil. This would cause errors in your script. You should add a check to make sure player.Parent is not nil.


I would also use a better name than player for the object touching.


Also note that there is a function of the Players service:

game.Players:GetPlayerFromCharacter(player.Parent)

which you could use instead of

game.Players:FindFirstChild(player.Parent.Name)

Ad

Answer this question