Re: editing do_who & do_score 981@sps43.candu.aecl.ca>

From: Aaron Miller (archmage@CRYOGEN.COM)
Date: 12/03/97


>>i know this is a newbie question, but i have been trying to redo the
>>do_score & do_who for sometime. I have added races in. which thats what i
>>am trying to add to both of these commands or atleast the who command.
>> In do_score i have been trying to edit it so when you type score it looks
>> like this:
>>
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>| HitPoints:          Mana:          Move:          Age:         |
>>| MaxHit:          MaxMana:        MaxMove:        Race:         |
>>|                                                                |
>>| PlayersName:           Ac:           XP:            Gold:      |
>>| Class:                 Level:         XPtoLvl:                 |
>>|                                                                |
>>|    STR:       DEX:      WIS:      INT:     CON:      CHR:      |
>>|                                                                |
>>|                    { Name mud HERE}                            |
>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>This is too lame...Look at the current do_score, and just add some
>spaces and shit in it...read a C book, specifically the printf function,
>sprintf being the same but using a buffer...
>
Come now, not everyone has the time to learn C, and some people are just
not good at programming and other mathematical things. That doesn't mean he
couldn't run a decent MUD, perhaps he is very creative or what not.
>I'll even step you through the first line...
>
>>| HitPoints:          Mana:          Move:          Age:         |
>sprintf( buf, "| HitPoints: %4d Mana: %4d Move: %4d Age: %4d |\r\n",
>GET_HIT( ch ), GET_MANA( ch ), GET_MOVE( ch ), GET_AGE( ch ));
>
>Look in utils.h for the defines...
Original Poster:

 I'll break this down for you. The way CircleMUD displays text to a character
is by writing it to a buffer (buf is the most common, sometimes it uses
buf2, etc) and then using the function send_to_char. the function sprintf()
writes
something to a buffer. So:

  sprintf(buf, "Hello!"); /* always remember the ; on functions */
  send_to_char(buf, ch);

Would send "Hello!" to the character (ch). A simpler way would be:

  send_to_char("Hello!", ch);

Unfortunately, send_to_char cannot be used to display variables inside
a string of text, for this we must use sprintf like so..

  sprintf(buf, "Hit Points: %d", GET_HIT(ch));
  send_to_char(buf, ch);

GET_HIT is called a macro, something defined in the code that you can use
instead of typing out the entire variable.

I hope this helps.


     +------------------------------------------------------------+
     | 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/08/00 PST