> else if(load_result == RACE_HELP) {
> page_string(d, race_help, 1);
> SEND_TO_Q(race_menu, d);
> STATE(d) = CON_QRACE;
> break;
> }
i've done something similar..i doubt it's the best way, but it does
exactly what i want..at the race menu, when someone types just '?' they
get a single help screen that shows the stat bonuses for the races (and
acts as a secondary menu)..if the player types '?<letter>' they get the
help file for that race..here's my code from interpreter.c and my
parse_race..that should give you an idea..
class.c:
int parse_race(char *arg, struct descriptor_data *d)
{
int help_no = -1;
*arg = LOWER(*arg);
switch (*arg) {
case 'a':
return RACE_HUMAN;
break;
case 'b':
return RACE_ELF;
.
.
[races snipped]
.
.
break;
case 'p':
return RACE_FAIRY;
break;
case 'q':
return RACE_YETI;
break;
case '?':
*(arg + 1) = LOWER(*(arg + 1));
switch (*(arg + 1)) {
case 'a':
sprintf(buf, "human");
break;
case 'b':
sprintf(buf, "elf");
break;
.
.
[races snipped]
.
.
sprintf(buf, "fairy");
break;
case 'q':
sprintf(buf, "yeti");
break;
default:
return RACE_HELP;
}
break;
default:
return RACE_UNDEFINED;
break;
}
help_no = find_help(buf);
if (help_no > 1)
SEND_TO_Q(help_table[help_no].entry, d);
else {
sprintf(buf1, "There is no help available on '%s'\r\n", buf);
SEND_TO_Q(buf1, d);
}
return VIEWING_RACE_HELP;
}
interpreter.c:
case CON_QRACE:
load_result = parse_race(arg, d);
if (load_result == RACE_UNDEFINED) {
SEND_TO_Q("\r\nThat is not an option.\r\n", d);
SEND_TO_Q(race_menu, d);
SEND_TO_Q("\r\nRace: ", d);
} else if (load_result == RACE_HELP) {
SEND_TO_Q(race_help, d);
SEND_TO_Q("\r\nRace: ", d);
} else if (load_result == VIEWING_RACE_HELP) {
STATE(d) = CON_V_RACE_HELP;
SEND_TO_Q("\r\nPress Return When Finished.", d);
} else {
GET_RACE(d->character) = load_result;
SEND_TO_Q("\r\nWhat is your class?", d);
SEND_TO_Q(class_menu, d);
SEND_TO_Q("\r\nClass: ", d);
STATE(d) = CON_QCLASS;
}
break;
case CON_V_RACE_HELP:
SEND_TO_Q("\r\nWhat is your race?", d);
SEND_TO_Q(race_menu, d);
SEND_TO_Q("\r\nRace: ", d);
STATE(d) = CON_QRACE;
break;
+------------------------------------------------------------+
| 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/15/00 PST