__________________________SNIP_____________________________________________ /* ************************************************************************ Modified by: Whitedemon Original Code By: Stormrider <stormrider@hotmail.com> Subject: Olist/Rlist/Mlist/Zlist ************************************************************************** */ I made no change to the original code (didn't see a need to) i just added in a new command. So all credits to the original coder. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ You'll want to define three SCMDs in interpreter.h, as in: #define SCMD_OLIST 0 #define SCMD_MLIST 1 #define SCMD_RLIST 2 #define SCMD_ZLIST 3 And don't forget to fix interpreter.c, with the solo ACMD(do_liblist); and { "mlist" , POS_DEAD, do_liblist, LVL_*whatever*, SCMD_MLIST }, { "olist" , POS_DEAD, do_liblist, LVL_*whatever*, SCMD_OLIST }, { "rlist" , POS_DEAD, do_liblist, LVL_*whatever*, SCMD_RLIST }, { "zlist" , POS_DEAD, do_liblist, LVL_*whatever*, SCMD_ZLIST }, ACMD(do_liblist) { extern struct room_data *world; extern struct index_data *mob_index; extern struct char_data *mob_proto; extern struct index_data *obj_index; extern struct obj_data *obj_proto; extern struct zone_data *zone_table extern int top_of_objt; extern int top_of_mobt; extern int top_of_world; int first, last, nr, found = 0; two_arguments(argument, buf, buf2); if (!*buf || !*buf2) { switch (subcmd) { case SCMD_RLIST: send_to_char("Usage: rlist <begining number> <ending number>\r\n", ch); break; case SCMD_OLIST: send_to_char("Usage: olist <begining number> <ending number>\r\n", ch); break; case SCMD_MLIST: send_to_char("Usage: mlist <begining number> <ending number>\r\n", ch); break; case SCMD_ZLIST: send_to_char("Usage: zlist <begining number> <ending number>\r\n", ch); break; default: sprintf(buf, "SYSERR:: invalid SCMD passed to ACMDdo_build_list!"); mudlog(buf, BRF, LVL_GOD, TRUE); break; } return; } first = atoi(buf); last = atoi(buf2); if ((first < 0) || (first > 99999) || (last < 0) || (last > 99999)) { send_to_char("Values must be between 0 and 99999.\n\r", ch); return; } if (first >= last) { send_to_char("Second value must be greater than first.\n\r", ch); return; } switch (subcmd) { case SCMD_RLIST: sprintf(buf, "Room List From Vnum %d to %d\r\n", first, last); for (nr = 0; nr <= top_of_world && (world[nr].number <= last); nr++) { if (world[nr].number >= first) { sprintf(buf, "%s%5d. [%5d] (%3d) %s\r\n", buf, ++found, world[nr].number, world[nr].zone, world[nr].name); } } break; case SCMD_OLIST: sprintf(buf, "Object List From Vnum %d to %d\r\n", first, last); for (nr = 0; nr <= top_of_objt && (obj_index[nr].virtual <= last); nr++) { if (obj_index[nr].virtual >= first) { sprintf(buf, "%s%5d. [%5d] %s\r\n", buf, ++found, obj_index[nr].virtual, obj_proto[nr].short_description); } } break; case SCMD_MLIST: sprintf(buf, "Mob List From Vnum %d to %d\r\n", first, last); for (nr = 0; nr <= top_of_mobt && (mob_index[nr].virtual <= last); nr++) { if (mob_index[nr].virtual >= first) { sprintf(buf, "%s%5d. [%5d] %s\r\n", buf, ++found, mob_index[nr].virtual, mob_proto[nr].player.short_descr); } } break; case SCMD_ZLIST: sprintf(buf, "Zone List From Vnum %d to %d\r\n", first, last); for (nr = 0; nr <= top_of_zone_table && (zone_table[nr].number <= last); nr++) { if (zone_table[nr].number >= first) { sprintf(buf, "%s%5d. [%5d] (%3d) %s\r\n", buf, ++found, zone_table[nr].number, zone_table[nr]..lifespan, zone_table[nr].name); } } break; default: sprintf(buf, "SYSERR:: invalid SCMD passed to ACMDdo_build_list!"); mudlog(buf, BRF, LVL_GOD, TRUE); return; } if (!found) { switch (subcmd) { case SCMD_RLIST: send_to_char("No rooms found within those parameters.\r\n", ch); break; case SCMD_OLIST: send_to_char("No objects found within those parameters.\r\n", ch); break; case SCMD_MLIST: send_to_char("No mobiles found within those parameters.\r\n", ch); break; case SCMD_ZLIST: send_to_char("No zones found within those parameters.\r\n", ch); break; default: sprintf(buf, "SYSERR:: invalid SCMD passed to do_build_list!"); mudlog(buf, BRF, LVL_GOD, TRUE); break; } return; } page_string(ch->desc, buf, 1); } ----------------------------------------------------SNIP Sorry for the spamm! +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST