/***************************************************************************** Name: save_area Purpose: Save an area, note that this format is new. Called by: do_asave(olc_save.c). ****************************************************************************/ void save_area( AREA_DATA *pArea ) { FILE *fp; fclose( fpReserve ); if ( !( fp = fopen( pArea->filename, "w" ) ) ) { bug( "Open_area: fopen", 0 ); perror( pArea->filename ); } fprintf( fp, "#AREADATA\n" ); fprintf( fp, "Name %s~\n", pArea->name ); fprintf( fp, "Builders %s~\n", fix_string( pArea->builders ) ); fprintf( fp, "VNUMs %d %d\n", pArea->lvnum, pArea->uvnum ); fprintf( fp, "Security %d\n", pArea->security ); fprintf( fp, "Recall %d\n", pArea->recall ); fprintf( fp, "Flags %d\n", pArea->area_flags ); fprintf( fp, "End\n\n\n\n" ); save_helps( fp, pArea ); /* OLC 1.1b */ save_mobiles( fp, pArea ); save_objects( fp, pArea ); save_rooms( fp, pArea ); if ( IS_SET(pArea->area_flags, AREA_VERBOSE) ) /* OLC 1.1b */ { vsave_specials( fp, pArea ); vsave_resets( fp, pArea ); vsave_shops( fp, pArea ); } else { save_specials( fp, pArea ); save_resets( fp, pArea ); save_shops( fp, pArea ); } fprintf( fp, "#$\n" ); fclose( fp ); fpReserve = fopen( NULL_FILE, "r" ); return; }
void write_all( bool forced ) { area_data* area; for( area = area_list; area != NULL; area = area->next ) save_area( area, forced ); save_mobs( ); save_objects( ); save_help( ); save_trainers( ); save_banned( ); save_quests( ); save_shops( ); save_tables( ); save_rtables( ); save_lists( ); save_clans( ); }
void do_write( char_data* ch, char* argument ) { char buf [ MAX_INPUT_LENGTH ]; area_data* area; int number = 0; int flags; if( !get_flags( ch, argument, &flags, "f", "write" ) ) return; if( !strcasecmp( argument, "all" ) ) { if( !has_permission( ch, PERM_WRITE_ALL, TRUE ) ) return; write_all( is_set( &flags, 0 ) ); send( ch, "All files written.\r\n" ); sprintf( buf, "All files written (%s).", ch->descr->name ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "areas" ) ) { if( !has_permission( ch, PERM_WRITE_AREAS, TRUE ) ) return; for( area = area_list; area != NULL; area = area->next ) number += save_area( area, is_set( &flags, 0 ) ); if( number > 0 ) { send( ch, "All areas written. ( %d file )\r\n", number ); sprintf( buf, "All areas written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); } else { send( ch, "No area needed saving.\r\n" ); } return; } if( fmatches( argument, "rtables" ) ) { if( !has_permission( ch, PERM_RTABLES, TRUE ) ) return; save_rtables( ); send( ch, "Rtables written.\r\n" ); sprintf( buf, "Rtables written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "mobs" ) ) { if( !has_permission( ch, PERM_MOBS, TRUE ) ) return; save_mobs( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Mob file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( fmatches( argument, "objects" ) ) { if( !has_permission( ch, PERM_OBJECTS, TRUE ) ) return; save_objects( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Object file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "notes" ) ) { save_notes( -1 ); send( ch, "All noteboards written.\r\n" ); return; } if( !strcasecmp( argument, "shops" ) ) { if( !has_permission( ch, PERM_ROOMS, TRUE ) ) return; save_shops( ); send( "Ok.\r\n", ch ); sprintf( buf, "Shop file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf , IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "tables" ) ) { if( !has_permission( ch, PERM_MISC_TABLES ) && !has_permission( ch, PERM_SOCIALS, TRUE ) ) return; save_tables( ); send( "Ok.\r\n", ch ); sprintf( buf, "Table file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "clans" ) ) { if( !has_permission( ch, PERM_CLANS, TRUE ) ) return; save_clans( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Clan files written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "lists" ) ) { if( !has_permission( ch, PERM_LISTS, TRUE ) ) return; save_lists( ); send( "Ok.\r\n", ch ); sprintf( buf, "Table file written (%s).", ch->real_name() ); info( "", LEVEL_IMMORTAL, buf , IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "trainers" ) ) { if( !IS_IMMORTAL( ch ) ) { send( "You don't have permission.", ch ); return; } save_trainers( ); send( "Ok.\r\n", ch ); sprintf( buf, "Trainer file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "help" ) ) { if( !has_permission( ch, PERM_HELP_FILES, TRUE ) ) return; if( !save_help( ch ) ) send( ch, "Help was not modified so was not saved.\r\n" ); return; } if( !strcasecmp( argument, "quests" ) ) { if( get_trust( ch ) < LEVEL_QUEST ) { send( ch, "You don't have permission." ); return; } save_quests( ); send( ch, "Ok.\r\n" ); sprintf( buf, "Quest file written (%s).", ch->real_name() ); info( "", LEVEL_BUILDER, buf, IFLAG_WRITES, 1, ch ); return; } if( !strcasecmp( argument, "w3" ) ) { w3_help( ); send( ch, "Webpage Updated.\r\n" ); return; } if( *argument != '\0' ) { send( ch, "What do you want to write?\r\n" ); return; } if( can_edit( ch, ch->in_room ) ) { if( !ch->in_room->area->modified ) { send( "Area has not been modified so was not saved.\r\n", ch ); } else { save_area( ch->in_room->area ); send( ch, "Area written.\r\n" ); } } }
void sedit_save_to_disk(int num) { save_shops(num); }