> Well, I'll try to help as much as I can. I do not have the e-mail about the > save_char stuff, so I can't send it out. Anyway, just send me a personal I believe this is it.. the other stuff is cut out.. Hey - I wrote this. Boy, i'm witty! ---------------------------------------------------------------- Re: [CODE] 2 odd things that haunt me.. (fwd) ---- I can't remember if I added this or not... utils.h:#define GET_LOADROOM(ch) ((ch)->player_specials->saved.load_room) act.movement.c: (inside the death trap function) GET_LOADROOM(ch)=NOWHERE; save_char(ch,NOWHERE); act.other.c: do_quit() - at the topish. if (!IS_SET(PLR_FLAGS(ch),PLR_LOADROOM)) { GET_LOADROOM(ch)=ch->in_room; } act.other.c: (lower in do_quit right after the line sending "you die before your time") GET_LOADROOM(ch)=NOWHERE; act.other.c: (lower yet - before the extract from free_rent check) if(!IS_SET(PLR_FLAGS(ch),PLR_LOADROOM)) { save_room=ch->in_room; } else { save_room=GET_LOADROOM(ch); } REMOVE_BIT(PLR_FLAGS(ch),PLR_IN_ARENA); save_char(ch, save_room); act.other.c: do_save (right after the message saying "you have been saved or something") if(!IS_SET(PLR_FLAGS(ch),PLR_LOADROOM)) { GET_LOADROOM(ch)=ch->in_room; save_char(ch, ch->in_room); } else { save_char(ch, GET_LOADROOM(ch)); } db.c, in save_char: if (!IS_SET(PLR_FLAGS(ch), PLR_LOADROOM)) { if (load_room == NOWHERE) player.player_specials_saved.load_room = NOWHERE; else player.player_specials_saved.load_room = world[load_room].number; } then grep for save_char( change them all to save_char(d->character, GET_LOADROOM(d->character)); or save_char(ch, GET_LOADROOM(ch)); Yes, this code is repitive.. and I might add, incomplete. This is deliberate. I had lots of fun writing this in as obfuscated of a pattern as I could. I wouldn't want to deprive you of this joy. It really is not hard at all to do this. As a matter of fact, its rather simplistic. here's what you have to do. 1) check if the person has a LOADROOM - if so, save them with their loadroom as the entrance room. 2) if they don't have a loadroom, set their entrance room to the room they quit in. 3) if they die, or something, make sure they don't load in that room. 4) default to nowhere, and make load_char put char in room --- where if the room is nowhere, either immortal or mortal start_room.. this is default behavior i believe. It should take you 15 minutes, w/o looking at my slightly mixed up code. probably 25 if you do. :) PjD +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST