/********************************************************************** * aide menu * Access to this menu is restricted to those with aide status. * Wizards can do everything * System Aides can do all but aideify * Room Aides can only get here if it's their room and they can * NOT do <A>ideify <C>reateroom <Z>ap room. **********************************************************************/ void aide_menu(void) { register int chr = '?'; /* Can't get here unless you're at least a room aide for this room */ while (chr != 'M' && chr != ' ' && chr != '\n') { switch (chr) { case 'C': printf("Create new forum\n"); createroom(); loadroom(); break; case 'D': printf("Edit forum description\n\n"); editdesc(); break; case 'E': printf("Edit forum\n"); editroom(); break; case 'H': printf("Help!\n"); if (ouruser->f_admin) help("aidemenu", YES); else help("fmmenu", YES); break; case 'I': printf("Invite user\n"); invite(); break; case 'K': printf("Kick out user\n"); kickout(); break; case 'L': if (ouruser->f_prog) { printf("Logout all users\n"); logout_all(); break; } /* FALL THRU */ case 'l': printf("Logout user\n"); logout(); break; case 'O': show_online(1); break; case 'W': whoknows(); break; case 'X': if (ouruser->f_prog) xbroadcast(); else chr = 0; break; case 'Z': printf("Zap (delete) forum\n"); deleteroom(); loadroom(); break; case '?': case '/': if (ouruser->f_admin) help("aidecmd", NO); else help("fmcmd", NO); break; default: break; } if (chr) colorize("\n@Y[%s]@M Forum command ->@G ", msg->room[curr].name); if (ouruser->f_admin) chr = get_single_quiet("CDEHIKlLMOWXZ \n/?"); else chr = get_single_quiet("DEHIKMW \n/?"); } /* end of while loop */ printf("Forum level\n"); }
void create_room() { int number; char command, *quad_name; for (number = 0; number < MAXQUADS; number++) if (!(readquad(number).flags & QR_INUSE)) { cprintf("\n\1f\1gFound an unused %s at slot \1y%d\1g.\n", config.forum, number); cprintf("\1gStop searching and use this position? \1w(\1rY\1w/\1rn\1w): \1c"); if (yesno_default(YES) == YES) { cprintf("\1f\1gInstall %s into slot \1y%d\1g? \1w(\1rY\1w/\1rn\1w): \1c", config.forum, number); if (yesno_default(YES) == NO) return; else break; } else continue; } if (number >= MAXQUADS) { cprintf("\1f\1rNo unused %s was found.\n", config.forum); return; } cprintf("\1f\1rPlease keep the length of the name under 36 characters.\n |------------------------------------|\n\1f\1gName for new %s\1w: \1c", config.forum); quad_name = get_name(3); if (strlen(quad_name) == 0) return; if (get_room_number(quad_name) != -1) { cprintf("\1rA %s named '%s' already exists.\n", config.forum, quad_name); return; } curr_rm = number; quickroom = readquad(curr_rm); strcpy(quickroom.name, quad_name); quickroom.generation++; quickroom.lowest = ++quickroom.highest; quickroom.maxmsg = 100; quickroom.flags = QR_INUSE; cprintf("\1f\1g%s%s ", config.forum, "Type: \1w<\1y1\1w> \1gPublic \1w<\1y2\1w> \1rPrivate : \1c"); command = get_single("12"); if (command == '1') { /* public room */ cprintf("\1rThe %s will be PUBLIC.\n\n", config.forum); quickroom.flags &= ~QR_PRIVATE; } else { /* invite -- just private flag, guessname off */ cprintf("\1rThe %s will be INVITE ONLY.\n\n", config.forum); quickroom.flags |= QR_PRIVATE; if (quickroom.generation >= 100) quickroom.generation = 10; } write_quad(quickroom, curr_rm); gotocurr(); /* takes care of self invite.. no matter, sysop anyways */ log_sysop_action("created %s: %s> ", config.forum, quickroom.name); editroom(); change_forum_info(); qc_edit_room(); }