Ok, because I have gotten so sick and tired of people asking how to restring objects without fucking up the prototypes, here's my function for it that I wrote like 6 months ago and have been too lazy to post. First, in structs.h add in somewhere: #define OBJ_SDESC 0 /* An objects short desc: 'a long sword' */ #define OBJ_DESC 1 /* Room descript: 'A long sword lies here.' */ #define OBJ_NAME 2 /* It's keywords: 'sword long steel' */ #define OBJ_ACTDESC 3 /* It's actdesc, useful for notes and paper */ Ok then add this to the prototypes at the beginning of utils.h: bool rename_obj(struct obj_data *obj, char *rename_string, int descr); Then add this to the end of utils.h: bool rename_obj(struct obj_data *obj, char *rename_string, int descr) { int i; switch (descr) { case OBJ_SDESC: if ((i = GET_OBJ_RNUM(obj)) > -1) { if (obj->short_description && obj->short_description != find_obj(i)->short_description) free(obj->short_description); } else if (obj->short_description) free(obj->short_description); obj->short_description = str_dup(rename_string); return 1; break; case OBJ_DESC: if ((i = GET_OBJ_RNUM(obj)) > -1) { if (obj->description && obj->description != find_obj(i)->description) free(obj->description); } else if (obj->description) free(obj->description); obj->description = str_dup(rename_string); return 1; break; case OBJ_NAME: if ((i = GET_OBJ_RNUM(obj)) > -1) { if (obj->name && obj->name != find_obj(i)->name) free(obj->name); } else if (obj->name) free(obj->name); obj->name = str_dup(rename_string); return 1; break; case OBJ_ACTDESC: if ((i = GET_OBJ_RNUM(obj)) > -1) { if (obj->action_description && obj->action_description != find_obj(i)->action_description) free(obj->action_description); } else if (obj->action_description) free(obj->action_description); obj->action_description = str_dup(rename_string); return 1; break; default: sprintf(buf, "ERROR: Invalid object name pointer passed to rename_obj()."); mudlog(buf, CMP, LVL_IMPL, TRUE); return 0; break; } } Now to rename a steel longsword fully into a bucket of KFC, you'd call: rename_obj(obj, "a bucket of KFC", OBJ_SDESC); rename_obj(obj, "bucket KFC", OBJ_NAME); rename_obj(obj, "A steaming and yummy bucket of KFC lies here.", OBJ_DESC); Now you can restring objects into whatever you want. Add this to the snippets page, add it to the ftp site, whatever. Just try and give me a little credit somewhere. :) And if you use it, send me an email just so I know if people out there are actually using my code. :) Hades of Ebon Mists Ps. I *BELIEVE* the find_obj() function will work correctly... I removed the use of RNUMS from my mud, and edited the find_obj function so it will still work correctly, but that was eons ago. If someone finds that this code does NOT work/compile correctly, let me know, the problem probably lies in the find_obj function then. +-----------------------------------------------------------+ | 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/18/00 PST