mud/lib/cmds/players/faq.c
2020-09-06 05:43:07 -07:00

61 lines
1.9 KiB
C

/* /cmds/player/faq.c
* from the Foundation II LPC Library
* a command to access Frequently Asked Questions lists easily
* created by Descartes of Borg 950501 (power to the proletariate)
*/
#include <lib.h>
inherit LIB_DAEMON;
static void GetFAQ(string args);
mixed cmd(string args) {
if( !args || args == "" ) {
string *files;
int cols, i, maxi, x, y;
message("help", mud_name() + " has the following FAQ lists:",
this_player());
cols = ((int *)this_player()->GetScreen())[0];
i = sizeof(files = get_dir(DIR_FAQS "/"));
while(i--) if( (y =strlen(files[i])) > x ) x = y;
cols = cols / (x+2);
message("help", format_page(files, cols), this_player());
message("prompt", "\nWhich FAQ (general)? ", this_player());
input_to( (: GetFAQ :) );
return 1;
}
else GetFAQ(args);
return 1;
}
static void GetFAQ(string args) {
string file;
//bugfix courtesy of Manchi
if( !args || args == "" || args == "y" || args == "Y" || lower_case(args) == "yes")
args = "general";
if( file_size(file = DIR_FAQS "/" + args) < 0 ) {
message("error", "No such FAQ available.", this_player());
return;
}
if( !(file = read_file(file)) ) {
message("error", "Failed to read FAQ document.", this_player());
return;
}
this_player()->eventPage(explode(file, "\n"), "help");
}
string GetHelp() {
return ("Syntax: faq [FAQ]\n\n"
"If you specify a particular FAQ to read, this command will "
"display that FAQ for you. If you fail to specify a FAQ, it "
"will give you a list of FAQs from which to choose. FAQ "
"stands for Frequently Asked Questions. Reading the FAQs is "
"a good way of coming to understand topics basic to " +
mud_name() + ".\n"
"See also: help" + (creatorp(this_player()) ? ", man" : ""));
}