From: "Omar Yehia" <omar@physio.mcgill.ca> These two functions are needed by every immortal, use them wisely :) Lordrom ---------------------------------------------------------------------- /* * Originally written by LordRom (omar@physio.mcgill.ca) * Revised by Kyoung (uyunk00@mcl.ucsb.edu) */ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include "merc.h" #include "recycle.h" #include "tables.h" #include "lookup.h" void do_olevel(CHAR_DATA *ch, char *argument) { char buf[MAX_INPUT_LENGTH]; char level[MAX_INPUT_LENGTH]; char name[MAX_INPUT_LENGTH]; BUFFER *buffer; OBJ_DATA *obj; OBJ_DATA *in_obj; bool found; int number = 0, max_found; found = FALSE; number = 0; max_found = 200; buffer = new_buf(); argument = one_argument(argument, level); if (level[0] == '\0') { send_to_char("Syntax: olevel <level>\n\r",ch); send_to_char(" olevel <level> <name>\n\r",ch); return; } argument = one_argument(argument, name); for ( obj = object_list; obj != NULL; obj = obj->next ) { if ( obj->level != atoi(level) ) continue; if ( name[0] != '\0' && !is_name(name, obj->name) ) continue; found = TRUE; number++; for ( in_obj = obj; in_obj->in_obj != NULL; in_obj = in_obj->in_obj ); if ( in_obj->carried_by != NULL && can_see(ch,in_obj->carried_by) && in_obj->carried_by->in_room != NULL) sprintf( buf, "%3d) %s is carried by %s [Room %d]\n\r", number, obj->short_descr,PERS(in_obj->carried_by, ch), in_obj->carried_by->in_room->vnum ); else if (in_obj->in_room != NULL && can_see_room(ch,in_obj->in_room)) sprintf( buf, "%3d) %s is in %s [Room %d]\n\r", number, obj->short_descr,in_obj->in_room->name, in_obj->in_room->vnum); else sprintf( buf, "%3d) %s is somewhere\n\r",number, obj->short_descr); buf[0] = UPPER(buf[0]); add_buf(buffer,buf); if (number >= max_found) break; } if ( !found ) send_to_char( "Nothing like that in heaven or earth.\n\r", ch ); else page_to_char(buf_string(buffer),ch); free_buf(buffer); } void do_mlevel( CHAR_DATA *ch, char *argument ) { char buf[MAX_INPUT_LENGTH]; BUFFER *buffer; CHAR_DATA *victim; bool found; int count = 0; if ( argument[0] == '\0' ) { send_to_char("Syntax: mlevel <level>\n\r",ch); return; } found = FALSE; buffer = new_buf(); for ( victim = char_list; victim != NULL; victim = victim->next ) { if ( victim->in_room != NULL && atoi(argument) == victim->level ) { found = TRUE; count++; sprintf( buf, "%3d) [%5d] %-28s [%5d] %s\n\r", count, IS_NPC(victim) ? victim->pIndexData->vnum : 0, IS_NPC(victim) ? victim->short_descr : victim->name, victim->in_room->vnum, victim->in_room->name ); add_buf(buffer,buf); } } if ( !found ) act( "You didn't find any mob of level $T.", ch, NULL, argument, TO_CHAR ); else page_to_char(buf_string(buffer),ch); free_buf(buffer); return; }