Hehe I am tired and not thinking clearly. So the answer to my problem is most likely very simple. I've cannot figure out why this will not work This is the who command And it only displays one person..usually the last person to log on.. (And please don't yap about my lack of CONSTANT USE :) The edited code is down around the else {} after the if (shortlist) I am pretty sure the num_can_see is what is causing this..but I am not sure... Any help is much appreciated: "format: who [minlev[-maxlev]] [-n name] [-c classlist] [-s] [-o] [-q] [-r] [-z$ ACMD(do_who) { struct descriptor_data *d; struct char_data *tch; char name_search[MAX_INPUT_LENGTH]; char imm_title[20]; char mode; size_t i; int low = 0, high = LVL_IMPL, localwho = 0, questwho = 0; int showclass = 0, short_list = 0, outlaws = 0, num_can_see = 0; int who_room = 0; skip_spaces(&argument); strcpy(buf, argument); name_search[0] = '\0'; while (*buf) { half_chop(buf, arg, buf1); if (isdigit(*arg)) { sscanf(arg, "%d-%d", &low, &high); strcpy(buf, buf1) } else if (*arg == '-') { mode = *(arg + 1); /* just in case; we destroy arg in the switch */ switch (mode) { case 'o': case 'k': outlaws = 1; strcpy(buf, buf1); break; case 'z': localwho = 1; strcpy(buf, buf1); break; case 's': short_list = 1; strcpy(buf, buf1); break; case 'q': questwho = 1; strcpy(buf, buf1); break; l half_chop(buf1, arg, buf); sscanf(arg, "%d-%d", &low, &high); break; case 'n': half_chop(buf1, name_search, buf); break; case 'r': who_room = 1; strcpy(buf, buf1); break; case 'c': half_chop(buf1, arg, buf); for (i = 0; i < strlen(arg); i++) showclass |= find_class_bitvector(arg[i]); break; default: send_to_char(WHO_FORMAT, ch); return; break; } /* end of switch */ } else { /* endif */ send_to_char(WHO_FORMAT, ch); return; } } /* end while (parser) */ send_to_char("Players\r\n-------\r\n", ch); for (d = descriptor_list; d; d = d->next) { if (d->connected) continue; if (d->original) tch = d->original; else if (!(tch = d->character)) continue; if (*name_search && str_cmp(GET_NAME(tch), name_search) && !strstr(GET_TITLE(tch), name_search)) continue; if (!CAN_SEE(ch, tch) || GET_LEVEL(tch) < low || GET_LEVEL(tch) > high) continue; if (outlaws && !PLR_FLAGGED(tch, PLR_KILLER) && !PLR_FLAGGED(tch, PLR_THIEF)) continue; if (questwho && !PRF_FLAGGED(tch, PRF_QUEST)) continue; if (localwho && world[ch->in_room].zone != world[tch->in_room].zone) continue; who_room && (tch->in_room != ch->in_room)) continue; if (showclass && !(showclass & (1 << GET_CLASS(tch)))) if (short_list) { sprintf(buf, "%s[%2d %s] %-12.12s%s%s", (GET_LEVEL(tch) >= LVL_IMMORT ? CCYEL(ch, C_SPR) : ""), GET_LEVEL(tch), CLASS_ABBR(tch), GET_NAME(tch), (GET_LEVEL(tch) >= LVL_IMMORT ? CCNRM(ch, C_SPR) : ""), ((!(++num_can_see % 4)) ? "\r\n" : "")); send_to_char(buf, ch); send_to_char("This is the short list!",ch); } else { if (GET_LEVEL(tch) < 31) { num_can_see++; sprintf(buf, "%s[%2d %s ] %s %s", (GET_LEVEL(tch) >= LVL_IMMORT ? CCYEL(ch, C_SPR) : ""), GET_LEVEL(tch), CLASS_ABBR(tch), GET_NAME(tch), GET_TITLE(tch)); } if (GET_LEVEL(tch) > 30) { num_can_see++; if (GET_LEVEL(tch) == 31) { sprintf(imm_title, " %sWizard%s ", CCRED(ch, C_SPR), CCMAG(ch, C_SPR) ); } if (GET_LEVEL(tch) == 32) { sprintf(imm_title, " %sImmortal%s ", CCGRN(ch, C_SPR), CCMAG(ch, C_SPR) ); } if (GET_LEVEL(tch) == 33) { sprintf(imm_title, "%sGreater God%s", CCBLU(ch, C_SPR), CCMAG(ch, C_SPR) ); } if (GET_LEVEL(tch) == 34) { sprintf(imm_title, "%sImplementor%s", CCCYN(ch, C_SPR), CCMAG(ch, C_SPR) ); } if (GET_LEVEL(tch) > 34) { sprintf(imm_title, "ERROR "); } sprintf(buf, "%s[%s]%s %s %s", (GET_LEVEL(tch) >= LVL_IMMORT ? CCMAG(ch, C_SPR) : ""), imm_title, CCYEL(ch, C_SPR), GET_NAME(tch), GET_TITLE(tch)); } if (GET_INVIS_LEV(tch)) sprintf(buf, "%s (i%d)", buf, GET_INVIS_LEV(tch)); else if (IS_AFFECTED(tch, AFF_INVISIBLE)) strcat(buf, " (invis)"); if (PLR_FLAGGED(tch, PLR_MAILING)) strcat(buf, " (mailing)"); else if (PLR_FLAGGED(tch, PLR_WRITING)) if (PRF_FLAGGED(tch, PRF_DEAF)) strcat(buf, " (deaf)"); if (PRF_FLAGGED(tch, PRF_NOTELL)) strcat(buf, " (notell)"); if (PRF_FLAGGED(tch, PRF_QUEST)) strcat(buf, " (quest)"); if (PLR_FLAGGED(tch, PLR_THIEF)) strcat(buf, " (THIEF)"); if (PLR_FLAGGED(tch, PLR_KILLER)) strcat(buf, " (KILLER)"); if (GET_LEVEL(tch) >= LVL_IMMORT) strcat(buf, CCNRM(ch, C_SPR)); strcat(buf, "\r\n"); send_to_char(buf, ch); } /* endif shortlist */ } /* end of for */ if (short_list && (num_can_see % 4)) send_to_char("\r\n", ch); if (num_can_see == 0) sprintf(buf, "\r\nNo-one at all!\r\n"); else if (num_can_see == 1) sprintf(buf, "\r\nOne lonely character displayed.\r\n"); else sprintf(buf, "\r\n%d characters displayed.\r\n", num_can_see); send_to_char(buf, ch); }
This archive was generated by hypermail 2b30 : 12/18/00 PST