From: "Erwin S. Andreasen" <erwin@pip.dknet.dk> /* Switch into another (perhaps live player) and execute a command, then switch back */ void do_doas (CHAR_DATA *ch, char *argument, void *target) { CHAR_DATA *vic = target; DESCRIPTOR_DATA *orig; orig = vic->desc; vic->desc = ch->desc; ch->desc = NULL; interpret (vic, argument); ch->desc = vic->desc; vic->desc = orig; } The target and trust check is done by interpret, so you'll have to add that part yourself. Anyway, it is that simply as setting victim's desc to be yours, and executing the command with the victim. If you want some privacy checks, you could do something like: const char *allowed_commands = "score inv"; one_argument(argument, command); if (!is_full_name(command, allowed_commands)) cprintf(ch, "You can only execute following commands: %s.\n", allowed_commands); else { /* ok */ } There are some minor things you need to check for, like that the "quit" command is not executed (in that case, the ch->desc may not be valid). ============================================================================== Erwin Andreasen Herlev, Denmark <erwin@pip.dknet.dk> UNIX System Programmer <URL:http://pip.dknet.dk/~erwin/> <*> (not speaking for) DDE ==============================================================================