#include <sys/types.h> #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "emlen.h" void do_commands (CHAR_DATA * ch, char *argy) { int h; COMMAND *c; int sz = 0; char tt[500]; char arg[500]; int col = 1; int minlev = -1; int maxlev = 110; DEFINE_COMMAND ("commands", do_commands, POSITION_DEAD, 0, LOG_NORMAL, "Help on commands, or a command list.") argy = one_argy (argy, arg); if (is_number (arg)) { minlev = atoi (arg); } if (argy[0] == '\0' && !is_number (arg)) argy = arg; else if (is_number (argy)) { maxlev = atoi (argy); argy[0] = '\0'; } hugebuf_o[0] = '\0'; if (argy[0] == '\0') { for (h = 0; h < 256; h++) { for (c = command_hash[h]; c != NULL; c = c->next) { if (LEVEL (ch) < c->level) continue; if (c->level < minlev) continue; if (c->level > maxlev) continue; if (col == 4) { col = 1; sprintf (hugebuf_o + sz, "\n\r"); sz += 2; } sprintf (tt, "%-20s", c->name); sprintf (hugebuf_o + sz, "%s", tt); sz += strlen (tt); col++; } } sprintf (hugebuf_o + sz, "\n\r"); page_to_char (hugebuf_o, ch); return; } for (c = command_hash[UPPER (argy[0])]; c != NULL; c = c->next) { if (LEVEL (ch) < c->level) continue; if (!str_prefix (argy, c->name)) { int pp = ch->position; ch->position = POSITION_STANDING; sprintf (tt, "\x1B[32;1m\"%s\"\x1B[34;1m\n\r", c->name); send_to_char (tt, ch); send_to_char ("------------------------------------------------------------------------------\x1B[37;1m\n\r", ch); sprintf (tt, "%s", c->help); act (tt, ch, NULL, ch, TO_CHAR); send_to_char ("\x1B[34;1m------------------------------------------------------------------------------\x1B[37;0m\n\r", ch); ch->position = pp; return; } } send_to_char ("Command not found.\n\r", ch); return; } void do_socials (CHAR_DATA * ch, char *argy) { char buf[STD_LENGTH]; int iSocial; SOCIAL *s; int col; DEFINE_COMMAND ("socials", do_socials, POSITION_DEAD, 0, LOG_NORMAL, "This command shows all socials currently in the database.") col = 0; for (s = social_list; s != NULL; s = s->next) { /*for ( iSocial = 0; social_table[iSocial].name[0] != '\0'; iSocial++ ) { */ sprintf (buf, "%-12s", s->name); send_to_char (buf, ch); if (++col % 6 == 0) send_to_char ("\n\r", ch); } if (col % 6 != 0) send_to_char ("\n\r", ch); return; }