// ************************************************************* // // * This is just a simple setup for create_object to stop any * // // * future problems with 'missing objects' I know many people* // // * Have issues with it, so this is the fix.. it is alittle * // // * time consuming. So Please, do not do this if you are lazy* // // ************************************************************* // // *This requires a function from my log_string replacement* // in db.c find create_object (the function) and replace it with this. OBJ_DATA *__create_object( OBJ_INDEX_DATA *pObjIndex, int level, int vnum, const char *file, const char *ifunction, int line) Now, down in where it says if(pObjIndex == NULL), replace that whole thing with this. if ( pObjIndex == NULL ) { nlogf( "Create_object: NULL pObjIndex: vnum %d, file: %s, function: %s, line: %d", vnum, file, ifunction, line ); exit( 1 ); } This will effectively log what file, function, and line of code caused the 'missing object' and the vnum of said-object. Now, in merc.h or proto.h, whatever you have, replace your create_object with the following. OD * __create_object args( ( OBJ_INDEX_DATA *pObjIndex, int level, int vnum, const char *file, const char *ifunction, int line) ); #define create_object( pObjIndex, level, vnum) __create_object(pObjIndex, level, vnum, __FILE__, __FUNCTION__, __LINE__ ) Now here is the 'fun' part if you will. Every single call to create_object, must now have a third variable, the objects vnum. An example of this would be be like this. pObj = create_object(get_obj_index(OBJ_VNUM_SCHOOL_SWORD), 1, OBJ_VNUM_SCHOOL_SWORD); The only other option i can see to this, is to remove the call to pObjIndex from create_object, and have the get_obj_index done inside of the create_object function itself, which, as fun as that sounds, it honestly isn't. I didn't do that change because, well, this one was easier, atleast in my opinion. Enjoy