Choosing multiple answers from the same list is a bit trickier. Assuming you'll want to remove options that have already been chosen, you'll be using the same list 4 times so you must define the string list that contains all the candidates and answers in an object i.e. not within the script that you'd be running.
Here is an example. The following would be a function called ThisFunction. You would have to have an object called "box" that exists and create custom attributes called "candidates" (set as a string list containing the possible answers), "answers" (a blank string list), and "correctanswers" (containing the 4 correct answers).
ShowMenu ("Which of the following are correct?", box.candidates, false) {
list remove (box.candidates, result)
list add (box.answers, result)
if (ListCount(box.answers) < 4) {
ThisFunction
}
else {
score = 0
foreach (item, box.answers) {
if (ListContains(box.correctanswers,item)) {
score = score + 1
}
}
msg ("You got " + score + " out of 4 correct.")
}
}
I'm not sure what features of Quest you are and aren't familiar with, so if you have trouble with any part of the script just let me know and I can explain it in more detail. And if it doesn't quite do what your after then it can be modified easily enough until it does.
I've attached an example game file that you can look at to see how it works. If you play the game and type "test" the function will run and show it in action. You can also see how I've added the attributes to the "box" object.