Dear all,
Hello,
I hope this message finds you well.
I have a question about the EEG triggers.
I’m creating a Cyberball task for use in ERP experiment.
The task consists of 4 players (1 participant and 3 non-participants).
I want to create two main types of Triggers.
⓵When each player throws a pass
➁When a participant (P2) is choosing who to throw a pass to.
I am currently struggling with ⓵.
In ⓵, I want to change the type of trigger depending on who throws the pass and to whom.
(For example, "P1 (or P4) threw a pass to P3" is one type.)
Therefore, I coded the following, but it does not work.
<trial npctrial>
/ ontrialbegin = [
values.received_from = values.ball_at;
values.ball_at = values.throw_to;
if (values.ball_at == 2) {
values.player2received += 1;
};
expressions.set_offsets;
values.player1state = (values.ball_at == 1) + 1;
values.player2state = (values.ball_at == 2) + 1;
values.player3state = (values.ball_at == 3) + 1;
values.player4state = (values.ball_at == 4) + 1;
values.player5state = (values.ball_at == 5) + 1;
values.player6state = (values.ball_at == 6) + 1;
values.player7state = (values.ball_at == 7) + 1;
values.player8state = (values.ball_at == 8) + 1;
values.player9state = (values.ball_at == 9) + 1;
values.throw_to = list.throwschedule.nextvalue;
values.delay = list.delayschedule.nextvalue;
if (values.throw_to == 0){
values.throw_to = list.npcs.nextindex;
values.delay = round(rand(1, 4)) * 1000;
};
while (values.throw_to == values.ball_at){
values.deprecated +=1;
values.throw_to = list.throwschedule.nextvalue;
values.delay = list.delayschedule.nextvalue;
};
]
/ ontrialend = [
values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);
values.throwcount += 1;
if (values.ball_at == 2) {
values.player2thrown += 1;
};
if (values.ball_at == 1) {
values.player1thrown += 1;
};
if (values.ball_at == 3) {
values.player3thrown += 1;
};
if (values.ball_at ==4) {
values.player4thrown += 1;
};
if (values.ball_at == 1 && values.throw_to == 3) {
port.p1p4top3(values.latncy);
port.allbitstolow(values.latency+50);
};
if (values.ball_at == 1 && values.throw_to == 4) {
port.p1p4top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
if (values.ball_at == 3 && values.throw_to == 1) {
port.p3top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
if (values.ball_at == 3 && values.throw_to == 4) {
port.p3top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
if (values.ball_at == 4 && values.throw_to == 1) {
port.p1p4top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
if (values.ball_at == 4 && values.throw_to == 3) {
port.p1p4top3(values.latncy);
port.allbitstolow(values.latency+50);
};
]
/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,
player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,
player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,
stats2, stats1, stats3, stats4]
/ inputdevice = keyboard
/ showmousecursor = false
/ validresponse = (0)
/ trialduration = values.delay
/ branch = [
return trial.throw;
]
</trial>
// handles the human player
<trial choicetime>
/ ontrialbegin = [
values.received_from = values.ball_at;
expressions.set_offsets;
values.player2received += 1;
values.player1state = 1;
//catch
values.player2state = 2;
values.player3state = 1;
values.player4state = 1;
values.player5state = 1;
values.player6state = 1;
values.player7state = 1;
values.player8state = 1;
values.player9state = 1;
values.ball_at = 2;
values.throw_to = list.throwschedule.nextvalue;
values.delay = list.delayschedule.nextvalue;
]
/ trialduration = 3000
/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,
player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,
player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,
stats2, stats1, stats3, stats4, choicetime]
/ inputdevice = keyboard
/ branch = [
return trial.player2;
]
</trial>
<trial player2>
/ ontrialbegin = [
values.received_from = values.ball_at;
expressions.set_offsets;
values.player2received += 1;
values.player1state = 1;
//catch
values.player2state = 2;
values.player3state = 1;
values.player4state = 1;
values.player5state = 1;
values.player6state = 1;
values.player7state = 1;
values.player8state = 1;
values.player9state = 1;
values.ball_at = 2;
values.throw_to = list.throwschedule.nextvalue;
values.delay = list.delayschedule.nextvalue;
]
/ ontrialend = [
values.throw_to = substring(trial.player2.response, length(trial.player2.response)-1, 1);
values.realizedThrowSchedule = concat(values.realizedThrowSchedule, values.throw_to);
values.player2thrown += 1;
values.throwcount += 1;
if (trial.player2.response == 79) {
port.p2top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
if (trial.player2.response == 81) {
port.p2top3(values.latncy);
port.allbitstolow(values.latency+50);
};
if (trial.player2.response == 80) {
port.p2top1p4(values.latncy);
port.allbitstolow(values.latency+50);
};
]
/ stimulusframes = [1=clearscreen, player1, player2, player3, player4, player5, player6, player7, player8, player9,
player1label, player2label, player3label, player4label, player5label, player6label, player7label, player8label, player9label,
player1avatar, player2avatar, player3avatar, player4avatar, player5avatar, player6avatar, player7avatar, player8avatar, player9avatar,
stats2, stats1, stats3, stats4]
/ validresponse = ("1", "3", "2", player5, player6, player7, player8, player9)
/ responsemessage = ("1", player1click, 100)
/ responsemessage = ("3", player3click, 100)
/ responsemessage = ("2", player4click, 100)
/ responsemessage = (player5, player5click, 100)
/ responsemessage = (player6, player6click, 100)
/ responsemessage = (player7, player7click, 100)
/ responsemessage = (player8, player8click, 100)
/ responsemessage = (player9, player9click, 100)
/ inputdevice = keyboard
/ branch = [
if (trial.player2.response == 79) {
values.throw_to = 1; // use assignment operator, separate statements properly
return trial.throw;
};
]
/ branch = [
if (trial.player2.response == 81) {
values.throw_to = 3; // use assignment operator, separate statements properly
return trial.throw;
};
]
/ branch = [
if (trial.player2.response == 80) {
values.throw_to = 4; // use assignment operator, separate statements properly
return trial.throw;
};
]
</trial>
<port p2top1p4>
/ items = ("10010010")
/ port = LPT1
/ subport = data
</port>
<port p3toP1P4>
/ items = ("10010100")
/ port = LPT1
/ subport = data
</port>
<port p2top3>
/ items = ("01000010")
/ port = LPT1
/ subport = data
</port>
<port p3top2>
/ items = ("00100100")
/ port = LPT1
/ subport = data
</port>
<port p1p4top1p4>
/ items = ("10011001")
/ port = LPT1
/ subport = data
</port>
<port p1p4top2>
/ items = ("00101001")
/ port = LPT1
/ subport = data
</port>
<port p1p4top3>
/ items = ("01001001")
/ port = LPT1
/ subport = data
</port>
<port choicetime>
/ items = ("11111111")
/ port = LPT1
/ subport = data
</port>
<port allbitstolow>
/ items = ("00000000")
/ port = LPT1
/ subport = data
</port>
Does anyone know why and how to resolve this?
Thank you so much!
Best,
S.T