Here's a working example: var SelectAndTarget = SelectAndTarget || (function() {
'use strict';
var HandleInput = function(msg) {
var args;
if (msg.type !== "api") {
return;
}
args = msg.content.split(" ");
switch(args[0]) {
case '!action':
switch(args[1]) {
case 'set-player':
log('setting player...');
log('msg: playerid: '+msg.playerid);
state.SelectAndTarget[msg.playerid]=msg.selected;
break;
case 'perform-action':
_.each(state.SelectAndTarget[msg.playerid], function(s){
log('Selected: '+ s._id);
});
if(args[2]) {
log('Target Attribute: '+ args[2]);
}
break;
}
break;
}
},
Initialize = function() {
if(! _.has(state, 'SelectAndTarget') ) {
state.SelectAndTarget={};
}
},
RegisterEventHandlers = function() {
on('chat:message', HandleInput);
};
return {
Initialize: Initialize,
RegisterEventHandlers: RegisterEventHandlers
};
}());
on("ready",function(){
'use strict';
SelectAndTarget.Initialize();
SelectAndTarget.RegisterEventHandlers();
}); If you make a macro with these contents: !action set-player
!action perform-action @{target|ac} It will log the selected array and the ac of the target on the second command. Hope that helps!