Chris Powell wrote: > > I am trying to code it so if a char idles out with more eq the they are > allowed it will loop through and extract the eq over the limit. It works > except it will only extract one object no matter how many over the limit > they are. > > in objsave.c > > void Idle_eq_remove(struct char_data *ch, struct obj_data *obj, long *nitems) > { > int numitems = 0; > if (obj) { > if ((GET_OBJ_TYPE(obj) == ITEM_WEAPON) || > (GET_OBJ_TYPE(obj) == ITEM_ARMOR) || (GET_OBJ_TYPE(obj) == ITEM_LIGHT) || > (GET_OBJ_TYPE(obj) == ITEM_FIREWEAPON) || (GET_OBJ_TYPE(obj) == ITEM_STAFF) || > (GET_OBJ_TYPE(obj) == ITEM_MISSILE) || (GET_OBJ_TYPE(obj) == ITEM_WAND)) > { > (*nitems)++; > numitems = *nitems; > if (numitems > max_obj_save) > extract_obj(obj); > } > Idle_eq_remove(ch, obj->contains, nitems); > Idle_eq_remove(ch, obj->next_content, nitems); > } > } > > in limits.c > > else if (ch->char_specials.timer > 48 ) { > char_from_room(ch); > char_to_room(ch, 1202); > for (i = 0; i < NUM_WEARS; i++){ > if (GET_EQ(ch, i)) { > Idle_eq_remove(ch, GET_EQ(ch, i), &numitems); > } > } > Idle_eq_remove(ch, ch->carrying, &numitems); > if (ch->in_room != NOWHERE) > char_from_room(ch); > char_to_room(ch, 3); > if (ch->desc) > close_socket(ch->desc); > ch->desc = NULL; > > ___ _ _ > / _ \ _ / \ / \ Age Of War > | |_| | / \ | | | | Telnet: ageofwar.org 4000 > | _ | | O | | \_/\_/ | Web page: www.ageofwar.org/~aow > |_| |_| \_/ \___/\___/ Email: darkness@ageofwar.org > I may be way off on this one, but when I look at this: extract_obj(obj); } Idle_eq_remove(ch, obj->contains, nitems); Idle_eq_remove(ch, obj->next_content, nitems); I wonder if you just extracted the item, you probably shouldn't refer it it. +------------------------------------------------------------+ | 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