/*************************************************************************** * 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 <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "tables.h" #include "olc.h" #include "recycle.h" #include "mysql.h" #define DREDIT( fun ) bool fun(CHAR_DATA *ch, char*argument) DREAM_DATA * pDream; DREDIT(dredit_show) { char buf[MSL*2]; int i; EDIT_DREAM( ch, pDream); printf_to_char( ch, "ID : [%d]\n\r", pDream->index); printf_to_char( ch, "Title : %s\n\r", pDream->title); printf_to_char( ch, "Author: %s\n\r", pDream->author); printf_to_char( ch, "%s :\n\r", pDream->type); for (i = 0; i < 10; i++) { sprintf(buf, "Phase %d : [%s]\n\r", i + 1, pDream->line[i]); send_to_char( Justify(buf,70,justify_left), ch); send_to_char( "\n\r", ch); } return FALSE; } DREDIT(dredit_title) { EDIT_DREAM(ch, pDream); if ( IS_NULLSTR(argument) ) { send_to_char( "Syntax : title [dream title]\n\r", ch ); return FALSE; } free_string(pDream->title); pDream->title = str_dup(argument); send_to_char( "Title Set.\n\r", ch ); return TRUE; } DREDIT(dredit_type) { EDIT_DREAM(ch, pDream); if ( IS_NULLSTR(argument) || !str_cmp(argument, "dream") || !str_cmp(argument, "nightmare")) { send_to_char( "Syntax : title [dream or nightmare]\n\r", ch ); return FALSE; } free_string(pDream->type); pDream->type = str_dup(argument); send_to_char( "Title Set.\n\r", ch ); return TRUE; } DREDIT(dredit_author) { EDIT_DREAM(ch, pDream); if ( IS_NULLSTR(argument) ) { send_to_char( "Syntax : author [author name]\n\r", ch ); return FALSE; } free_string(pDream->author); pDream->author = str_dup(argument); send_to_char( "Ok.\n\r", ch ); return TRUE; } DREDIT(dredit_create) { char argone[MIL],cleaned[MIL],query[MIL]; int records; char sql[MSL*2]; char esctext[MSL*2]; MYSQL_RES *result; argument = one_argument( argument, argone ); if ( IS_NULLSTR(argone) ) { send_to_char( "Syntax : create [title]\n\r", ch ); return FALSE; } mysql_escape_string(cleaned, argone, strlen(argone)); result = NULL; sprintf(sql, "SELECT * FROM dreams WHERE title LIKE '%%%s%%'", argone); if (mysql_real_query(mysqlconn, sql, strlen(sql)) != 0) { logf("dredit_create died attempting query for %s", argone); send_to_char( "Error while getting a query from the database. Please inform an Imm.\n\r", ch ); return FALSE; } result = mysql_store_result(mysqlconn); records = mysql_num_rows(result); if ( records > 0 ) { send_to_char( "There is already a dream with this title.\n\r", ch ); return FALSE; } { int i; for ( i = 0; cleaned[i] != '\0'; i++ ) cleaned[i] = UPPER(cleaned[i]); pDream = new_dream(); pDream->title = str_dup(cleaned); for (i = 0; i < 10; i++) pDream->line[i] = str_dup( "NONE" ); pDream->author = str_dup(""); pDream->type = str_dup("Dream"); mysql_escape_string(esctext, pDream->author, strlen(pDream->author)); sprintf( query, "INSERT INTO dreams VALUES (NULL, \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\', \'%s\')", pDream->title, pDream->line[0], pDream->line[1], pDream->line[2], pDream->line[3], pDream->line[4], pDream->line[5], pDream->line[6], pDream->line[7], pDream->line[8], pDream->line[9], pDream->author, esctext); if (!mysql_real_query(mysqlconn, query, strlen(query))) { printf_to_char( ch, "Added dream: %s\n\r", pDream->title); ch->desc->pEdit = (DREAM_DATA *) pDream; ch->desc->editor = ED_DREAM; send_to_char( "Ok.\n\r", ch ); return TRUE; } } return FALSE; } DREDIT( dredit_phase ) { char arg1[2]; int line; EDIT_DREAM(ch, pDream); if ( IS_NULLSTR(argument) ) { send_to_char( "Syntax : line [number] [phase]\n\r", ch ); return FALSE; } argument = one_argument(argument, arg1); line = atoi(arg1) - 1; if (line < 10 && line >= 0) pDream->line[line] = str_dup(argument); return TRUE; } void dredit(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; char command[MAX_INPUT_LENGTH]; int cmd; smash_tilde(argument); strcpy(arg, argument); argument = one_argument( argument, command); EDIT_DREAM(ch, pDream); if (command[0] == '\0') { dredit_show(ch, argument); return; } if (!str_cmp(command, "done") ) { dredit_save(ch, "argument"); free_dream(pDream); edit_done(ch); return; } for (cmd = 0; dredit_table[cmd].name != NULL; cmd++) { if (!str_prefix(command, dredit_table[cmd].name) ) { if ((*dredit_table[cmd].olc_fun) (ch, argument)) cmd = cmd; return; } } interpret(ch, arg); return; } void do_dredit(CHAR_DATA *ch, char *argument) { char cleaned[MIL * 2]; char sql[MSL*2]; sh_int argone; int records = 0; char output[MSL*2]; MYSQL_RES *result; MYSQL_ROW row; result = NULL; EDIT_DREAM(ch, pDream); mysql_escape_string(cleaned, argument, strlen(argument)); argone = atoi(argument); output[0] = '\0'; sprintf(sql, "SELECT * FROM dreams WHERE id = %d", argone); if (mysql_real_query(mysqlconn, sql, strlen(sql)) != 0) { logf("do_dredit died attempting query for %s", argone); 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) { printf_to_char( ch, "No dream entry found by the id: %s. Use DREAMLIST to see ids.\n\r", argone ); return; } mysql_real_query(mysqlconn, sql, strlen(sql)); result = mysql_store_result(mysqlconn); records = mysql_num_rows(result); pDream = new_dream(); row = mysql_fetch_row(result); pDream->index = atoi(row[0]); pDream->title = str_dup(row[1]); pDream->line[0] = str_dup(row[2]); pDream->line[1] = str_dup(row[3]); pDream->line[2] = str_dup(row[4]); pDream->line[3] = str_dup(row[5]); pDream->line[4] = str_dup(row[6]); pDream->line[5] = str_dup(row[7]); pDream->line[6] = str_dup(row[8]); pDream->line[7] = str_dup(row[9]); pDream->line[8] = str_dup(row[10]); pDream->line[9] = str_dup(row[11]); pDream->author = str_dup(row[12]); pDream->type = str_dup(row[13]); printf_to_char( ch, "Number: %d\n\r", pDream->index ); printf_to_char( ch, "Title: %s\n\r", pDream->title); printf_to_char( ch, "Author: %s\n\r", pDream->author); printf_to_char( ch, "Type : %s\n\r", pDream->type); ch->desc->pEdit = (void *) pDream; ch->desc->editor = ED_DREAM; return; } DREDIT(dredit_delete) { DESCRIPTOR_DATA *d; char query[3*MSL]; for ( d = descriptor_list; d; d = d->next ) { if ( d->editor == ED_DREAM && pDream == (DREAM_DATA *) d->pEdit ) edit_done(d->character); } sprintf(query, "DELETE FROM dreams WHERE id=%d", pDream->index); if (!mysql_real_query(mysqlconn, query, strlen(query))) { printf_to_char( ch, "Dream entry deleted successfully: %d %s\n\r", pDream->index, pDream->title); free_dream(pDream); return TRUE; } return FALSE; } DREDIT(dredit_save) { char query[3*MSL]; char esctext[3*MSL]; mysql_escape_string(esctext, pDream->line[9], strlen(pDream->line[9])); sprintf(query, "UPDATE dreams SET title=\'%s\', line1=\'%s\', line2=\'%s\', line3=\'%s\',line4=\'%s\', line5=\'%s\', line6=\'%s\', line7=\'%s\', line8=\'%s\', line9=\'%s\', line10=\'%s\' WHERE id=%d", pDream->title, pDream->line[0], pDream->line[1], pDream->line[2], pDream->line[3], pDream->line[4], pDream->line[5], pDream->line[6], pDream->line[7], pDream->line[8], esctext, pDream->index); if (!mysql_real_query(mysqlconn, query, strlen(query))) { printf_to_char( ch, "Updated Dream: %d %s\n\r", pDream->index, pDream->title); return TRUE; } return FALSE; }