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

How Come When I Try To Get a Return From This Pcall Function, Nothing Happens?

Asked by
8391ice 91
7 years ago

I am experimenting with Pcall functions and I want mine to be able to return a different output, a little like how this function does here.

function GiveResult()
    return 1
end

local a = GiveResult()

repeat wait() until a == 1 or a == 2 or a == 3
if a == 1 then
    print("Player 1 wins")
elseif a == 2 then
    print("Player 2 wins")
else
    print("Nobody wins")
end

However, I want to make my game extra protective from exploiters by wrapping my Game script with a Pcall function. When the function fails, I want it to simply clone a new copy of itself and delete the old one to start over. Right now, I am trying to learn the ins and outs of Pcall functions before actually using them. I have tried to do the same thing that I did with the previous function with this Pcall function, but I never get an output. Why is that?

wait(5)

function BadPrint()
    return 1
end

success, message = pcall(BadPrint)
if success then
    if success == 1 then print(1) elseif success == 2 then print(2) end
else
    wait(.1)
        print("An error occurred: "..message)
    local newScript = game.Lighting.Pcall:Clone()
    newScript.Parent = game.Workspace
    newScript.Disabled = false
    script:Destroy()
end

Any help is much appreciated!

1 answer

Log in to vote
0
Answered by
1waffle1 2908 Trusted Badge of Merit Moderation Voter Community Moderator
7 years ago

success is boolean. message will contain the return value, so change your if success == 1, etc. to if message == 1

Ad

Answer this question