/* Inventory checker made by Funtime to periodically check players inventories 17/5/1994 */ #define SAVE_FILE "/d/admin/log/" string *paths, *cloned_by; int *times; mapping illegal; void dest_me() { destruct(this_object()); } void create() { illegal = ([ ]); paths = ({ }); cloned_by = ({ }); } void log_file() { int p; string *person, *filename; filename=m_indices(illegal); person=values(illegal); if(sizeof(illegal)>0) { unguarded((: write_file, SAVE_FILE+"illegal.txt", "\nSearch carried out on "+ctime(time())+" from here.\n" :)); for(p=0;p<sizeof(illegal);p++) { unguarded((: write_file, SAVE_FILE+"illegal.txt", filename[p]+" - on player "+person[p]+" - cloned by "+ cloned_by[p]+"\n" :)); } } } void check_sub_inv(object *things, object owner) { int q, r, check; string *pre_filename, filename, *switcher; mixed info; for(q=0;q<sizeof(things);q++) { pre_filename=explode(file_name(things[q]),"#"); filename=pre_filename[0]; switcher=explode(filename,"/"); if( (switcher[0]=="w") && (!owner->query_creator() ) ) { illegal=illegal+([filename:owner->query_name()]); /* Find out who the object was cloned by */ info = things[q]->stats(); for(r=0; r<sizeof(info);r++) { if(info[r][0] == "cloned by") { cloned_by = cloned_by + ({ info[r][1] }); } } /* Remove comment here if you want it dested. */ destruct(things[q]); /* things[q]->dest_me(); */ } if ( (!owner->query_creator()) && (sizeof(switcher)>2) && (switcher[0]=="obj") && (switcher[1]=="misc") ) { /* Remove comment here if you want it dested. */ switch(switcher[2]){ case "mailer_ob": case "board_mas": info = things[q]->stats(); for(r=0; r<sizeof(info);r++) { if(info[r][0] == "cloned by") { cloned_by = cloned_by + ({ info[r][1] }); } } illegal=illegal+([filename:owner->query_name()]); destruct(things[q]); break; } } } } void check_inv(object player) { int q; object *things, *contents, owner; things=deep_inventory(player); owner=player; check_sub_inv(things, player); } do_seek() { int p; object *everyone_on; seteuid("Admin"); everyone_on = users(); for(p=0;p<sizeof(everyone_on);p++) { check_inv(everyone_on[p]); } log_file(); return 1; }