I have implemented (or will have when this is fixed) the ability for
immortals to either accapt or decline all new players. When a new player
logs in everything goes fine and it sends the massage to all the gods
telling them there is a new char and to either approve or reject him/her
based on his/her name. The problem is that when a god tries to either
approve or deny a player the MUD stops responding to everyone but does not
crash and so produces no core dump. The relevent code follows with a
comment in the place I have traced and see is the last part executed in
nanny.
**snip from nanny() in interpreter.c**
d->character->approved = 0;
STATE(d) = CON_APPROVE;
// code definately executes to here
break;
case CON_APPROVE:
SEND_TO_Q("Waiting...\r\n", d); //this should say waiting everytime this
case is called but it never says it so it must never get there
if (d->character->approved = 1) {
SEND_TO_Q("\r\nYour character has been accepted!\r\n", d);
save_char(d->character, NOWHERE);
SEND_TO_Q(motd, d);
SEND_TO_Q("\r\n\n*** PRESS RETURN: ", d);
STATE(d) = CON_RMOTD;
sprintf(buf, "%s [%s] new player approved.", GET_NAME(d->character),
d->host);
mudlog(buf, NRM, LVL_IMMORT, TRUE);
}
else if(d->character->approved = -1) {
SEND_TO_Q("Your character application has been denyed.\r\n", d);
sprintf(buf, "%s [%s] new player denied.", GET_NAME(d->character),
d->host);
SEND_TO_Q("Goodbye.\r\n", d);
STATE(d) = CON_CLOSE;
}
else {
STATE(d) = CON_APPROVE;
}
break;
case CON_RMOTD: /* read CR after printing motd */
SEND_TO_Q(MENU, d);
STATE(d) = CON_MENU;
break;
**end snip**
**snip of do_wizutil in act.wizard.c**
case SCMD_APPROVE:
if (STATE(vict->desc) == CON_APPROVE) {
vict->approved = 1;
send_to_char("New player approved.\r\n", ch);
}
else
send_to_char("That player is not waiting for approval!\r\n", ch);
break;
case SCMD_DENY:
if (STATE(vict->desc) == CON_APPROVE) {
vict->approved = -1;
send_to_char("New player denied.\r\n", ch);
}
else
send_to_char("That player is not waiting for approval!\r\n", ch);
break;
default:
log("SYSERR: Unknown subcmd passed to do_wizutil (act.wizard.c)");
break;
}
save_char(vict, NOWHERE);
}
}
**end snip**
Sorry about the length of this message but I think all the code for my
problem areas was necesary.
Kyle Goodwin
-Reluthan- FirocMUD: firoc.ml.org:4000
+------------------------------------------------------------+
| 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