#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");
}