Re: [Win98] Score Bug?

From: Daniel A. Koepke (
Date: 10/30/00

On Mon, 30 Oct 2000, Andrew Straw wrote:

> ACMD(do_score)
> {
>   struct time_info_data playing_time;
>   if (IS_NPC(ch))
>     return;

You've removed some code here, such as the person's name.  It's related to
your problem, which occurs here:

>   sprintf(buf + strlen(buf), "You are a %d year old %d.", GET_AGE(ch),
> GET_RACE(ch));

If you really don't want anything above this, change this to,

    sprintf(buf, "You are a ...);

It seems likely to me that you're overflowing the global buffer, buf, as
it already contains text you probably want to overwrite, rather than
append to.  This is the affect of the change: you now overwrite the old
contents of 'buf', instead of appending to a buffer which contains text
from other sources (such as 'look', etc.).  So you either want to make the
above change, or put the code you've removed back in.

In addition, for the race, you probably don't want to print a number.  I
take it that GET_RACE(ch) returns a numeric index that refers to a race,
e.g., 0 for human (RACE_HUMAN).  You probably have an array of character
pointers with race names somewhere in your code, maybe named race_names.
You would want to use this, as an example:

    sprintf(buf, "You are a %d year old %s.", GET_AGE(ch),

This is unrelated to your crash, unless you have a problem with your
implementation of GET_RACE.  The first part of this message is a
legitimate bug regardless of any others, so you should be sure to fix that
and retest.

If problems persist, hit a good book on C, work on it a bit yourself, and
if you just can't seem to crack the case, return to the list for further

This message will self-destruct in 10 seconds.


     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  |

This archive was generated by hypermail 2b30 : 04/10/01 PDT