Welp, I figured out a way to do this for MOBS, if someone could please help me figure out a way to do this for objects, it would be much appreciated ;) Anyways, what this does is simple. Currently, in CircleMUD, the max existing field in the zone files stands for max existing in the entire WORLD (the whole MUD!), where I wanted it so that max existing was for ZONE. In db.c in function void reset_zone: Make the beginning look like this: void reset_zone(int zone) { int cmd_no, last_cmd = 0; struct char_data *mob = NULL; struct obj_data *obj, *obj_to; int found=0; struct char_data *nr; ... down farther, replace case 'M' with mine: case 'M': /* read a mobile */ found = 0; for (nr = character_list; nr; nr=nr->next) { if (IS_NPC(nr) && world[nr->in_room].zone == zone && nr->nr == ZCMD.arg1) { found++; } } if (found < ZCMD.arg2) { mob = read_mobile(ZCMD.arg1, REAL); char_to_room(mob, ZCMD.arg3); last_cmd = 1; } else last_cmd = 0; break; That's it... Basically it counts how many of a particular mob if it's in the zone being reset. THEN if theres less then the max existing it creates it. Melen Allanthya MUD: mad.eshores.com port 4000 +-----------------------------------------------------------+ | 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/07/00 PST