Common subdirectories: ./1/1 and ./1 diff -c -P -N -x hedit.patch ./1/interp.c ./interp.c *** ./1/interp.c Wed Dec 31 07:59:44 1997 --- ./interp.c Thu Jan 1 08:24:50 1998 *************** *** 373,378 **** --- 373,379 ---- { "aedit", do_aedit, POS_DEAD, 0, LOG_NORMAL, 1 }, { "oedit", do_oedit, POS_DEAD, 0, LOG_NORMAL, 1 }, { "mpedit", do_mpedit, POS_DEAD, 0, LOG_NORMAL, 1 }, + { "hedit", do_hedit, POS_DEAD, 0, LOG_NORMAL, 1 }, /* * End of list. diff -c -P -N -x hedit.patch ./1/interp.h ./interp.h *** ./1/interp.h Wed Dec 31 07:59:44 1997 --- ./interp.h Thu Jan 1 08:25:00 1998 *************** *** 305,307 **** --- 305,308 ---- DECLARE_DO_FUN( do_medit ); DECLARE_DO_FUN( do_oedit ); DECLARE_DO_FUN( do_mpedit ); + DECLARE_DO_FUN( do_hedit ); diff -c -P -N -x hedit.patch ./1/mem.c ./mem.c *** ./1/mem.c Wed Dec 31 07:59:44 1997 --- ./mem.c Thu Jan 1 08:22:33 1998 *************** *** 473,475 **** --- 473,490 ---- mpcode_free = pMcode; return; } + + HELP_DATA *new_help(void) + { + HELP_DATA *NewHelp; + + NewHelp = alloc_perm(sizeof(*NewHelp) ); + top_help++; + + NewHelp->level = 0; + NewHelp->keyword = str_dup(""); + NewHelp->text = str_dup(""); + NewHelp->next = NULL; + + return NewHelp; + } diff -c -P -N -x hedit.patch ./1/merc.h ./merc.h *** ./1/merc.h Wed Dec 31 07:59:44 1997 --- ./merc.h Thu Jan 1 08:22:33 1998 *************** *** 119,124 **** --- 119,126 ---- #define MAX_KEY_HASH 1024 #define MAX_STRING_LENGTH 4608 #define MAX_INPUT_LENGTH 256 + #define MIL MAX_STRING_LENGTH + #define MSL MAX_INPUT_LENGTH #define PAGELEN 22 diff -c -P -N -x hedit.patch ./1/olc.c ./olc.c *** ./1/olc.c Wed Dec 31 07:59:44 1997 --- ./olc.c Thu Jan 1 20:45:49 1998 *************** *** 53,59 **** break; case ED_MPCODE: mpedit( d->character, d->incomm ); ! break; default: return FALSE; } --- 53,62 ---- break; case ED_MPCODE: mpedit( d->character, d->incomm ); ! break; ! case ED_HELP: ! hedit( d->character, d->incomm ); ! break; default: return FALSE; } *************** *** 84,89 **** --- 87,95 ---- case ED_MPCODE: sprintf( buf, "MPEdit" ); break; + case ED_HELP: + sprintf( buf, "HEdit" ); + break; default: sprintf( buf, " " ); break; *************** *** 189,195 **** break; case ED_MPCODE: show_olc_cmds( ch, mpedit_table ); ! break; } return FALSE; --- 195,205 ---- break; case ED_MPCODE: show_olc_cmds( ch, mpedit_table ); ! break; ! case ED_HELP: ! show_olc_cmds( ch, hedit_table ); ! break; ! } return FALSE; *************** *** 350,355 **** --- 360,381 ---- { NULL, 0, } }; + /* Help Editor - kermit 1/98 */ + const struct olc_cmd_type hedit_table[] = + { + /* { command function }, */ + + { "commands", show_commands }, + { "desc", hedit_desc }, + { "keywords", hedit_keywords }, + { "level", hedit_level }, + { "make", hedit_make }, + { "show", hedit_show }, + { "?", show_help }, + + { NULL, 0, } + }; + /***************************************************************************** * End Interpreter Tables. * *****************************************************************************/ *************** *** 672,677 **** --- 698,744 ---- return; } + /* Help Editor - kermit 1/98 */ + void hedit( CHAR_DATA *ch, char *argument) + { + char command[MIL]; + char arg[MIL]; + int cmd; + + smash_tilde(argument); + strcpy(arg, argument); + argument = one_argument( argument, command); + + if (ch->pcdata->security < 9) + { + send_to_char("HEdit: Insufficient security to modify code\n\r",ch); + edit_done(ch); + } + + if ( !str_cmp(command, "done") ) + { + edit_done( ch ); + return; + } + + if ( command[0] == '\0' ) + { + hedit_show( ch, argument ); + return; + } + + for ( cmd = 0; hedit_table[cmd].name != NULL; cmd++ ) + { + if ( !str_prefix( command, hedit_table[cmd].name ) ) + { + (*hedit_table[cmd].olc_fun) ( ch, argument ); + return; + } + } + + interpret( ch, arg ); + return; + } *************** *** 684,689 **** --- 751,757 ---- { "object", do_oedit }, { "mobile", do_medit }, { "mpcode", do_mpedit }, + { "help", do_hedit }, { NULL, 0, } }; *************** *** 985,990 **** --- 1053,1112 ---- return; } + /* Help Editor - kermit 1/98 */ + void do_hedit( CHAR_DATA *ch, char *argument ) + { + HELP_DATA *pHelp; + char arg1[MIL]; + char argall[MAX_INPUT_LENGTH],argone[MAX_INPUT_LENGTH]; + bool found = FALSE; + + strcpy(arg1,argument); + + if(argument != '\0') + { + /* Taken from do_help */ + argall[0] = '\0'; + while (argument[0] != '\0' ) + { + argument = one_argument(argument,argone); + if (argall[0] != '\0') + strcat(argall," "); + strcat(argall,argone); + } + + for ( pHelp = help_first; pHelp != NULL; pHelp = pHelp->next ) + { + if ( is_name( argall, pHelp->keyword ) ) + { + ch->desc->pEdit=(void *)pHelp; + ch->desc->editor= ED_HELP; + found = TRUE; + return; + } + } + } + + if(!found) + { + argument = one_argument(arg1, arg1); + + if(!str_cmp(arg1,"make")) + { + if (argument[0] == '\0') + { + send_to_char("Syntax: edit help make [topic]\n\r",ch); + return; + } + if (hedit_make(ch, argument) ) + ch->desc->editor = ED_HELP; + return; + } + } + + send_to_char( "HEdit: There is no default help to edit.\n\r", ch ); + return; + } void display_resets( CHAR_DATA *ch ) diff -c -P -N -x hedit.patch ./1/olc.h ./olc.h *** ./1/olc.h Wed Dec 31 07:59:44 1997 --- ./olc.h Sun Jan 11 07:28:57 1998 *************** *** 59,64 **** --- 59,65 ---- #define ED_OBJECT 3 #define ED_MOBILE 4 #define ED_MPCODE 5 + #define ED_HELP 6 *************** *** 70,75 **** --- 71,77 ---- void medit args( ( CHAR_DATA *ch, char *argument ) ); void oedit args( ( CHAR_DATA *ch, char *argument ) ); void mpedit args( ( CHAR_DATA *ch, char *argument ) ); + void hedit args( ( CHAR_DATA *ch, char *argument ) ); /* *************** *** 123,128 **** --- 125,131 ---- extern const struct olc_cmd_type oedit_table[]; extern const struct olc_cmd_type medit_table[]; extern const struct olc_cmd_type mpedit_table[]; + extern const struct olc_cmd_type hedit_table[]; /* *************** *** 133,138 **** --- 136,142 ---- DECLARE_DO_FUN( do_oedit ); DECLARE_DO_FUN( do_medit ); DECLARE_DO_FUN( do_mpedit ); + DECLARE_DO_FUN( do_hedit ); /* *************** *** 264,269 **** --- 268,281 ---- DECLARE_OLC_FUN( mpedit_show ); + /* Help editor - kermit 1/98 */ + DECLARE_OLC_FUN( hedit_show ); + DECLARE_OLC_FUN( hedit_make ); + DECLARE_OLC_FUN( hedit_desc ); + DECLARE_OLC_FUN( hedit_level ); + DECLARE_OLC_FUN( hedit_keywords ); + + /* * Macros */ *************** *** 282,287 **** --- 294,300 ---- #define EDIT_OBJ(Ch, Obj) ( Obj = (OBJ_INDEX_DATA *)Ch->desc->pEdit ) #define EDIT_ROOM(Ch, Room) ( Room = Ch->in_room ) #define EDIT_AREA(Ch, Area) ( Area = (AREA_DATA *)Ch->desc->pEdit ) + #define EDIT_HELP(Ch, Help) ( Help = (HELP_DATA *)Ch->desc->pEdit ) *************** *** 321,323 **** --- 334,341 ---- void free_mprog args ( ( MPROG_LIST *mp ) ); MPROG_CODE *new_mpcode args ( (void) ); void free_mpcode args ( ( MPROG_CODE *pMcode)); + + /* Help Editor - kermit 1/98 */ + HELP_DATA *new_help args ( (void) ); + /* Help Editor - kermit 1/98 */ + void save_helps args( (void) ); diff -c -P -N -x hedit.patch ./1/olc_act.c ./olc_act.c *** ./1/olc_act.c Wed Dec 31 07:59:45 1997 --- ./olc_act.c Thu Jan 1 08:22:34 1998 *************** *** 36,41 **** --- 36,42 ---- #define OEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define MEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define AEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) + #define HEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) *************** *** 4919,4923 **** --- 4920,5011 ---- } send_to_char("Mprog removed.\n\r", ch); + return TRUE; + } + + /* Help Editor - kermit 1/98 */ + HEDIT (hedit_make) + { + HELP_DATA *pHelp; + + if (argument[0] == '\0') + { + send_to_char("Syntax: mpedit make [keyword(s)]\n\r",ch); + return FALSE; + } + + pHelp = new_help(); + pHelp->keyword = str_dup(argument); + pHelp->next = help_first; + help_first = pHelp; + ch->desc->pEdit = (void *)pHelp; + + send_to_char("New Help Entry Created.\n\r",ch); + return TRUE; + } + + HEDIT( hedit_show) + { + HELP_DATA *pHelp; + char buf[MSL]; + + EDIT_HELP(ch,pHelp); + + sprintf(buf, + "Level: [%d]\n\r" + "Keywords: %s\n\r" + "\n\r%s\n\r", + pHelp->level, pHelp->keyword, pHelp->text); + send_to_char(buf,ch); + + return FALSE; + } + + HEDIT( hedit_desc) + { + HELP_DATA *pHelp; + EDIT_HELP(ch, pHelp); + + if (argument[0] =='\0') + { + string_append(ch, &pHelp->text); + return TRUE; + } + + send_to_char(" Syntax: desc\n\r",ch); + return FALSE; + } + + HEDIT( hedit_keywords) + { + HELP_DATA *pHelp; + EDIT_HELP(ch, pHelp); + + if(argument[0] == '\0') + { + send_to_char(" Syntax: keywords [keywords]\n\r",ch); + return FALSE; + } + + pHelp->keyword = str_dup(argument); + send_to_char( "Keyword(s) Set.\n\r", ch); + return TRUE; + } + + HEDIT(hedit_level) + { + HELP_DATA *pHelp; + + EDIT_HELP(ch, pHelp); + + if ( argument[0] == '\0' || !is_number( argument ) ) + { + send_to_char( "Syntax: level [number]\n\r", ch ); + return FALSE; + } + + pHelp->level = atoi( argument ); + + send_to_char( "Level set.\n\r", ch); return TRUE; } diff -c -P -N -x hedit.patch ./1/olc_save.c ./olc_save.c *** ./1/olc_save.c Wed Dec 31 07:59:45 1997 --- ./olc_save.c Thu Feb 5 04:24:40 1998 *************** *** 35,40 **** --- 35,41 ---- #define DIF(a,b) (~((~a)|(b))) + /* * Verbose writes reset data in plain english into the comments * section of the resets. It makes areas considerably larger but *************** *** 91,99 **** */ fprintf( fp, "help.are\n" ); fprintf( fp, "social.are\n" ); /* ROM OLC */ - fprintf( fp, "rom.are\n" ); /* ROM OLC */ - fprintf( fp, "group.are\n" ); /* ROM OLC */ - fprintf( fp, "olc.hlp\n" ); for( pArea = area_first; pArea; pArea = pArea->next ) { --- 92,97 ---- *************** *** 975,980 **** --- 973,979 ---- send_to_char( " asave area - saves the area being edited\n\r", ch ); send_to_char( " asave changed - saves all changed zones\n\r", ch ); send_to_char( " asave world - saves the world! (db dump)\n\r", ch ); + send_to_char( " asave helps - saves the help files\n\r", ch ); send_to_char( "\n\r", ch ); return; } *************** *** 1014,1020 **** save_area( pArea ); REMOVE_BIT( pArea->area_flags, AREA_CHANGED ); ! } send_to_char( "You saved the world.\n\r", ch ); /* send_to_all_char( "Database saved.\n\r" ); ROM OLC */ return; --- 1013,1020 ---- save_area( pArea ); REMOVE_BIT( pArea->area_flags, AREA_CHANGED ); ! } ! save_helps(); send_to_char( "You saved the world.\n\r", ch ); /* send_to_all_char( "Database saved.\n\r" ); ROM OLC */ return; *************** *** 1105,1112 **** --- 1105,1146 ---- return; } + /* Save Help File */ + if(!str_cmp(arg1, "helps")) + { + save_helps(); + send_to_char( "Helps Saved.\n\r", ch); + return; + } + /* Show correct syntax. */ /* -------------------- */ do_asave( ch, "" ); return; + } + + /* Help Editor - kermit 1/98 */ + void save_helps() + { + HELP_DATA * pHelp; + FILE * fp; + + if (!(fp = fopen( "help.are", "w") ) ) + { + bug( "Open_help: fopen", 0); + perror( "help.are"); + } + + fprintf(fp, "#HELPS\n\n"); + + for ( pHelp = help_first; pHelp != NULL; pHelp = pHelp->next ) + { + + fprintf(fp, "%d %s~\n\n%s~\n", + pHelp->level, pHelp->keyword, fix_string(pHelp->text)); + } + + fprintf(fp,"0 $~\n\n#$\n"); + fclose(fp); + return; }