> I don't suppose any have fixed up the DOT bug that seems to be > standard with the base circle release? nod. I also added name abbreving. You must make is_abbrev antisymmetrical, ie add a if (*arg1) return 0; or something like that at the end. Take care: You must reverse the order of some is_abbrev check in the code too.... the first arg is the abbrev, so not is_abbrev("pingu", "ping") but ("ping", "pingu") /* ************************************************************************ * File: handler.c Part of CircleMUD * /* *********************************************************************** Here follows high-level versions of some earlier routines, ie functions which incorporate the actual player-data. *********************************************************************** */ /* Gekke: changed stuff so that player names can be abbreviated*/ /* And fixed a bug introduced by JE: You could do see .<name> if you were * not in the same room! */ struct char_data *get_player_room_vis(struct char_data *ch, char *name) { struct char_data *i, *j; int n=0; for (i = world[ch->in_room].people; i && n<2; i = i->next_in_room) if (!IS_NPC(i) && is_abbrev(name, i->player.name) && CAN_SEE(ch, i)) { j=i; n++; } if (n==1) return j; return NULL; } struct char_data *get_player_vis(struct char_data *ch, char *name) { struct char_data *i, *j; int n=0; for (i = character_list; i && n<2; i = i->next) if (!IS_NPC(i) && is_abbrev(name, i->player.name) && CAN_SEE(ch, i)) { j=i; n++; } if (n==1) return j; return NULL; } struct char_data *get_char_room_vis(struct char_data * ch, char *name) { struct char_data *i; int j=0, number; char tmpname[MAX_INPUT_LENGTH]; char *tmp = tmpname; /* JE 7/18/94 :-) :-) */ if (!str_cmp(name, "self") || !str_cmp(name, "me")) return ch; /* 0.<name> means PC with name */ strcpy(tmp, name); if (!(number = get_number(&tmp))) return get_player_room_vis(ch, tmp); for (i = world[ch->in_room].people; i && j <= number; i = i->next_in_room) if (CAN_SEE(ch, i) && isname(tmp, i->player.name) && ++j == number) return i; return NULL; }
This archive was generated by hypermail 2b30 : 12/07/00 PST