Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Help with an if statement?

hint = Instance.new("Hint", workspace)

hint.Text = "0"
while hint.Text ~= "10" do
    wait(1)
    hint.Text = hint.Text + 1
end 
hint:Destroy()

if hint:Destroy() then
	hint.Text = "Done" --"Done" does not show up 
end

3 answers

✓ Accepted answer

The loop runs forever, so code under it won't run. And saying something like:

if hint:Destroy() then
	-- blah blah
end

Is actually destroying the hint, in the if statement, and returning false. If you want to check if the hint exists, you'd use the parent of the hint, and use FindFirstChild("Hint"). Like this:

-- Assuming the hint's parent is in "Workspace"

local hint = workspace:FindFirstChild("Hint")

if hint then
	print("Hint exists")
else
	print("Hint does not exist")
end

Or:

if workspace:FindFirstChild("Hint") then
	print("Exists")
else
	print("Hint is nil")
end

And let's try using a number value for that hint text, and instead using a while loop, let's use a for loop.

local hint = Instance.new("Hint", workspace)
hint.Text =0

for i = 1,10 do
	hint.Text = i -- the variable "i" is constantly changing in order from 1-10.
	wait(1)
end

hint:Destroy()

if workspace:FindFirstChild("Hint") then
	-- The hint exists
	print("The hint still exists")
else
	-- else
	print("The hint does not exist")
end

Now, since we did call Destroy() on the hint before the if statement, it's not really necessary. So we can just say:

local hint = Instance.new("Hint", workspace)
hint.Text =0

for i = 1,10 do
	hint.Text = i
	wait(1)
end

hint:Destroy()
print("Done")

Hope that helped.

Well, I see a range of errors... First off, your while/do will repeat itself non-stop, meaning everything below it will never run.

Second of all, you remove the hint, then run an if statement on a method (which can't be done).

Then you try to change the instance's Text property regardless of the fact that it isn't there...

hint = Instance.new("Hint", workspace)

hint.Text = "0"
while hint.Text ~= "10" do --Loop will never end
    wait(1)
    hint.Text = hint.Text + 1
end 
--WILL NOT RUN--
hint:Destroy() --You remove it, then try to call it in the next if statement?

if hint:Destroy() then --Calling "if" on a method (and a nil value)
    hint.Text = "Done" --"Done" does not show up   --Can't change properties of a "nil" value...
end
----------------------

3 comments

0

Actually, you can perform math on a string, if that string can be converted to a number (obviously that's the preferred method, but it's not impossible). And you probably could have given him an example of a correct script.

0

You can convert a string to a number using tonumber. But you have to make sure (just in case or if you want to fetch user data) that the string is in fact a number. You can do this with string patterns but that's a whole other story.

0

You can do "if tonumber(x) then" I believe.

Well, you are trying to use math on a string. In order to use the number in the string, you must first convert it into a integer. Or you can just make a variable number and change the text to that number.

hint = Instance.new("Hint", workspace)
hit=0
hint.Text = hit
while hit<10 do
    wait(1)
    hint.Text = hit
	hit=hit+1
end 
hint:Destroy()

if hint:Destroy() then
    hint.Text = "Done" --"Done" does not show up 
end

Now, as for the if statement, you are trying to see if hint is there. You can't have hint:Destroy() in a if statement because hint:Destroy() is a function that returns nil or void. Not only that but :Destroy() will delete your hint. So you can't change the text of something that no longer exists. If you want to check if hint does exist then you can use FindFirstChild().

hint = Instance.new("Hint", workspace)
hint.Name="Test"

hit=0
hint.Text = hit
while hit<10 do
    wait(1)
    hint.Text = hit
	hit=hit+1
end 
hint:Destroy()

if game.Workspace:FindFirstChild("Test") then
    hint.Text = "Done" 
end

This if statement will never be true though because you destroyed the hint that you called test (Unless you have something else in workspace called "Test").

This discussion is preserved as it was. New answers, comments, and votes are closed.