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

How do I make a function execute once and only once?

Asked by
OniiCh_n 410 Moderation Voter
10 years ago

I only want a certain function to execute once, and then the next time the same event happens, another function will follow.

Here's my current code for the first response.

(I'm making a text-based adventure)

local gui = script.Parent.Parent --The script is inside a TextBox which is inside of a ScreenGUI
local frame = gui
local text1 = frame.TextLabel
local response = gui.Response

local boy = "this way, child"
local girl = "this way, child"
local other = "don't know? follow me, 'it'"


function choice1()
if response.Text == "boy" then
        for i = 1,string.len(boy),1 do
        sound:play()
        text1.Text = string.sub(boy,1,i)
        wait(0.1)
        end
    else if response.Text =="girl" then
        for i = 1,string.len(girl),1 do
        sound:play()
        text1.Text = string.sub(girl,1,i)
        wait(0.1)
        end
    else if response.Text == nil or "" then
        for i = 1,string.len(other),1 do
        sound:play()
        text1.Text = string.sub(other,1,i)
        wait(0.1)
        end
return true
    end

        end
end
end

response.FocusLost:connect(function()
    if 1==1 then    
        choice1()
    end

    for i = 0,1,0.1 do
        response.Transparency = i
        text1.TextTransparency = i
        wait(0.1)
    end
    text1.Text = ""
    response.Text = "[ENTER A RESPONSE]"
end)

1 answer

Log in to vote
2
Answered by
User#2 0
10 years ago

One way you can do this is to set a variable to true once the function has executed.

local FuncExecuted = false

function f1()
    if not FuncExecuted then
        print("Hai")
        FuncExecuted = true
    end
end

function f2()
    f1()
    f1()
    f1()
end

f2()
Ad

Answer this question