Re: [NEWBIE] Dibrova Code

From: Eight Ball (eightball@techemail.com)
Date: 02/17/03


--- Alex <fletchra@QSILVER.QUEENSU.CA> wrote:
>> #0  0x42078f4a in strcmp () from /lib/i686/libc.so.6
>> #1  0x08114689 in sort_spells () at spec_guilds.c:64
>step up to this function, and take a look at the data.  i'm betting that
>there's a strcmp() comparison to something that ends up being a NULL in
>there.
>Ae.

Sorry for my horrid posting manners previously :)

This is the code in question, But I fail to see the error in it?

void sort_spells(void)
{
  int a, b=0, tmp;

  /* initialize array */
  for (a = 1; a < MAX_ABILITIES; a++)
    spell_sort_info[a] = a;

  /* Sort.  'a' starts at 1, not 0, to remove 'RESERVED' */

  for (a = 1; a < MAX_ABILITIES - 1 && spell_sort_info[b]!='\n'; a++)
    for (b = a + 1; b < MAX_ABILITIES; b++)
      if (strcmp(spells[spell_sort_info[a]], spells[spell_sort_info[b]]) > 0)
      {
             tmp = spell_sort_info[a];
             spell_sort_info[a] = spell_sort_info[b];
             spell_sort_info[b] = tmp;
      }
}

char *how_good(int percent)
{
  static char buf[256];

  if (percent == 0)
    strcpy(buf, " /cw(/cc---------------/cw)/c0");
  else if (percent <= 10)
    strcpy(buf, " /cw(/cr=/cc--------------/cw)/c0");
  else if (percent <= 20)
    strcpy(buf, " /cw(/cr===/cc------------/cw)/c0");
  else if (percent <= 30)
    strcpy(buf, " /cw(/cr=====/cc----------/cw)/c0");
  else if (percent <= 40)
    strcpy(buf, " /cw(/cr=====/cy==/cc--------/cw)/c0");
  else if (percent <= 50)
    strcpy(buf, " /cw(/cr=====/cy====/cc------/cw)/c0");
  else if (percent <= 60)
    strcpy(buf, " /cw(/cr=====/cy=====/cg=/cc----/cw)/c0");
  else if (percent <= 70)
    strcpy(buf, " /cw(/cr=====/cy=====/cg==/cc---/cw)/c0");
  else if (percent <= 80)
    strcpy(buf, " /cw(/cr=====/cy=====/cg===/cc--/cw)/c0");
  else if (percent <= 90)
    strcpy(buf, " /cw(/cr=====/cy=====/cg====/cc-/cw)/c0");
  else
    strcpy(buf, " /cw(/cr=====/cy=====/cg=====/cw)/c0");

  return (buf);
}


#define LEARNED_LEVEL   0       /* % known which is considered "learned" */
#define MAX_PER_PRAC    1       /* max percent gain in skill per practice */
#define MIN_PER_PRAC    2       /* min percent gain in skill per practice */
#define PRAC_TYPE       3       /* should it say 'spell' or 'skill'?     */

#define LEARNED(ch) (prac_params[LEARNED_LEVEL][(int)GET_CLASS(ch)])
#define MINGAIN(ch) (prac_params[MIN_PER_PRAC][(int)GET_CLASS(ch)])
#define MAXGAIN(ch) (prac_params[MAX_PER_PRAC][(int)GET_CLASS(ch)])
#define ABIL(ch)    (prac_types[prac_params[PRAC_TYPE][(int)GET_CLASS(ch)]])

Of coarse it is prolly stareing me right in the face.
R.W.

_____________________________________________________________
Are you a Techie? Get Your Free Tech Email Address Now! Visit http://www.TechEmail.com

_____________________________________________________________
Select your own custom email address for FREE! Get you@yourchoice.com w/No Ads, 6MB, POP & more! http://www.everyone.net/selectmail?campaign=tag

--
   +---------------------------------------------------------------+
   | 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/26/03 PDT