#include <unistd.h> #include <stdlib.h> #include <time.h> #include "kernel.h" #include "locations.h" #include "objects.h" #include "mobiles.h" #include "sflags.h" #include "pflags.h" #include "oflags.h" #include "lflags.h" #include "cflags.h" #include "quests.h" #include "sendsys.h" #include "levels.h" #include "commands.h" #include "rooms.h" #include "objsys.h" #include "mobile.h" #include "flags.h" #include "bprintf.h" #include "parse.h" #include "uaf.h" #include "clone.h" #include "mud.h" #include "coders.h" #include "timing.h" /* This command shows a list of Mortal Users, and their stats */ void muserscom() { char wiznam[128], idlebuff[64]; int a[max_players], a_len=0, i, j; time_t now; for (i=0; i<max_players; i++) if (is_in_game(i) && (!pvis(i) || pvis(i) <= plev(mynum) || i == mynum) && plev(i) < LVL_WIZARD && !strncasecmp(pname(i), item1, strlen(item1))) a[a_len++] = i; qsort(a, a_len, sizeof(int), cmp_player); if (!a_len) { if (EMPTY(item1)) bprintf("&+cThere are no mortals currently on the game.\n"); else bprintf("&+cThere are no mortals on that match that pattern.\n"); return; } if (plev(mynum)<LVL_WIZARD) bprintf ("&+CName Level Idle\n" "&+g---------------------------------------\n"); else bprintf ("&+CName Sex Level Location " "Strength Mana Status Idle\n" "&+g---------------------------------------" "----------------------------------------\n"); time (&now); for (j = 0; j < a_len ; ++j) { i = a[j]; if (plev(mynum) >= LVL_WIZARD) sprintf(wiznam, " %s", showname(ploc(i))); if (plev(mynum) < LVL_WIZARD) bprintf ("&+Y%-*s&+W%-15s", PNAME_LEN+3, pname(i), tlookup (pname(i), coders) != -1 ? "Coder" : player_level(i)); else bprintf("&+Y%-13s%-8s&+W%-12s&+B%-15s%s%3d&+y/&+Y%-5d%s%3d&+y/&+Y%-4d&+c%-9s", pname(i), psex(i) ? "&+MF" : "&+yM", tlookup(pname(i), coders) != -1 ? "Coder": player_level(i),wiznam, pstr(i) < maxstrength(i) ? "&+m" : "&+Y", pstr(i), maxstrength(i), pmagic(i) < maxmagic(i) ? "&+m" : "&+Y", pmagic(i), maxmagic(i), pfighting(i) != -1 ? "&+Rfighting&N " : psitting(i) ? "sitting" : "standing"); if (ptstflg (mynum, PFL_SEEIDLE)) strcpy (idlebuff, (char *) sec_to_hhmmss (global_clock - prlast_cmd (i))); else strcpy (idlebuff, (char *) sec_to_hhmmss (global_clock - plast_cmd (i))); bprintf ("&+R%s\n", idlebuff); } if (plev(mynum) < LVL_WIZARD) bprintf ("&+g---------------------------------------\n"); else bprintf ("&+g---------------------------------------" "----------------------------------------\n"); if (EMPTY(item1)) bprintf ("&+cThere %s &+C%d&+c mortal%s currently on the game.\n", (a_len == 1 ? "is" : "are"), a_len, (a_len == 1 ? "" : "s")); else bprintf ("&+cThere %s &+C%d&+c mortal%s on that match that pattern.\n", (a_len == 1 ? "is" : "are"), a_len, (a_len == 1 ? "" : "s")); } /* This command shows a list of Immortal Users, and their stats */ void iuserscom() { char wiznam[128], buff[128], vis[128]; int a[max_players], a_len=0, i, j; time_t now; char level[128]; for (i = 0; i < max_players; i++) if (is_in_game(i) && (!pvis(i) || pvis(i) <= plev(mynum) || i == mynum) && plev(i) >= LVL_WIZARD && !strncasecmp(pname(i), item1, strlen(item1))) a[a_len++] = i; qsort(a, a_len, sizeof(int), cmp_player); if (!a_len) { if (EMPTY(item1)) bprintf("&+cThere are no immortals currently on the game.\n"); else bprintf("&+cThere are no immortals on that match that pattern.\n"); return; } if (plev(mynum) < LVL_WIZARD) { bprintf ("&+CName Level Idle\n"); bprintf ("&+g---------------------------------------\n"); } else { bprintf ("&+CName Level Location " "Visibility Status Idle\n"); bprintf ("&+g---------------------------------------" "---------------------------------------\n"); } time (&now); for (j = 0; i = a[j], j < a_len ; ++j) { if (plev(mynum) >= LVL_WIZARD) sprintf (wiznam, " %s", showname(ploc(i))); if (tlookup (pname(i), coders) != -1) strcpy( level, "Coder"); else { strcpy(level, player_level(i)); } if (pvis(i) < LVL_WIZARD) sprintf (vis, "%d", pvis(i)); else { sprintf (vis, "%d (%s)", pvis(i), psex(i) ? FWizLevels[wlevel (pvis (i))] : MWizLevels[wlevel (pvis (i))] ); } if (plev(mynum)<LVL_WIZARD) bprintf ("&+Y%-*s&+W%-15s", PNAME_LEN+3, pname(i), level); else bprintf ("&+Y%-*s&+W%-12s&+B%-15s&+G%-19s&+c%-10s", PNAME_LEN+1, pname(i), level, wiznam, vis, pfighting(i) != -1 ? "&+Rfighting&N" : psitting(i) ? "sitting" : "standing"); if (ptstflg (mynum, PFL_SEEIDLE)) strcpy (buff, (char *) sec_to_hhmmss (global_clock - prlast_cmd (i))); else strcpy (buff, (char *) sec_to_hhmmss (global_clock - plast_cmd (i))); bprintf( "&+R%s\n", buff ); } if (plev(mynum) < LVL_WIZARD) bprintf ("&+g---------------------------------------\n"); else bprintf ("&+g---------------------------------------" "---------------------------------------\n"); if (a_len) { if (EMPTY(item1)) bprintf ("&+cThere %s &+C%d&+c immortal%s currently on the game.\n", (a_len == 1 ? "is" : "are"), a_len, (a_len == 1 ? "" : "s")); else bprintf ("&+cThere %s &+C%d&+c immortal%s on that match that pattern.\n", (a_len == 1 ? "is" : "are"), a_len, (a_len == 1 ? "" : "s")); } }