/*************************************************************************** * MND is copyright 2000-2002 Charles Tillery (Muerte/Ao) * * http://www.mudsanddragons.com * * 3e D&D Mud Project * * This header is not to be removed from ANY file * ***************************************************************************/ #include <sys/types.h> #include <sys/time.h> #include <stdio.h> #include <ctype.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <time.h> #include "merc.h" #include "mysql.h" void dream_event(CHAR_DATA * ch) { char buf[MIL]; int records, number, line; char sql[MSL*2]; MYSQL_RES *result; if (ch->dream[DREAM_PHASE] == 0) { number = dice(1,1); line = dice(1,10); ch->dream[DREAM_NUMBER] = number; ch->dream[DREAM_PHASE] = line; } result = NULL; if( ch->dream[DREAM_TYPE] == DREAM_TYPE_NIGHTMARE ) sprintf(sql, "SELECT line%d FROM dreams WHERE id=%d AND type LIKE author LIKE '%%%s%%'", ch->dream[DREAM_PHASE], ch->dream[DREAM_NUMBER], "Nightmare"); else sprintf(sql, "SELECT line%d FROM dreams WHERE id =%d", ch->dream[DREAM_PHASE], ch->dream[DREAM_NUMBER]); if (mysql_real_query(mysqlconn, sql, strlen(sql)) != 0) { logf("do_dream died attempting query for dream %d", number); send_to_char( "Error while getting a query from the database. Please inform an Imm.\n\r", ch ); return; } result = mysql_store_result(mysqlconn); records = mysql_num_rows(result); if (records < 1) { logf("DO_DREAM: dream not found for: %d", number); if(ch->dream[DREAM_TYPE] == DREAM_TYPE_NIGHTMARE) printf_to_char( ch, "I'm watching you %s.\n\r", ch->name); else printf_to_char( ch, "zZzZZzzzzzzzzzzzzzzzzzZZZZZZZZZZZZZZZZ.\n\r", 0); return; } if (records > 0) { MYSQL_ROW row; for (; records > 0; records--) { row = mysql_fetch_row(result); ch->dreamline = str_dup(row[0]); } } if (!str_cmp(ch->dreamline, "NONE")) { logf("DO_DREAM: dream not found for: %d", number); printf_to_char( ch, "zZzZZzzzzzzzzzzzzzzzzzZZZZzzzzzzzzzZZzZzZzZ.\n\r", 0); ch->dream[DREAM_NUMBER] = 0; ch->dream[DREAM_PHASE] = 0; return; } sprintf(buf, "%s\n\r", ch->dreamline); send_to_char( Justify(buf,70,justify_left), ch); printf_to_char(ch, "\n\r"); ch->dream[DREAM_PHASE] = ch->dream[DREAM_PHASE] + 1; if(ch->dream[DREAM_PHASE] > 10) { ch->dream[DREAM_NUMBER] = 0; ch->dream[DREAM_PHASE] = 0; } return; } void do_dreamlist(CHAR_DATA * ch, char *argument) { char arg1[MIL]; int records, index; char *title, *author; char sql[MSL*2]; MYSQL_RES *result; result = NULL; printf_to_char(ch, "{R%s{x\n\r", "Dreams"); argument = one_argument(argument, arg1); if (arg1[0] == '\0') sprintf(sql, "SELECT id, title, author FROM dreams WHERE 1"); else if (is_number(arg1)) sprintf(sql, "SELECT id, title, author FROM dreams WHERE id=%d", atoi(arg1)); else sprintf(sql, "SELECT id, title, author FROM dreams WHERE title LIKE '%%%s%%' OR author LIKE '%%%s%%'", arg1, arg1); if (mysql_real_query(mysqlconn, sql, strlen(sql)) != 0) { logf("do_dreamlist died attempting query for dreamlist"); send_to_char( "Error while getting a query from the database. Please inform an Imm.\n\r", ch ); return; } result = mysql_store_result(mysqlconn); records = mysql_num_rows(result); if (records < 1) { logf("DO_DREAMLIST: no dreams to list"); send_to_char("No Dreams match that criteria\n\r", ch); return; } if (records > 0) { MYSQL_ROW row; for (; records > 0; records--) { row = mysql_fetch_row(result); index = atoi(row[0]); title = str_dup(row[1]); author = str_dup(row[2]); printf_to_char(ch, "%5d : %s by %s\n\r", index, title, author); } } return; } void cause_nightmare(CHAR_DATA *ch) { ch->dream[DREAM_TYPE] = DREAM_TYPE_NIGHTMARE; } void remove_nightmare(CHAR_DATA *ch) { ch->dream[DREAM_TYPE] = DREAM_TYPE_DREAM; } void do_dream(CHAR_DATA *ch) { int records; char *title, *author; char sql[MSL*2]; MYSQL_RES *result; result = NULL; sprintf(sql, "SELECT title, author FROM dreams WHERE id=%d", ch->dream[DREAM_NUMBER]); if (mysql_real_query(mysqlconn, sql, strlen(sql)) != 0) { logf("do_dream died attempting query for dream %d", ch->dream[DREAM_NUMBER]); send_to_char( "Error while getting a query from the database. Please inform an Imm.\n\r", ch ); return; } result = mysql_store_result(mysqlconn); records = mysql_num_rows(result); if (records < 1) { send_to_char("Huh?\n\r", ch); return; } if (records > 0) { MYSQL_ROW row; for (; records > 0; records--) { row = mysql_fetch_row(result); title = str_dup(row[0]); author = str_dup(row[1]); printf_to_char(ch, "You are experiencing dream %s by %s.\n\r", title, author); } } return; }