Ok, can anyone see any inherent errors in this code? The two characters are both in the same guild (an immortal guild), both GET_GUILD(ch)'s = 1. I've checked the pfiles as well. As soon as I do a guildlist on one of them it says the guild is invalid (*something is screwed up with a guild pointer*). It didn't do this before I started using the is_in_guild proc, so I am wondering if this might somehow coruppt the guild pointers. (*which as you can tell would not be a good thing...*) If I have the second one whose guild is invalid try to join (*immortal command that searches through the guilds and just sets the GET_GUILD (ch), no changes made to it at all*), it crashes the mud. Interesting enough, when I put in the logging and tried a guildlist, the log shows: Tue Nov 25 07:11:05 :: Char Pajro: GUILD [1], ginfo.number [1] Tue Nov 25 07:11:05 :: Char StormRider: GUILD [1], ginfo.number [1918986307] Anyways: int is_in_guild(struct char_data *ch, struct guild_type *ginfo) { char *buf; if (ginfo == NULL) { log("Invalid guild call!!"); return 0; } sprintf(buf, "Char %s: GUILD [%d], ginfo.number [%d]", GET_NAME(ch), GET_GUILD(ch), ginfo->number); log(buf); switch (ginfo->gtype) { case 1: if (GET_GUILD(ch) == ginfo->number) return 1; /* yes */ else return 0; /* no */ case 2: if (GET_SGUILD(ch) == ginfo->number) return 1; /* yes */ else return 0; /* no */ case 3: if (GET_SHGUILD(ch) == ginfo->number) return 1; /* yes */ else return 0; /* no */ default: break; } return 0; } and here's the guildlist funct (yes it still has to be cleaned up, not as much worried about that part yet): ACMD(do_guild_list) { struct descriptor_data *i; struct guild_type *gptr = NULL; if (IS_NPC(ch)) return; if (GET_GUILD(ch) == GUILD_NONE || GET_GUILD(ch) == GUILD_UNDEFINED) { send_to_char("You must be a member of a guild to do this.\n\r", ch); return; } for (gptr = g_info; gptr && gptr->number != GET_GUILD(ch); gptr = gptr->next) /* The for loop should do all the work */; if (gptr == NULL) { send_to_char("It seems as though your guild is invalid!\r\n", ch); return; } send_to_char(CCNRM(ch, C_NRM), ch); send_to_char("___________________________________________",ch); send_to_char("\r\n\r\n",ch); sprintf(buf, "Other members of %s", gptr->name); sprintf(buf, "%s...\r\n___________________________________________%s\r\n\r\n", buf, CCNRM(ch, C_NRM)); send_to_char(buf, ch); /* Go through the entire list of players color coding those who are on*/ for (i = descriptor_list; i; i = i->next) { if (is_in_guild(i->character, gptr)) { if ((!PLR_FLAGGED(i->character, PLR_GINVIS)) && (GET_INVIS_LEV(i->character) <= GET_LEVEL(ch))){ if (GET_LEVEL(i->character) >= LVL_IMMORT) { sprintf(buf, "(%d)[%s]%s %s\r\n", GET_GUILD_LEV(i->character),GET_GTITLE(i->character), IMM_NAME(i->character), GET_TITLE(i->character)); send_to_char(buf, ch); } else { sprintf(buf, "(%d)[%s]%s %s\r\n", GET_GUILD_LEV(i->character),GET_GTITLE(i->character), GET_NAME(i->character), GET_TITLE(i->character)); send_to_char(buf, ch); } } else { if (GET_GUILD_LEV(ch) > 4 && (GET_GUILD_LEV(ch) > GET_GUILD_LEV(i->character))) { sprintf(buf, "(%d){I}[%s]%s %s\r\n", GET_GUILD_LEV(i->character), GET_GTITLE(i->character), GET_NAME(i->character), GET_TITLE(i->character)); send_to_char(buf, ch); } } } } } StormeRider --- http://www.windsofstorm.net/wos/ silk@ici.net --- telnet://cmoo.com:4004 +------------------------------------------------------------+ | 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