Millisecond Forums

Ospan error

https://forums.millisecond.com/Topic28598.aspx

By MilanSchoenmaeckers - 3/23/2020

Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!
By Dave - 3/23/2020

MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.
By MilanSchoenmaeckers - 3/23/2020

Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.

So I can see in my data that the participant was stuck in block 11. This is the PracBoth_Acting block. I think that the mistake is that I am not using a specified letter trial for this block, as is used in the PracBoth block. In my PracBoth_Acting block, I am using the same letter trial that is used in the next Acting block. 
So my guess is that I have to make a letter trial that is only designed for the PracBoth_Acting block, just like I made one for the PracBoth block.

This branch is used in the show_letter_practice trial for the PracBoth block.
/ branch = [if(script.currentblock=="PracLetter")trial.show_letter_practice else trial.InitMathProblem01]

This branch is used in the Acting block, but I am also using it for the PracBoth_Acting block. 
/ branch = [if(values.lettercount==values.currentsetsize)trial.recall_letter_acting]

Is there anyway that I can check this, because when I run the script there appears to be no loop, whilst my participants do experience this?
By Dave - 3/23/2020

MilanSchoenmaeckers - 3/23/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.

So I can see in my data that the participant was stuck in block 11. This is the PracBoth_Acting block. I think that the mistake is that I am not using a specified letter trial for this block, as is used in the PracBoth block. In my PracBoth_Acting block, I am using the same letter trial that is used in the next Acting block. 
So my guess is that I have to make a letter trial that is only designed for the PracBoth_Acting block, just like I made one for the PracBoth block.

This branch is used in the show_letter_practice trial for the PracBoth block.
/ branch = [if(script.currentblock=="PracLetter")trial.show_letter_practice else trial.InitMathProblem01]

This branch is used in the Acting block, but I am also using it for the PracBoth_Acting block. 
/ branch = [if(values.lettercount==values.currentsetsize)trial.recall_letter_acting]

Is there anyway that I can check this, because when I run the script there appears to be no loop, whilst my participants do experience this?

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter.response!="exit" && trial.recall_letter.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter]
/ recorddata = false
</trial>

is wrong and you likely have several other mistakes along the same lines in your script. Double-check everything.

By MilanSchoenmaeckers - 3/23/2020

Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.

So I can see in my data that the participant was stuck in block 11. This is the PracBoth_Acting block. I think that the mistake is that I am not using a specified letter trial for this block, as is used in the PracBoth block. In my PracBoth_Acting block, I am using the same letter trial that is used in the next Acting block. 
So my guess is that I have to make a letter trial that is only designed for the PracBoth_Acting block, just like I made one for the PracBoth block.

This branch is used in the show_letter_practice trial for the PracBoth block.
/ branch = [if(script.currentblock=="PracLetter")trial.show_letter_practice else trial.InitMathProblem01]

This branch is used in the Acting block, but I am also using it for the PracBoth_Acting block. 
/ branch = [if(values.lettercount==values.currentsetsize)trial.recall_letter_acting]

Is there anyway that I can check this, because when I run the script there appears to be no loop, whilst my participants do experience this?

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter.response!="exit" && trial.recall_letter.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter]
/ recorddata = false
</trial>

is wrong and you likely have several other mistakes along the same lines in your script. Double-check everything.


You were right!

I've changed it up to this:

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter_acting.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter_acting]
/ recorddata = true
</trial>

However, the problem is that when I run thin recall_letter_acting, participants cannot click any of the letters. Only the exit button works. I copy pasted this recall_letter_acting from the already existing and working recall_letter. So where should I look for in the script to change this issues?
By MilanSchoenmaeckers - 3/23/2020

MilanSchoenmaeckers - 3/24/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.

So I can see in my data that the participant was stuck in block 11. This is the PracBoth_Acting block. I think that the mistake is that I am not using a specified letter trial for this block, as is used in the PracBoth block. In my PracBoth_Acting block, I am using the same letter trial that is used in the next Acting block. 
So my guess is that I have to make a letter trial that is only designed for the PracBoth_Acting block, just like I made one for the PracBoth block.

This branch is used in the show_letter_practice trial for the PracBoth block.
/ branch = [if(script.currentblock=="PracLetter")trial.show_letter_practice else trial.InitMathProblem01]

This branch is used in the Acting block, but I am also using it for the PracBoth_Acting block. 
/ branch = [if(values.lettercount==values.currentsetsize)trial.recall_letter_acting]

Is there anyway that I can check this, because when I run the script there appears to be no loop, whilst my participants do experience this?

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter.response!="exit" && trial.recall_letter.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter]
/ recorddata = false
</trial>

is wrong and you likely have several other mistakes along the same lines in your script. Double-check everything.


You were right!

I've changed it up to this:

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter_acting.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter_acting]
/ recorddata = true
</trial>

However, the problem is that when I run thin recall_letter_acting, participants cannot click any of the letters. Only the exit button works. I copy pasted this recall_letter_acting from the already existing and working recall_letter. So where should I look for in the script to change this issues?

Immediately after posting this I saw that I didn't update the following line correctly:

/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
  {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]

I updated it to this:
/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
  {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter_acting.response)}]

Now the trial works like it should work.

Is there a way to check (besides asking the participants when they are doing it) whether participants still get into the loop? Because when I run the script now, everything works fine and there appears to be no loop?
By MilanSchoenmaeckers - 3/24/2020

