On Wed, 15 Jan 1997, Daniel Durnin wrote:
> SPECIAL(Instructor);
>
> else {
> for (tch = world[instructor->in_room].people; tch; tch =
> tch->next_in_room) {
> if (IS_NPC(tch))
> if ((GET_MOB_VNUM(tch) == 11118) || (GET_MOB_VNUM(tch) == 11119)) {
> return (FALSE);
> } else {
> r_num =
> (world[world[world[world[ch->in_room].dir_option[2]->to_room].dir_option[2]-
> >
> to_room].dir_option[2]->to_room].dir_option[2]->to_room);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
A very very very dangerous code part. if just one of those
dir_option[2] don't exists, then *BANG BUM CRASH*
<--snip-->
> r_num = (world[r_num].dir_option[2]->to_room);
^^^^^^^^^^^
Same for this.
Now people may say "Well. if the mob don't move around and it is loaded in
the right room all the time.", then I say "Well. Players could charm it,
or a immortal play around [loading them everywhere], then the crashes will
come."
Try something like this:
if ((r_num = (EXIT(r_num, 2) ? EXIT(r_num, 2)->to_room : -1)) != -1)
{
/* Was exit code */
} else {
/* Wasn't exit code */
}
Enjoy.
Erik Niese-Petersen
AKA Quint the typo dane
Realms of Darkness IMP
+-----------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://cspo.queensu.ca/~fletcher/Circle/list_faq.html |
+-----------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/18/00 PST