I made this initially for using with !delay. It pings the location of a token when given a token ID. NOTE: sendPing is bugged (And has been for 4 years..) where it will pull the GMs screen and ping the GMs pulled location, but not the players even if the "moveAll" field is set to true. If you want your players to see what this function pings you'll have to "SHIFT + Left Click" directly after your screen is moved to the specified location. on('ready',()=>{ on('chat:message',(msg)=>{ if('api' !== msg.type ) { return; } if (!state.ping_pid) state.ping_pid = "API"; if (msg.playerid !== "API") state.ping_pid = msg.playerid; else msg.playerid = state.ping_pid; var cmdName = "!ping"; var msgTxt = msg.content; if (msg.type == "api" && msgTxt.indexOf(cmdName) !== -1 && playerIsGM(msg.playerid)) { let args = msg.content.split(/\s+/); switch(args.shift().toLowerCase()){ case '!ping': { var t = findObjs({ _pageid: Campaign().get("playerpageid"), _type: "graphic", _id: args[0] }); _.each(t, function(obj) { sendPing(obj.get("left"), obj.get("top"), Campaign().get('playerpageid'), msg.playerid, true); }); } break; } } }); log("-=> Ping command loaded (!ping) <=-") }); I created this command specifically to work with the !delay script located here in the API section of the forums. If you have any questions, issues or feature suggestions please post them in this thread.