G'Day,
I'm trying to save the players location when they type the word "quit",
but it seems to be saving the location as -1 (ie NOWHERE). I have modified
the code in a number of places. (listed below). This is for win95 also. and
rent is for free.
<in act.other.c ...>
ACMD(do_quit)
{
....
// STOCK CODE HERE
/*
* kill off all sockets connected to the same player as the one who is
* trying to quit. Helps to maintain sanity as well as prevent duping.
*/
for (d = descriptor_list; d; d = next_d) {
next_d = d->next;
if (d == ch->desc)
continue;
if (d->character && (GET_IDNUM(d->character) == GET_IDNUM(ch)))
close_socket(d);
}
// MY ADDITIONS HERE
// Saves the player to the room they are in - Jus.
save_room = ch->in_room;
ch->player_specials->saved.load_room = IN_ROOM(ch);
save_char (ch, save_room);
// STOCK CODE CONTINUES HERE .....
if (free_rent)
Crash_rentsave(ch, 0);
extract_char(ch); /* Char is saved in extract char */
/* If someone is quitting in their house, let them load back here */
if (ROOM_FLAGGED(save_room, ROOM_HOUSE))
save_char(ch, save_room);
}
}
<now in handler.c, in extract_char>
/* pull the char from the list */
REMOVE_FROM_LIST(ch, character_list, next);
if (ch->desc && ch->desc->original)
do_return(ch, "", 0, 0);
if (!IS_NPC(ch)) {
// MY ADDITION
save_char(ch, ch->player_specials->saved.load_room);
// save_char(ch, NOWHERE) .... OLD LINE. NEW ONE ABOVE.
// STOCK CODE CONTINUES ..
Crash_delete_crashfile(ch);
} else {
if (GET_MOB_RNUM(ch) > -1) /* if mobile */
mob_index[GET_MOB_RNUM(ch)].number--;
clearMemory(ch); /* Only NPC's can have memory */
free_char(ch);
freed = 1;
}
// STOCK CODE CONTINUES ..
this is as much as I can remember. Please please .. help =~~~~~~~(
a crying jussy.
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST