Well, I tried to fix this problem by adding "wait (1.5)" insted of "then." I am a very, very early scripter.
function
owned = BrickColor.Random()
wait (1.5)
owned = BrickColor.Random()
loop = true
end
owned = game.Workspace.owned.BrickColor
Well, I tried to fix this problem by adding "wait (1.5)" insted of "then." I am a very, very early scripter.
function
owned = BrickColor.Random()
wait (1.5)
owned = BrickColor.Random()
loop = true
end
owned = game.Workspace.owned.BrickColor
loop to true will do nothing.owned that is equal to the BrickColor of the brick. When you change this variable you are only changing that variable in the script and not the property of the brick.local unless you need a global variable.Method 1: Via recursion.
local Brick = Workspace.Owned
function FunctionName()
Brick.BrickColor = BrickColor.Random()
wait(1.5)
FunctionName() --Repeat the same function again
end
FunctionName() --Execute the code inside the function FunctionName
Method 2: using a while loop.
local Brick = Workspace.owned
while true do
Brick.BrickColor = BrickColor.Random()
wait(1.5)
end
The while loop will continue looping the code inside of it until the condition is false. And true will never be false so it will run forever.
Method 3:
The wait function actually returns true so we could also do:
local Brick = Workspace.owned
while wait(1.5) do
Brick.BrickColor = BrickColor.Random()
end
Here are a list of things you forgot to do: You forgot to name the function. You forgot to localize and put the local before the script.
local owned = game.Workspace.owned.BrickColor --Make this a habit. Locals almost always go at the beginning of the script.
function BColorC() -- this is the name of the function
owned = BrickColor.Random()
wait (1.5)
owned = BrickColor.Random()
end
BColorC() -- this calls for the function to start.
This is your script fixed, but if you want it to loop;
local owned = game.Workspace.owned.BrickColor
while wait(1.5) do
owned = BrickColor.Random()
end
while wait() do (what you want the script to do) end
This is a loop that repeats the step every wait()
wait() by itself holds the script for 1/30 of a second before continuing and wait(1.5) holds the script for 1.5 seconds.
Hope this helps :)
Before I begin, please tab your code correctly. :)
There are three problems with your code:
1. You did not set a Name for your Function.
2. You are not changing the BrickColor directly, you are only saving it's Color as a Value for the Variable.
3. What if the Child owner was not existant at the time of execution of the code?
There are solutions to this, however, but, please keep in mind; There is a feature to the Studio, the Output, so please use this to check for errors, alright? :)
To fix this, you must;
1. Give the function a Name.
2. Do not set the Variable to it's BrickColor property directly.
3. Use a chunk that will yield the code until the Child is existant, I recommend the WaitForChild for this operation.
Final result;
local owner = game.Workspace:WaitForChild("owned")
function RandomColour()
if owner then --Checks if `owner` is existant
owner.BrickColor = BrickColor.Random() --Changes the BasePart's 'BrickColor' property to a random color
end
end
RandomColor()
Information left out
1. The if statement is used to check if a Argument (or Condition) is true, equal to another Argument, or is equal (or returns) to true.
2. The WaitForChild method is used to yield a specific code until a Child with the same name as the Argument given to the method is existant, then will stop the yield and let the code execute.
Hope this helped!
What was wrong with my Answer?
Nothing, I didn't thumb you down. I can't thumb you down. I need 5 rep before I do and if people keep thumbing me down for no reason I can't.
This discussion is preserved as it was. New answers, comments, and votes are closed.
1 comment
I tried "local" it solved the problem inside the script. The brick doesn't change colors though...