Re: NEWBIE: Creating a highscore listing

From: Thomas Arp (t_arp@stofanet.dk)
Date: 09/17/02


From: "Cox SMTP central" <bphutchins@COX.NET>
> I need some help getting started with a highscore listing for my mud
> (bpl18 with olc/dg_scripts). I do not want this to be held in a file,
> as it will be reset at each reboot. I want the player to type
> ..highscore.. and it will check the players stats vs what has already
> been posted, or if this is first person to check, then it will check
> against a default value. For starters, I am just trying to compare max
> hitpoints. I believe I will need to have a new structure to hold the
> current highscores, but I am not understanding exactly how this works.
> I have tried to find something similar in the code to use as
> reference, but I can't seem to find anything. Any help is greatly
> appreciated...
>
Mailer code follows.

ACMD(do_highscore) {

struct highscorelist_t {
   char str_name[MAX_NAME_LENGTH];
   sbyte str;
   char int_name[MAX_NAME_LENGTH];
   sbyte intel;
} highscorelist;

if (highscorelist.str == 0) {
  /* this user gets to fill in the first stats */
  highscorelist.str = GET_STR(ch);
  strncpy(highscorelist.str_name, GET_NAME(ch), MAX_NAME_LENGTH-1)
  highscorelist.str_name[MAX_NAME_LENGTH-1] = '\0';

  highscorelist.intel = GET_INT(ch);
  strncpy(highscorelist.int_name, GET_NAME(ch), MAX_NAME_LENGTH-1)
  highscorelist.int_name[MAX_NAME_LENGTH-1] = '\0';
}

if (GET_STR(ch) > highscorelist.str) {
  highscorelist.str = GET_STR(ch);
  strncpy(highscorelist.str_name, GET_NAME(ch), MAX_NAME_LENGTH-1)
  highscorelist.str_name[MAX_NAME_LENGTH-1] = '\0';
}

if (GET_STR(ch) > highscorelist.intel) {
  highscorelist.intel = GET_INT(ch);
  strncpy(highscorelist.int_name, GET_NAME(ch), MAX_NAME_LENGTH-1)
  highscorelist.int_name[MAX_NAME_LENGTH-1] = '\0';
}


send_to_char("Current highscores:\r\n"
             "-----------------------------------------------\r\n"
             "Strength    :   %2d   %-30s\r\n"
             "Intelligence:   %2d   %-30s\r\n"
             "-----------------------------------------------\r\n",
             highscorelist.str, highscorelist.str_name,
             highscorelist.intel, highscorelist.int_name);

}

This implementation has the obvious advantage that it can quite
easily save the struct to disk  as binary, if you wish[1].


Welcor

[1] I actually misread your question and first made this as a saving
version - figures, right ?.

--
   +---------------------------------------------------------------+
   | 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