Here is a tiny script i made to help my players. I have a lot of scripts that reads attributes and so on from a character sheet, and if they would forget to pick the character in the dropdown it would fuss at them...and Id have to remind them. I tried simply doing findObjs({type: 'character',controlledby: msg.playerid})[0]; but that got troublesome when trying to send as the GM or any random NPC in some of the scripts, plus the chat text would still use their out of game name from the dropdown, vs character name. So I made this. This looks up the first character it finds assigned to them if they aren't already 'in character', and makes it use that name and character sheet if they dont have one selected in the dropdown. Say Bob had a character called "David Tinyfeet". Even if hes selected Bob in the dropdown it will go "Thats not a character and he's not a GM, use his msg.playerid and find the one assigned to him" and then run the script as if he had "David Tinyfeet" selected. It will also make msg.who the characters name, so any reference to it wont be "Bob" but the actual character. It takes into account if you're a GM, and doesn't replace your name with whatever NPC it first finds assigned to you, it leaves it as your GM name if you have it selected. It only runs on API syntaxed commands so they can still chat out of character, but forces any commands to be done in character. In any other scripts you want to use it in, just call the function TalkRight(msg.playerid) and set msg.who to it. on('chat:message', function(msg) { var command = msg.content.split(" ", 1); if(msg.type != "api" && command != "!something") return; var cWho = findObjs({_type: 'character',name: msg.who})[0]; if(cWho === undefined && !playerIsGM(msg.playerid)) { cWho = TalkRight(msg.playerid); msg.who = cWho.get("name"); } //----do code here---- }); //Character Find Function function TalkRight(whoPC) { var character = findObjs({type: 'character',controlledby: whoPC})[0]; return character; }