Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void do_olevel(CHAR_DATA *ch, char *argument)
- {
- char buf[MAX_INPUT_LENGTH];
- BUFFER *buffer = new_buf();
- OBJ_DATA *obj = NULL;
- OBJ_DATA *in_obj = NULL;
- bool found = FALSE;
- int count = 0;
- int page = 1;
- int max_pages = 0;
- int per_page = 100;
- char name[MAX_INPUT_LENGTH] = "";
- int iLevel = 0;
- int iPage = 0;
- int match = 0;
- if (!argument || !*argument || strlen(argument) > MAX_INPUT_LENGTH) {
- send_to_char("Syntax: olevel [level] <name> [page]\n\r", ch);
- send_to_char(" olevel <level> [page]\n\r", ch);
- free_buf(buffer);
- return;
- }
- match = sscanf(argument, " %d %s %d ", &iLevel, name, &iPage);
- if (match == 3) {
- // We got all three valid arguments.
- } else {
- match = sscanf(argument, " %d %d ", &iLevel, &iPage);
- if (match == 2) {
- // We got our level and page.
- } else {
- match = sscanf(argument, " %d %s ", &iLevel, name);
- if (match == 2) {
- // We got level and name.
- } else {
- match = sscanf(argument, " %s %d ", name, &iPage);
- if (match == 2) {
- // We got name and page.
- } else {
- match = sscanf(argument, " %s ", name);
- if (match == 1) {
- // Only the name.
- } else {
- // Invalid input.
- send_to_char("Syntax: olevel [level] <name> [page]\n\r", ch);
- send_to_char(" olevel <level> [page]\n\r", ch);
- free_buf(buffer);
- return;
- }
- }
- }
- }
- }
- page = iPage;
- if (page < 1)
- page = 1;
- if (page > 99)
- page = 99;
- sprintf(buf, "{RObject{G Level{R Object Name Mobile Mob/Character Room "
- " Room Name{x\n\r");
- add_buf(buffer, buf);
- sprintf(buf, "{w---------------------------------------------------------------------------------------------------"
- "-----------------------{x\n\r");
- add_buf(buffer, buf);
- for (obj = object_list; obj != NULL; obj = obj->next)
- {
- if (!can_see_obj(ch, obj) || ch->level < obj->level)
- continue;
- if ((iLevel != 0 && iLevel != obj->level) || (name[0] != '\0' && !is_name(name, obj->name)))
- continue;
- count++;
- if (count <= (page - 1) * per_page)
- continue;
- if (count > page * per_page)
- break;
- found = TRUE;
- 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) &&
- !is_name(KEYSTRING, in_obj->carried_by->name) && in_obj->carried_by->in_room != NULL)
- {
- sprintf(buf, "{*[{R%5d{*] {*[{G%3d{*]{x %-30.30s {*[{R%5d{*] {x%-30.30s {*[{R%5d{*] {x%-30.30s{x\n\r",
- obj->pIndexData->vnum, obj->pIndexData->level, obj->short_descr,
- IS_NPC(in_obj->carried_by) ? in_obj->carried_by->pIndexData->vnum : 0, PERS(in_obj->carried_by, ch),
- in_obj->carried_by->in_room->vnum, in_obj->carried_by->in_room->name);
- }
- else if (in_obj->in_room != NULL && can_see_room(ch, in_obj->in_room))
- {
- sprintf(buf,
- "{*[{R%5d{*] {*[{G%3d{*]{x %-30.30s {*[{R%5d{*] "
- "{x%-30.30s{x\n\r",
- obj->pIndexData->vnum, obj->pIndexData->level, obj->short_descr, in_obj->in_room->vnum,
- in_obj->in_room->name);
- }
- else
- {
- sprintf(buf, "{*[{R%5d{*] {*[{G%3d{*]{x %-30.30s {xsomewhere\n\r", obj->pIndexData->vnum,
- obj->pIndexData->level, obj->short_descr);
- }
- add_buf(buffer, buf);
- }
- if (!found)
- {
- send_to_char("Nothing like that in heaven or earth.\n\r", ch);
- free_buf(buffer);
- return;
- }
- max_pages = (count + 99) / per_page;
- if (page > max_pages)
- {
- send_to_char("Invalid page number.\n\r", ch);
- free_buf(buffer);
- return;
- }
- sprintf(buf, "\n\rPage %d/%d\n\r", page, max_pages);
- add_buf(buffer, buf);
- page_to_char(buf_string(buffer), ch);
- free_buf(buffer);
- }
Advertisement
Add Comment
Please, Sign In to add comment