Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * All you really need to do is to add this to mud.h
- * And change around the vnums to match the locker room vnum, and
- * object vnum of the locker itself. It should be setup as a container.
- * Make SURE that neither locker or the locker room has the prototype
- * flag on it. Make a directory called lockers in your /dist directory.
- *
- * #define ROOM_LOCKER 229
- * #define OBJ_VNUM_LOCKER 39
- * #define OS_LOCKER 2
- *
- * and add to save.c
- * in the fread_obj() function
- * under ...
- * if ( room->vnum == ROOM_VNUM_HALLOFFALLEN
- * && obj->first_content )
- * obj->timer = -1;
- * obj = obj_to_room( obj, room );
- * }
- * <<<<<< add ... >>>>>>>
- * else if ( os_type == OS_LOCKER )
- * {
- * room->vnum = ROOM_LOCKER;
- * if (obj->name == ch->name)
- * obj = obj_to_room( obj, room );
- * else
- * {
- * OBJ_DATA *locker;
- * for( locker = ch->in_room->first_content; locker ; locker = locker->next_content )
- * {
- * if( locker->name == ch->name )
- * break;
- * }
- * if (!locker)
- * {
- * bug("Unknown locker");
- * return;
- * }
- *
- * obj = obj_to_obj( obj, locker );
- * }
- * }
- *
- *
- * in the fread_obj()
- * change if ( obj->prev_content && (os_type != OS_CORPSE ) )
- * to if ( obj->prev_content && (os_type != OS_CORPSE && os_type != OS_LOCKER ) )
- *
- * in the fwrite_obj() function
- * change if (( os_type == OS_CORPSE ) && obj->in_room )
- * to if (( os_type == OS_CORPSE || os_type == OS_LOCKER ) && obj->in_room )
- */
- #include <sys/types.h>
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <time.h>
- #include "mud.h"
- #define LOCKER_DIR "../lockers/"
- void fwrite_locker( CHAR_DATA *ch, OBJ_DATA *locker )
- {
- /* Variables */
- FILE *fp = NULL;
- char strsave[MAX_INPUT_LENGTH];
- if( !locker )
- {
- bug( "Fwrite_locker: NULL object.", 0 );
- bug( ch->name, 0 );
- return;
- }
- sprintf( strsave, "%s%s", LOCKER_DIR, capitalize( ch->name ) );
- if ( ( fp = fopen( strsave, "w" ) ) != NULL )
- {
- fwrite_obj( ch, locker, fp, 0, OS_LOCKER );
- fprintf( fp, "#END \n\r" );
- fclose( fp );
- }
- return;
- }
- void do_locker( CHAR_DATA *ch, char *argument )
- {
- /* Variables */
- FILE *fp = NULL;
- char strsave[MAX_INPUT_LENGTH];
- char buf [MAX_INPUT_LENGTH];
- char arg[MAX_INPUT_LENGTH];
- OBJ_DATA *locker;
- if ( IS_NPC(ch) )
- return;
- argument = one_argument(argument, arg);
- if ( arg[0] == '\0' )
- {
- send_to_char( "Syntax: locker <open | close>\r\n", ch );
- }
- if( ! str_cmp( arg, "open" ) )
- {
- if (ch->in_room->vnum != ROOM_LOCKER)
- {
- send_to_char( "Does this smell like a locker room to you?\r\n", ch );
- return;
- }
- for( locker = ch->in_room->first_content; locker ; locker = locker->next_content)
- {
- if( locker->name == ch->name )
- break;
- }
- if (locker)
- {
- send_to_char("Your locker is already open.\n\r",ch);
- return;
- }
- sprintf( strsave, "%s%s", LOCKER_DIR, capitalize( ch->name ) );
- if ( ( fp = fopen( strsave, "r" ) ) != NULL )
- {
- if (ch->gold < 10000)
- {
- send_to_char("You do not have enough gold.\n\r",ch);
- fclose( fp );
- return;
- }
- ch->gold -= 10000;
- for ( ; ; )
- {
- char letter;
- char *word;
- letter = fread_letter( fp );
- if ( letter == '#')
- {
- word = fread_word( fp );
- if (!strcmp(word,"END" ))
- break;
- if (!strcmp(word,"OBJECT"))
- {
- fread_obj( ch, fp, OS_LOCKER );
- }
- }
- }
- fclose( fp );
- }
- else
- {
- if (ch->gold < 100000)
- {
- send_to_char("You do not have enough gold to create a locker.\n\r",ch);
- return;
- }
- ch->gold -= 100000;
- locker = create_object(get_obj_index(OBJ_VNUM_LOCKER),0);
- sprintf(buf, locker->name, ch->name);
- STRFREE( locker->name);
- locker->name = STRALLOC(buf);
- sprintf(buf, locker->short_descr, ch->name);
- STRFREE( locker->short_descr);
- locker->short_descr = STRALLOC(buf);
- sprintf(buf, locker->description, ch->name);
- STRFREE( locker->description);
- locker->description = STRALLOC(buf);
- obj_to_room( locker, ch->in_room );
- }
- act(AT_TELL, "$n opens $s locker.",ch, NULL, NULL, TO_ROOM);
- act(AT_TELL, "You open your locker.",ch, NULL, NULL, TO_CHAR);
- }
- else if( ! str_cmp( arg, "close" ) )
- {
- if(ch->in_room->vnum != ROOM_LOCKER )
- {
- send_to_char( "You are not currently in the locker room.\r\n", ch );
- return;
- }
- for( locker = ch->in_room->first_content; locker ; locker = locker->next_content )
- {
- if( locker->name == ch->name )
- break;
- }
- if (!locker)
- {
- send_to_char("Your locker is not open.\n\r",ch);
- return;
- }
- else
- {
- act(AT_TELL, "$n closes $s locker.",ch, NULL, NULL, TO_ROOM);
- act(AT_TELL, "You close your locker.", ch, NULL, NULL, TO_CHAR);
- fwrite_locker( ch, locker );
- extract_obj(locker);
- }
- }
- return;
- }
Add Comment
Please, Sign In to add comment