Updating Results.ScorePercent help required

HI all

Have built a quiz that works as follows:

- has a bank of 50 questions

- first attempt shows 20 random questions (from above bank)

- results slide shows number of correct questions, total score etc

- if learner fails, then he is given one more attempt 

- second attempt shows 20 random questions (from the same bank)

- if a question that was previously answered correctly is called, then it is skipped, therefore learner only sees questions he either got wrong or hasn't yet seen

- results slide shows number of correct questions, total score etc

The challenge here is that Results.ScorePercent is being reset when the learner clicks Retry.  This means that Results.ScorePercent for the second attempt will be inaccurate if the quiz calls any questions he got correct the first time around, as there is no way of manually adding the score percentage of that question, e.g. 5%, to Results.ScorePercent.  That final score will always be lower than what it should be.

I've not been able to resolve this by any kind of trigger/variable trickery.  Are there any workaround or am I missing something easy?  Likewise, any JavaScript hacks that can alter Results.ScorePercent on any given quiz slide?


PS the client is stipulating the quiz works as above as they already use this method in other quizzes (written in a different tool) and want to maintain uniformity.

6 Replies
Kevin Thorn

Hey Simon,

Interesting challenge. My first thought was to use some "trigger/variable trickery" but you've already explored that.

Unfortunately, the four system variables tied to the Results slide (Results.ScorePercent, Results.ScorePoints, Results.PassPercent, and Results.PassPoints) are not accessible in this version of Storyline.

Thinking out loud here, one way *might* be to create an entirely duplicate scene with that question bank. The second attempt would go to that path. Although, I think it would be the same problem not being able to identify previously correct/incorrect questions.

Still thinking out loud....

A LOT of work, but what if you created a variable for every possible choice in all the questions. Trigger them T/F depending on the choice. On the first pass of the Results slide, calculate all the variables for which ones are correct/incorrect. Then on the second attempt using the approach above by going to a duplicate scene. Only the second scene is not the default 'bank' of questions rather all 50 question slides in that scene.

The first question would cannot be random in the second scene however (omit it from the first bank). On ever feedback "continue" button evaluate the previous variables. Ex: IF Q2 is = True Jump to Slide Question3, else IF Q2 is = False Jump to Question4. Just thinking through that is LOT of variables and a MESS of triggers to manage. And...not even sure that would work.

The solution would be to submit a feature request to ask Articulate to free up the system variables - OR - some Javascript trickery someone else may be able to offer.

Sorry couldn't be of more help.


Simon Perkins

Hi Kevin

Thanks for chewing this one over.  I started making a version with a duplicate bank last week, but the same problem occurs when calculating Results.ScorePercent as it still needs to be manipulated.  Negating the need to display correctly answered questions a second time is the easy bit, it's the maths that isn't.

I'm sure James K or someone else could cook up some JS ... either way, I still believe, like I have from day one, that Results.ScorePercent (as well as the other untouchable variables) should be editable.  I'll stick in another feature request anyway.



david mckisick

Interesting. Why not "feed" the Results.ScorePercent into a number variable and then use a second T/F variable for their second pass through the quiz?

So for example, create a number variable and call it anything you like and set it's value to zero. Then on your results slide, create a new trigger and set it to adjust variable (your number variable) when timeline starts to variable Results.ScorePercent. This will automatically set that number variablet to the value held in Results.ScorePercent. This creates a "placeholder" variable with the value held by Results.ScorePercent at the time the results slide is accessed by the user. When the user clicks Retry quiz, Results.ScorePercent is also reset, but NOT your placeholder variable. You then create another variable linked to your quiz bank or quiz slide(s) that says, Draw from quiz bank (set to however you like) IF (your placeholder variable) < Results.PassPercent.

There really is no need to edit any of the hard coded results slide variables. Instead, harness them through clever use of variables and triggers.

Simon Perkins

HI David

Correct me if I'm misinterpreting your idea, but the problem is in forcing an accurate aggregate Results.ScorePercent into the LMS as there is no way to manually manipulate it.  I've used variables to keep track of the score (in both single and duplicate banks) by for example, multiplying number of correct answers by weight, but this can't in turn be fed into Results.ScorePercent.  Sure, it displays the correct score on the results slide but there's nothing I can send to the LMS.

However, a few minutes ago I found this really cool post by the James K https://elearningenhanced.com/blog/2012/09/13/update-storyline-courses-status-lms-javascript which demonstrates how to force a completion status and score into the LMS.  I've trialled it in a demo and it works - although strangely the course window then disappears behind all other windows which might confuse some people.  Our dev guys will hopefully find a fix to that.  So all in all I now reckon I can get this working.  This is a killer find as it opens up loads of opportunities for branches completions etc.  Respect to Mr K