Copy link to clipboard
Copied
We have several SCORM packages that are not scored - strictly informational. However, when our learners complete the SCO they are upset to see a score of 0. We're using Captivate 8 to publish as a SCORM 2004 package, and have the Completion criteria set to 100% slide views, and the Success criteria is not selected. After playing with all of the possible options, we have decided that the only way to prevent Captivate from sending the score is to hack the code in the .js files. We've tried this with the SCORM_utilities.js file and the scormdriver.js file, but Captivate still sends a score shortly after initializing the SCORM API. From the debug logs: SetValue('cmi.score.raw', '0') returned 'true' in 0 seconds
We have tested SCORM packages using SmartBuilder and can prevent the LMS from showing a score, but Captivate doesn't have the reporting flexibility that SmartBuilder offers. Is there a way to prevent Captivate from sending a score?
Copy link to clipboard
Copied
You could try adding the bolded statement in the scormdriver.js to the noted function:
function SCORM2004_SetScore(intScore, intMaxScore, intMinScore)
{
return true;
var blnResult;
var fltNormalizedScore;
WriteToDebug("In SCORM2004_SetScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore);
SCORM2004_ClearErrorInfo();
fltNormalizedScore = intScore / 100;
RoundToPrecision(fltNormalizedScore, 7);
blnResult = SCORM2004_CallSetValue("cmi.score.raw", intScore);
blnResult = SCORM2004_CallSetValue("cmi.score.max", intMaxScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.min", intMinScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.scaled", fltNormalizedScore) && blnResult;
WriteToDebug("Returning " + blnResult);
return blnResult;
}
Copy link to clipboard
Copied
Thanks TLCMedia, but that didn't work. It's still sending a score of 0 to the LMS.
Copy link to clipboard
Copied
There are 2 functions that can set a score. If you set the score to 100 would that be OK?
function SCORM2004_SetScore(intScore, intMaxScore, intMinScore)
{
intScore = 100;
var blnResult;
var fltNormalizedScore;
WriteToDebug("In SCORM2004_SetScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore);
SCORM2004_ClearErrorInfo();
fltNormalizedScore = intScore / 100;
RoundToPrecision(fltNormalizedScore, 7);
blnResult = SCORM2004_CallSetValue("cmi.score.raw", intScore);
blnResult = SCORM2004_CallSetValue("cmi.score.max", intMaxScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.min", intMinScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.scaled", fltNormalizedScore) && blnResult;
WriteToDebug("Returning " + blnResult);
return blnResult;
}
and
function SCORM2004_SetPointBasedScore(intScore, intMaxScore, intMinScore)
{
intScore = 100;
var blnResult;
var fltCalculatedScore;
WriteToDebug("In SCORM2004_SetPointBasedScore intScore=" + intScore + ", intMaxScore=" + intMaxScore + ", intMinScore=" + intMinScore);
SCORM2004_ClearErrorInfo();
if (intScore >= intMinScore)
{
fltCalculatedScore = intScore / intMaxScore;
}
else
{
WriteToDebug("intScore is lower than intMinScore. Overriding score with minscore for cmi.score.scaled");
fltCalculatedScore = intMinScore / intMaxScore;
}
fltCalculatedScore = RoundToPrecision(fltCalculatedScore, 7);
blnResult = SCORM2004_CallSetValue("cmi.score.raw", intScore);
blnResult = SCORM2004_CallSetValue("cmi.score.max", intMaxScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.min", intMinScore) && blnResult;
blnResult = SCORM2004_CallSetValue("cmi.score.scaled", fltCalculatedScore) && blnResult;
WriteToDebug("Returning " + blnResult);
return blnResult;
}