The DGC code (publically available) has an excellent purge
command, which, if I remember correctly, it has this
feature. Might want to take a look there to see what was
done.
Edward Glamkowski, Programmer Mathematica Policy Research
EGlamkowski@mathematic-MPR.COM Princeton, NJ
http://www.mathematica-mpr.com/
Please, please, provide me with my daily helping of
preposterous and pretentious platitudes, waiter.
>----------
>From: StormeRider[SMTP:silk@ICI.NET]
>Sent: Sunday, November 02, 1997 7:42 PM
>To: CIRCLE@post.queensu.ca
>Subject: [Long][Code] !PURGE flag
>
>Ok, on my mud I decided that there are some things that I don't want to be
>purgeable. For example, the bulletin boards, and objects that people can
>sit on (not a good idea to free memory thats already freed when they stand
>up if its been purged). I added the item flag and changed do_purge to the
>below.
>
>Any ideas why it still purges them if just "purge" or still "purge <item
>flagged non-purge>"?
>
>/* clean a room of all mobiles and objects */
>ACMD(do_purge)
>{
> struct char_data *vict, *next_v;
> struct obj_data *obj, *next_o;
>
> one_argument(argument, buf);
>
> if (*buf) { /* argument supplied. destroy single object
> * or char */
> if ((vict = get_char_room_vis(ch, buf))) {
> if (!IS_NPC(vict) && (GET_LEVEL(ch) <= GET_LEVEL(vict))) {
> send_to_char("Fuuuuuuuuu!\r\n", ch);
> return;
> }
> act("$n disintegrates $N.", FALSE, ch, 0, vict, TO_NOTVICT);
>
> if (!IS_NPC(vict)) {
> sprintf(buf, "(GC) %s has purged %s.", GET_NAME(ch), GET_NAME(vict));
> mudlog(buf, BRF, LVL_GOD, TRUE);
> if (vict->desc) {
> close_socket(vict->desc);
> vict->desc = NULL;
> }
> }
> extract_char(vict);
> } else
> if ((obj = get_obj_in_list_vis(ch, buf, world[ch->in_room].contents))
> && (!IS_OBJ_STAT(obj, ITEM_NOPURGE))) {
> act("$n destroys $p.", FALSE, ch, obj, 0, TO_ROOM);
> extract_obj(obj);
> } else {
> send_to_char("Nothing here by that name.\r\n", ch);
> return;
> }
>
> send_to_char(OK, ch);
> } else { /* no argument. clean out the room */
> act("$n gestures... You are surrounded by scorching flames!",
> FALSE, ch, 0, 0, TO_ROOM);
> send_to_room("The world seems a little cleaner.\r\n", ch->in_room);
>
> for (vict = world[ch->in_room].people; vict; vict = next_v) {
> next_v = vict->next_in_room;
> if (IS_NPC(vict))
> extract_char(vict);
> }
>
> for (obj = world[ch->in_room].contents; obj; obj = next_o) {
> next_o = obj->next_content;
> if (!IS_OBJ_STAT(obj, ITEM_NOPURGE))
> extract_obj(obj);
> }
> }
>}
>
>
> .--. .----------- StormeRider
> // / \ __ / ------ winds@ici.net
> ///////\( `-, ----
> //// /// '~ ( --- CircleMUD 3.0bpl11
> // / // : ; --- cmoo.com:4004
> / / /) / --
> //..\\ http://members.tripod.com/~WindsOfStorm
> UU UU
> '//||\\`
>
>
> +------------------------------------------------------------+
> | Ensure that you have read the CircleMUD Mailing List FAQ: |
> | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
> +------------------------------------------------------------+
>
+------------------------------------------------------------+
| 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