
I cant seem to get this script to do anything other than to assign a random number to the $personality variable. When I run the script, it changes the variable and does nothing. I have been watching the variable change and it does hit 1, 2, 10 and 19 but nothing fires from there. Does anyone see anything wrong with the script? I am on version 2014.5.27 of the ARC software and this is running in a script manager. Thanks for any help you can provide.Code:
# Get a response value
$personality = GetRandom(0,19)
If($personality = 0)
# dance
ElseIf($personality = 1)
ControlCommand("Script Manager", ScriptStart, "TellMeAJoke")
ElseIf($personality = 2)
ControlCommand("Script Manager", ScriptStart, "SayRandomFact")
ElseIf($personality = 3)
# ask if anyone else is getting hungery
ElseIf($personality = 4)
# Call Maples name and start autonimous movement
ElseIf($personality = 5)
# make a huge expression then look down with your arms hung low.
ElseIf($personality = 6)
#check the temp and if it is hot or cold, make a comment about it
ElseIf($personality = 7)
#Act like you are reading
ElseIf($personality = 8)
#look up and find someone, identify them, and ask how they are doing today.
ElseIf($personality = 9)
#see if it dark and if so, see if it is after 9 PM. if so, ask if it is bedtime
ElseIf($personality = 10)
Say("Can I chase the ball?")
:ChaseBall
WaitForChange($QuestionsAnswer)
if ($QuestionAnswer = "yes")
ControlCommand("Script Manager", ScriptStart, "ChaseColor")
Elseif ($QuestionAnswer = "no")
#look sad
else
say("I did not hear you. Can I chase the ball?")
endif
If($QuestionAnswer = "")
Goto(ChaseBall)
endif
$QuestionAnswer = ""
ElseIf($personality = 11)
say("Did you know it is ")
ControlCommand("Script Manager", ScriptStart, "SayTime")
ElseIf($personality = 12)
#autonomous collision avoidance
ElseIf($personality = 13)
#look mad and play mad sound
ElseIf($personality = 14)
#sway from side to side and play song
ElseIf($personality = 15)
#find someone and wave at them
ElseIf($personality = 16)
#look sad and say eve
ElseIf($personality = 17)
#scratch head - Thinking
ElseIf($personality = 18)
#Raise arms and gears
#Make yawn sound
ElseIf($personality = 19)
#look up and find someone
ControlCommand("Script Manager", ScriptStart, "FollowMotion")
ControlCommand("Soundboard", Track_4)
ControlCommand("Script Manager", ScriptStart, "kiss")
Left(255,1000)
Right(255,1000)
else
endif
Code:
Do you think WaitForChange() is populating $QuestionsAnswer from speech recognition?
You're almost there!
To try to get to the bottom of what is going on, I did this.
Code:
This works.
However, when I change the script to this
Code:
The script breaks. It looks like there is an issue with placing #comments inside of an if statement?
I was using those as place fillers but replaced them with Say("the description") until I could script each section. This works.
Have a great day!
Back to the first problem i'm helping you identify. It had nothing to do with the variable name spelling (although I didn't catch that and you did).
I'd like you to tell me what you think the command WaitForChange() does and how it pertains to Speech Recognition...
As a side note...
One thing great about what you have created here with ARC is software that is easy enough to initially grasp, yet can take a lifetime to master... This way it keeps you hooked because learning is ongoing.... ARC can match a persons abilities and knowledge as you learn... And no, I haven't had any beer (yet) today... Just lamenting on how much I have learned programming wise since I stated using ARC about 8 months ago.... Learned more in that time frame then I did in the last 10 years of this hobby...
What happens in the script is the robot asks a question. It then waits for the variable to change. The voice recognition section sets the variable to yes or no depending on the response, thus changing the variable and allowing this script to then evaluate the variable and continue based on the value of the variable. That's what it's doing and how it is working anyway. Do I understand this correctly?
no $QuestionAnswer = "No"
I will post my entire solution to the cloud as public if that helps.
The box looks like this
Phrase | Command
-----------------+-----------------------------------
Yes | $QuestionAnswer = "yes"
-----------------+---------------------------------
No | $QuestionAnswer = "No"
-----------------+----------------------------------
drawn in asci for those of us that remember BBS systems
That was my biggest concern is because no where in the code you pasted is the variable changed.
Keep in mind that every time the personality script runs, the variable will equal the last value. If you said YES last time, and say YES again - the WaitForChange() will never stop.
I would recommend clearing the variable at the top of the script. Set the variable to = "" at the top of the script.
Thanks for digging into this so much DJ. I do really appreciate it.
Code:
Sorry gals.
If only women were logical... that may explain why I struggle to understand them most of the time
This also gave me the opportunity to post and receive notifications without answering the issues. I am loving this topic as this is the way people learn most in my experience.
As a side note though, and it's probably just me but I prefer to assign variables with at least something to them rather than a $variable = "". Usually when I reset a variable I use $variable = "null". More than likely this is just me and my OCD but I don't like a variable to be empty.
I don't think it's so much about being a girl, it's just your personality as molded by environmental and genetic pressures