#include <stdio.h> #include <stdlib.h> #include <string.h> #include "mud.h" #include "mysql.h" char * greeting; /* the welcome greeting */ char * motd; /* the MOTD help file */ /* * load_helps() * * Doesn't actually do much, just loads greeting and MOTD into memory */ void load_helps(void) { greeting = find_greeting(); motd = find_motd(); return; } /* * do_help() * * Holder: Passes along to cmd_sql_help() */ void cmd_help (D_MOBILE * ch, char * arg) { cmd_sql_help(ch, arg); return; } /* * cmd_sql_help() * * Finds the help file, and outputs it. Simplish */ void cmd_sql_help(D_MOBILE * ch, char * argument) { char query[4096 * 2]; MYSQL_RES *result; bool found = FALSE; if (argument[0] == '\0') { sql_help_summary(ch); return; } snprintf(query, sizeof(query) +1, "SELECT * FROM vand_help"); mysql_safe_query(query); result = mysql_store_result(&mysqlconn); while ((row = mysql_fetch_row(result))) { if (!is_name (argument, row[2])) { ptc(ch, "[ID: %d] Help Topic: %s [%d]\n", atoi(row[0]), row[2], atoi(row[1])); ptc(ch, "%s\n", row[3]); found = TRUE; } } if (!found) { ptc(ch, "No help entry found for '%s'\n", argument); ptc(ch, "Logging invalid help. We're always looking to better the mud =)\n"); mysql_log_ohelp(ch->name, argument); } return; } /* * Sql_help_summary() * * Displays all possible help files. */ void sql_help_summary (D_MOBILE * ch) { char query[4096 * 2]; MYSQL_RES *result; int col = 0; snprintf(query, sizeof(query) +1, "SELECT * FROM vand_help"); mysql_safe_query(query); result = mysql_store_result(&mysqlconn); ptc(ch, "\n********** Vandagard Help System *********\n\n Valid Helps:\n\n"); while ((row = mysql_fetch_row(result))) { ptc(ch, "%-15s ", row[2]); if (++col % 3 == 0) ptc(ch, "\n"); } ptc(ch, "\n"); return; } /* * find_greeting() * * Hmm, seems i missed something, fix me later */ char * find_greeting(void) { char query[4096 * 2]; MYSQL_RES *result; snprintf(query, sizeof(query) +1, "SELECT * FROM vand_help WHERE keywords='greeting' LIMIT 1"); mysql_safe_query(query); result = mysql_store_result(&mysqlconn); while ((row = mysql_fetch_row(result))) return row[3]; return "Error"; } /* * find_motd() * * Hmm, seems i missed something, fix me later */ char * find_motd(void) { char query[4096 * 2]; MYSQL_RES *result; snprintf(query, sizeof(query) +1, "SELECT * FROM vand_help WHERE keywords='motd' LIMIT 1"); mysql_safe_query(query); result = mysql_store_result(&mysqlconn); while ((row = mysql_fetch_row(result))) return row[3]; return "Error"; } /* * cmd_help_dump() * * Dumps all OLD helps into SQL database. */ void do_sql_help_dump(D_MOBILE * ch, char *arg) { /* char query[8096 * 2]; HELP_DATA *pHelp; for (pHelp = help_first; pHelp != NULL; pHelp = pHelp->next) { snprintf(query, sizeof(query) +1, "INSERT INTO `vand_help` ( `id` , `level` , `keywords` , `text` ) VALUES ( NULL , '%d', '%s', '%s');", pHelp->level, pHelp->keyword, pHelp->text); MySQLQuery(query); } */ return; } /* * mysql_log_ohelp() * * Logs helps that don't exist for betterment of the mud. */ void mysql_log_ohelp(char * who, char * topic) { char query[4096]; snprintf(query, sizeof(query) + 1, "INSERT INTO `vand_help_add` ( `id` , `who` , `topic` ) VALUES ( NULL , '%s', '%s' );", who, topic); MySQLQuery(query); return; } /* * cmd_orphanhelps() * * Admin util to see orphan (ie non-existant) * help files players have asked for. * * TODO: Expand to remove entries/add entries */ void cmd_orphanhelps(D_MOBILE * ch, char * arg) { char query[4096 * 2]; MYSQL_RES *result; ptc(ch, "**** Orphan Helps:\n"); ptc(ch, " [#w%-3s#n] #W%-15s#n | #c%s#n\n", "ID", "Who asked", "Topic Wanted"); snprintf(query, sizeof(query) +1, "SELECT * FROM vand_help_add"); mysql_safe_query(query); result = mysql_store_result(&mysqlconn); while ((row = mysql_fetch_row(result))) { ptc(ch, " [#w%-3d#n] #W%-15s#n | #c%s#n\n", atoi(row[0]), row[1], row[2]); } ptc(ch, "\n"); }