On Sun, 7 Sep 1997, David Kasprzyk wrote:
-+You get the the idea.
I get the idea, but what's the question? I suspect your question
is how to make the menu appear differently for each race. This is a
simple matter of,
const char *hometown_names[NUM_HOMETOWNS] = {
"Midgaard",
.
.
.
};
const bool hometown_races[NUM_HOMETOWNS][NUM_RACES] = {
/* Hum Dwa Elf */
{ 1, 1, 1 }, /* Midgaard */
.
.
.
};
void DisplayHometownMenu(struct char_data *ch)
{
int race = GET_RACE(ch), i, j = 0;
for (i = 0; i < NUM_HOMETOWNS; i++)
if (hometown_races[i][race])
sprintf(buf, "%c) %s\r\n", i+'a', hometown_names[i]);
}
int CheckHometownEntry(struct char_data *ch, int i)
{
int h = i-'a';
if (hometown_races[h][GET_RACE(ch)])
return 1;
return 0;
}
You can handle the CON_ state stuff for yourself. Uhm, this is assuming
that this is what you wanted to know. And it's important to ntoe that
it assigns a constant letter to each hometown. For instance, say you have
the hometowns "Midgaard", "Riaven Falls", and "Varlai". These would be
'a', 'b', 'c'. Now say you have a race that cannot start in Riaven
Falls. The menu would look like:
a) Midgaard
c) Varlai
No 'b' is shown or accepted. This is to simplify the code. If you want
to make it letter/number relative to the actual cities availible...well,
it shouldn't be too difficult. :)
This is all assuming that your question was in fact this. If it isn't,
uhm, perhaps you could shed some light on what you want to know? :)
--
Daniel Koepke -:- dkoepke@california.com -:- [Shadowlord/Nether]
Think.
+------------------------------------------------------------+
| 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