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

Making a "when ____, then" script (waits until request is met, then execute command)?

I'm trying to make a script that waits until a requirement is met, and then the command runs. For example, when a server collectively earns a certain amount of points, a message changes. I'm a beginner with scripting, and I feel that knowing how to do this will be useful. I've tried using if/elseif statements, although it never works properly.

local points = game.Workspace.Total.Value

while true do
wait (0.5)
if points > 299 then
	script.Parent.Text = "Message #3"
	end
elseif points > 199 then
	script.Parent.Text = "Message #2"
	end
elseif points > 99 then
	script.Parent.Text = "Message #1"
	end
end

In the example scenario, when the server reaches 100 points, a textbox changes revealing a message. And again when they reach 200, 300, and so on.

In the output, I'm being told I'm missing an "end" to close the "while true do", but no matter how I change up the indents in the code or the "end"s, it still doesn't seem to work.

I know this is completely wrong, but I can't find anything across the internet whatsoever. If anybody knows a solution to this or where I can find one, it would be greatly appreciated. Finally, if I'm breaking any rules without knowing it, I apologize, and I will fix that in my next post.

Thanks, Elliott

1 comment

0

There will be only one end. One for the while true do loop and one for the if statement. Note that you don't have to add more ends to elseif statements because they are connected with the if statement

1 answer

All your ends should be at the bottom. Also you shouldn't use while true do to check for a change. I've remade your script below.

local IntValue = game.ServerStorage.IntValue -- Or Wherever the value is located
IntValue.Changed:Connect(function()
if IntValue.Value > 299 then
	script.Parent.Message = "Message #3"
elseif
	IntValue.Value > 199 then
		script.Parent.Message = "Message #2"
elseif
		IntValue.Value > 99 then
			script.Parent.Message = "Message #1"
			end
		end
	end
end)

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