----- Original Message ----- From: "Vladimir Nano" <nano.vladimir@SLSP.SK> > Hallo:-) > I'm using bpl18 and now i'm adding masks. > When player wears mask, he is masked and nobody knows his name. (only gods) > Now i want to change functions in handler.c: get_char_room(), > get_player_room(), .... > In these functions is used i->player.name. Why? I think GET_NAME() macro is > usable. > What do You think about it? > From utils.h: #define GET_NAME(ch) (IS_NPC(ch) ? \ (ch)->player.short_descr : GET_PC_NAME(ch)) In other words; if you were checking on GET_NAME() instead, you'd find mobs based on their shortdesc instead of their alias list. I'd suggest you use a slightly different approach, adding a 'orig_name' variable to the player struct, and using that whenever you output the name to someone who is high enough level, etc. <pseudocode> in char_data (player_data): char *orig_name; in utils.h redefine: #define GET_PC_NAME(ch, viewer) (((viewer) && \ (GET_LEVEL(viewer)>LVL_IMMORT || viewer==ch)) ? \ (ch)->player.orig_name : (ch)->player.name) #define GET_NAME(ch, viewer) (IS_NPC(ch) ? \ (ch)->player.short_descr : GET_PC_NAME(ch, viewer)) Change all of the occurrences of GET_NAME(blah) to GET_NAME(blah, blah) Setup orig_name in interpreter.c: (ch)->player.orig_name = str_dup((ch)->player.name); if (PLR_FLAGGED(ch, PLR_MASKED)) { free(ch->player.name); (ch)->player.name = str_dup("Some masked name"); } Remember to free() the memory when removing/wearing the mask, and in free_char() </pseudocode> I hope this helps a bit. Welcor -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT