#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #endif #include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include "merc.h" #include "newclan.h" bool char_exists( bool backup, char *argument ); bool check_parse_name( char *name ); void do_pload(CHAR_DATA *ch, char *argument) { char buf[MAX_STRING_LENGTH], name[MAX_STRING_LENGTH / 4]; DESCRIPTOR_DATA *d; ROOM_INDEX_DATA *in_room; bool fOld; if (IS_NPC(ch) || ch->desc == NULL || ch->in_room == NULL) return; if (argument[0] == '\0') { send_to_char("Syntax: pload <name>.\n\r", ch); return; } if (!check_parse_name(argument)) { send_to_char("Thats an illegal name.\n\r", ch); return; } if (get_char_world(ch, argument) != NULL) { send_to_char("You cannot load a person who is online.\n\r", ch); return; } if (!char_exists(TRUE, argument)) { send_to_char("That player doesn't exist.\n\r", ch); return; } argument[0] = UPPER(argument[0]); save_char_obj(ch); sprintf(buf, "You transform into %s.\n\r", argument); send_to_char(buf, ch); sprintf(buf, "$n transforms into %s.", argument); act(buf, ch, NULL, NULL, TO_ROOM); sprintf(name, "%s", ch->name); // send_to_char(name,ch); d = ch->desc; /* Assign Current desc to D */ in_room = ch->in_room; /* in_room where you are originaly */ extract_char(ch, TRUE); /* Remove your character */ d->character = NULL; /* Make your character point to nothing */ fOld = load_char_obj(d, argument); /* Load the new character into D */ ch = d->character; /* Character = New Character */ ch->next = char_list; /* Add ch to stack */ char_list = ch; /* Mark person as last in stack */ char_to_room(ch, in_room); /* Put person in room where old char was */ update_roster(ch, FALSE); ch->pload = str_dup(name); sprintf(buf, "Your Pload is %s.\n\r", ch->pload); send_to_char(buf, ch); return; } void do_preturn(CHAR_DATA *ch, char *argument) { char arg[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; DESCRIPTOR_DATA *d; bool fOld; if (!(ch != NULL && ch->desc != NULL)) { printf_debug("Preturn, null char or desc"); return; } if (IS_NPC(ch)) { send_to_char("Huh?\n\r", ch); return; } if (ch->pload == NULL) { send_to_char("Huh?\n\r", ch); return; } strcpy(arg, ch->pload); if (strlen(arg) < 3 || strlen(arg) > 10) { send_to_char("Huh?(STRLEN)\n\r", ch); return; } // if (!str_cmp(ch->pload,arg)) {send_to_char("Huh?\n\r",ch);return;} sprintf(buf, "You transform back into %s.\n\r", capitalize(ch->pload)); send_to_char(buf, ch); sprintf(buf, "$n transforms back into %s.", capitalize(ch->pload)); act(buf, ch, NULL, NULL, TO_ROOM); d = ch->desc; if (ch != NULL && ch->desc != NULL) extract_char(ch, TRUE); else if (ch != NULL) extract_char(ch, TRUE); if (ch->desc) ch->desc->character = NULL; /* ch->next = char_list; char_list = ch; */ fOld = load_char_obj(d, capitalize(arg)); ch = d->character; ch->next = char_list; char_list = ch; if (ch->in_room != NULL) char_to_room(ch, ch->in_room); else char_to_room(ch, get_room_index(3001)); free_string(ch->pload); ch->pload = str_dup(""); return; } bool char_exists(bool backup, char *argument) { FILE *fp; char buf[MAX_STRING_LENGTH]; bool found = FALSE; sprintf(buf, "%s%s%s%s", PLAYER_DIR, initial(argument), "/", capitalize( argument)); if ((fp = fopen(buf, "r")) != NULL) { found = TRUE; fclose(fp); } return found; }