/* Do not remove the headers from this file! see /USAGE for more info. */ // This could print a tree, but that would take effort. -- Rust //:ADMINCOMMAND //USAGE: snoops // //Displays a list of wizards currently snooping, together with their targets. // //Admin only inherit CMD; private void main() { mapping raw_data; mapping str_data = ([]); string array snoopers; if(!adminp(this_body())) { out("This command is for admins only, sorry :(\n"); return; } raw_data = SNOOP_D->get_snoop_info(); if(!sizeof(raw_data)) { out("Nobody is being snooped.\n"); return; } foreach(object snoop_ob in keys(raw_data)) { // Haha! Obfuscation rox! // This code: // 1) converts the object in the current key into a proper name // 2) converts the people that guy is snooping into a _sorted_ comma // seperated string (removing dested people by subtracting ({0}) ) // 3) stuffs 1 mapped to 2 into a mapping (str_data). str_data[capitalize(snoop_ob->query_userid())] = implode(sort_array(map(raw_data[snoop_ob]-({0}), (: capitalize($1->query_userid()) :)), 0), ", "); } snoopers = sort_array(keys(str_data), 0); foreach(string snooper in snoopers) { outf("%s: %s\n", snooper, str_data[snooper]); } }