Anyone has implemented the 'combining objects when looking code' that was posted here in the list? Wll, I have, and it gives me this bug: Sometimes, when I look at someone's inventory, some objects will be listed twice. For example: > You try to peek at his inventory: > a guard's chain mail hauberk > a guard's chain mail hauberk However, when the character sees his inventory the item is listed only once! I've noticed that this happens when I give something to someone or when someone stops wearing the item (but not when someone uses 'remove all'). Anyone else has experienced this? How can I fix the bug? I've looked everywhere but I still don't know what is causing the problem... ----------------------- Time for some code ------------------------------ In act.informative.c: ------------------------------------ in list_obj_to_char ----------------------------------- void list_obj_to_char(struct obj_data * list, struct char_data * ch, int mode, bool show) { struct obj_data *i, *j; char buf[10]; bool found; int num; found = FALSE; for (i = list; i; i = i->next_content) { num = 0; for (j = list; j != i; j = j->next_content) if (j->item_number==NOTHING) { if(strcmp(j->short_description,i->short_description)==0) break; } else if (j->item_number==i->item_number) break; if (j!=i) continue; for (j = i; j; j = j->next_content) if (j->item_number==NOTHING) { if(strcmp(j->short_description,i->short_description)==0) num++; } else if (j->item_number==i->item_number) num++; if (CAN_SEE_OBJ(ch, i)) { if (num!=1) { sprintf(buf,"(%2i) ",num); send_to_char(buf,ch); } show_obj_to_char(i, ch, mode); found = TRUE; } } if (!found && show) send_to_char(" Nothing.\r\n", ch); } ---------------------------------------- in look_at_char ---------------------------------------- if (ch != i && (GET_CLASS(ch) == CLASS_THIEF || GET_LEVEL(ch) >= LVL_IMMORT)) { found = FALSE; act("\r\nYou peek at $s inventory:", FALSE, i, 0, ch, TO_VICT); list_obj_to_char(i->carrying, ch, 1, TRUE); found = TRUE; for (tmp_obj = i->carrying; tmp_obj; tmp_obj = tmp_obj->next_content) { if (CAN_SEE_OBJ(ch, tmp_obj) && (number(0, 20) < GET_LEVEL(ch))) { show_obj_to_char(tmp_obj, ch, 1); found = TRUE; } } ------------------------------------------------------------------------------ Visita Agharti!!! | Carlos Rodriguez http://wwww.chs.itesm.mx:8080/ | crodrigu@campus.chs.itesm.mx crodrigu/Agharti/ | webadmin@campus.chs.itesm.mx | http://www.chs.itesm.mx:8080/crodrigu/ ------------------------------------------------------------------------------
This archive was generated by hypermail 2b30 : 12/07/00 PST