MilanSchoenmaeckers - 3/24/2020
MilanSchoenmaeckers - 3/24/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Dave - 3/23/2020
MilanSchoenmaeckers - 3/23/2020
Hi, 

I have started collecting my data but unfortunately, some of my participants end up in an endless loop. When I, however, run the script with the default monkey, everything works fine. 
Does this have something do to with the online version of the webscript, or have I simply overlooked some error in my script?

The block that I am referring to is the following:

<block PracBoth_Acting>
/ onblockbegin = [if(script.subjectid!="debug")
    {text.currentsetsize.textcolor=white; text.letterstrings.textcolor=white;
    text.mathdebug.textcolor=silver; text.mathtimeout.textcolor=silver;
    text.scoredebug.textcolor=white}]
/ onblockbegin = [text.MathFeedback.textcolor=black; text.MathScore.textcolor=red]
/ onblockbegin = [values.mathcurrenterrors=0; values.mathaccuracy=0; values.mathaccerrors=0;
    values.mathtotalerrors=0; values.mathspeederrors=0; values.mathproblemcount=0;
    values.lettercount=0; values.correctletters=0; values.currentsetsize=0;
    values.recallcount=0; values.recalledletters=""; values.totalrecalledsets=0;
    values.totalcorrectletters=0; values.ospan=0]
/ stop = [values.stopblock==1]
/ onblockend = [values.stopblock=0]
/ trials = [1=instructions_practice_acting; 2=InitSetSize]
</block>

<list PracBothSetSize_Acting>
/ items = (2,2,2)
/ selectionmode = sequence
/ selectionrate = trial
</list>

Any help is much appreciated!

It has nothing to do with online vs offline. There's a mistake lurking somewhere.

Take a data set from one of the participants that ended up in the endless loop and that should tell you where / what to look for.

So I can see in my data that the participant was stuck in block 11. This is the PracBoth_Acting block. I think that the mistake is that I am not using a specified letter trial for this block, as is used in the PracBoth block. In my PracBoth_Acting block, I am using the same letter trial that is used in the next Acting block. 
So my guess is that I have to make a letter trial that is only designed for the PracBoth_Acting block, just like I made one for the PracBoth block.

This branch is used in the show_letter_practice trial for the PracBoth block.
/ branch = [if(script.currentblock=="PracLetter")trial.show_letter_practice else trial.InitMathProblem01]

This branch is used in the Acting block, but I am also using it for the PracBoth_Acting block. 
/ branch = [if(values.lettercount==values.currentsetsize)trial.recall_letter_acting]

Is there anyway that I can check this, because when I run the script there appears to be no loop, whilst my participants do experience this?

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter.response!="exit" && trial.recall_letter.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter]
/ recorddata = false
</trial>

is wrong and you likely have several other mistakes along the same lines in your script. Double-check everything.


You were right!

I've changed it up to this:

<trial recall_letter_acting>
/ ontrialbegin = [values.recallcount+=1]
/ ontrialbegin = [if(values.recallcount==1)values.recalldelay=500 else values.recalldelay=0]
/ pretrialpause = values.recalldelay
/ stimulusframes = [1=WhiteScreen, F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit, recalledletters, recallprompt, letterstrings]
/ validresponse = (F, H, J, K, L, N, P, Q, R, S, T, Y, _, clear, exit)
/ monkeyresponse = ("F", "H", "J", "K", "exit")
/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
    {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]
/ ontrialend = [if(trial.recall_letter_acting.response=="clear")
    {clear(item.RecalledLetters); values.recalledletters=""}]
/ responsemessage = (F, clickF, 150)
/ responsemessage = (H, clickH, 150)
/ responsemessage = (J, clickJ, 150)
/ responsemessage = (K, clickK, 150)
/ responsemessage = (L, clickL, 150)
/ responsemessage = (N, clickN, 150)
/ responsemessage = (P, clickP, 150)
/ responsemessage = (Q, clickQ, 150)
/ responsemessage = (R, clickR, 150)
/ responsemessage = (S, clickS, 150)
/ responsemessage = (T, clickT, 150)
/ responsemessage = (Y, clickY, 150)
/ responsemessage = (clear, clickclear, 150)
/ responsemessage = (exit, clickexit, 150)
/ responsemessage = (_, click_, 150)
/ branch = [if(trial.recall_letter_acting.response=="exit")trial.letter_feedback_acting else trial.recall_letter_acting]
/ recorddata = true
</trial>

However, the problem is that when I run thin recall_letter_acting, participants cannot click any of the letters. Only the exit button works. I copy pasted this recall_letter_acting from the already existing and working recall_letter. So where should I look for in the script to change this issues?

Immediately after posting this I saw that I didn't update the following line correctly:

/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
  {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter.response)}]

I updated it to this:
/ ontrialend = [if(trial.recall_letter_acting.response!="exit" && trial.recall_letter_acting.response!="clear")
  {item.RecalledLetters.item=trial.recall_letter_acting.response; values.recalledletters=concat(values.recalledletters, trial.recall_letter_acting.response)}]

Now the trial works like it should work.

Is there a way to check (besides asking the participants when they are doing it) whether participants still get into the loop? Because when I run the script now, everything works fine and there appears to be no loop?

The problem has been resolved. Thanks again for your input!