Re: [code] [NEWBIE] Question about calling GET_CLASS(ch)

From: Xual (xual@SATANSPAWN.ML.ORG)
Date: 11/06/98


> In patch level 14 I was tring to add a class display in the function
> do_score in act.informative.c The below is what I tried to use:
>   sprintf(buf, "Class: %d", GET_CLASS(ch));
>   if (GET_REMORT(ch) >= 0) {
>   sprintf(buf,  "   Dual: %d", GET_REMORT(ch));
>  }
> Now I have no compiling problems, but when you type score now it displays
> a number instead of a class name.  I have this same problem when I call
> GET_NAME(ch) in a mudlog command, it just displays a number.  Can anyone
> tell me what is actually be displayed and how I could get it to show the
> proper text?  Thanx.

        This is one case where a C book would come in REALLY handy...
%d is used to represent a double precision integer -- a number, which is
exactly what the GET_CLASS macro returns.  If you want to display the name
of the class you have to refer to the pc_class_types[] array, using the
GET_CLASS macro as the array element.  Something like

sprintf(buf, "Class: %s", pc_class_types[GET_CLASS(ch)]);

will work, but may give you a warning about the array having a char
subscript.  Luckily there is a function included with circle --
sprinttype()  which allows you to print out char array elements, used in
the following:

sprinttype(GET_CLASS(ch), pc_class_types, buf);
send_to_char(buf, ch);

This is the quick 'n easy, warning free method.  Hope this helps.

"Misery is boundless"
        -Xual the Torturer, on the Eve of the Sundering.

Danathara Online RPG
telnet://satanspawn.ml.org:4000


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST