Hi thanks for the suggestion. I created a new value field for objs and I redid all the obj files to include a fifth argument. Now the mud boots through all the objs but when it gets to loading the zones, I get the following error: SYSERR: Trigger #209125141 non-existant, for obj #99 If i remove this object, then I get some funky other errors and it'll crash on a diff obj. I don't have any triggers saved on obj #99. The code it points to is: case OBJ_TRIGGER: obj = (obj_data *)i; trg_proto = obj->proto_script; while (trg_proto) { rnum = real_trigger(trg_proto->vnum); if (rnum==-1) { <==================== THIS LINE sprintf(buf,"SYSERR: trigger #%d non-existant, for obj #%d", trg_proto->vnum, obj_index[obj->item_number].vnum); log(buf); } else { if (!SCRIPT(obj)) CREATE(SCRIPT(obj), struct script_data, 1); add_trigger(SCRIPT(obj), read_trigger(rnum), -1); } trg_proto = trg_proto->next; } break; where rnum = -1. I also want to thank everyone for the help on mounts. As soon as I get something workable, I'll contribute it. Richard Glover wrote: > You'll have to add a new variable to obj_flag_data in structs.h. 2 > approaches that I can think of will work. > > 1) Make a completely new variable. > 2) Increase the # of 'values' that all items have. > > Either method will consume the same amount of memory. The 2nd method will > allow you to add other parameters to your objects as well as ITEM_WEAPON. > > The 'values' are integers in stock and can handle up to 32 flags in a 32bit > compiler/opsys. > > Create a new set of bit flags in structs.h for your weapons like > > WPN_SLYUNDEAD (1 << 0) > WPN_SLYOOZE (1 << 1) > etc... > > Make a new macro in utils.h (not necessary, but handy). I'll assume you > chose option #2. > > #define WPN_FLAGS(obj) ((obj)->obj_flags.value[4]) > #define WPN_FLAGGED(obj, flag) (IS_SET(WPN_FLAGS(obj), (flag))) > > Then you'll have to change your object files to have 1 more parameter on the > numeric line that the rest of the obj values are on in db.c. > > parse_object(): > if ((retval = sscanf(line, "%d %d %d %d %d", t, t + 1, t + 2, t + 3, t + > 4)) != 5) { > log("SYSERR: Format error in second numeric line (expecting 4 args, got > %d), %s", retval, buf2); > exit(1); > } > obj_proto[i].obj_flags.value[0] = t[0]; > obj_proto[i].obj_flags.value[1] = t[1]; > obj_proto[i].obj_flags.value[2] = t[2]; > obj_proto[i].obj_flags.value[3] = t[3]; > obj_proto[i].obj_flags.value[3] = t[4]; > > If you have OasisOLC, then change oedit.c, oedit_save_to_disk. I'll let you > figure out how. > > The rest is up to you, making checks on the WPN_FLAGGED and whatnot. > > Have fun, > Rick > > -----Original Message----- > From: Shane Augustine <sca@bu.edu> > To: CIRCLE@post.queensu.ca <CIRCLE@post.queensu.ca> > Date: Friday, February 19, 1999 8:09 PM > Subject: weapon flags > > >I want to create weapon flags so these flags will only affect weapons > >and not > >other objs. It is a waste of flags using item_undead_slayer for obj > >flags when this > >flag is only affective on weapons. How would i go about adding > >specialized flags > >for only objs? > > +------------------------------------------------------------+ > | Ensure that you have read the CircleMUD Mailing List FAQ: | > | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | > +------------------------------------------------------------+ +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST