Paolo "Razor" Greco supplies a snippet allowing for admins to change the names of players. Usage: Namechange Will cermanently change the name of a given PC and saving him afterward. This is based on a snipped posted on circlemud mailing list by Someone I Don'T Remember. Written in italian language for CM3.0bpl14 whith xapobj, dgscripts, some weird class & race system, but doesn't matter. If world go bleak for this snippet, that's YOUR fault. ACMD(do_namechange){ struct char_data *vict; char *oldname; int i,j; char arg1[MAX_STRING_LENGTH]; char arg2[MAX_STRING_LENGTH]; char tmp_name[MAX_STRING_LENGTH]; half_chop(argument, arg1, argument); half_chop(argument, arg2, argument); if ((!*arg1) || (!*arg2)) { send_to_char("Usage: namechange \r\n", ch); return; } if (!(vict = get_player_vis(ch, arg1, 0))) { send_to_char("They aren't here.\r\n", ch); return; } if (GET_LEVEL(vict) > 5) { send_to_char("You can't change the name of someone over level 5.\r\n",ch); return; } if (find_name(arg2)>-1) { send_to_char("There's already somebody with this name.\r\n",ch); return; } if ((_parse_name(arg2, tmp_name))||strlen(tmp_name) < 2 || strlen(tmp_name) > MAX_NAME_LENGTH || !Valid_Name(tmp_name) || fill_word(tmp_name) || reserved_word(tmp_name)) { send_to_char("Illegal name, retry.\r\n", ch); return; } for (i = 0; i <= top_of_p_table; i++) if (player_table[i].id == GET_IDNUM(vict)) break; if (player_table[i].id != GET_IDNUM(vict)){ send_to_char("BUG: error in player table!!!!",ch); log("BUG: error in player table for %s with idnum %d", GET_NAME(ch),GET_IDNUM(ch)); return; } oldname = strdup(GET_NAME(vict)); //player_table[i].name = strdup(arg2); for (j = 0; (*(player_table[i].name + j) = LOWER(*(arg2 + j))); j++); strcpy(vict->player.name, CAP(arg2)); sprintf(buf, "(GC) %s has changed the name of %s to %s.", GET_NAME(ch),GET_NAME(vict), arg2); mudlog(buf, BRF, LVL_IMMORT, TRUE); save_char(vict, vict->in_room); send_to_char("Ok.\r\n",ch); send_to_char("Your name has changed.\r\n",vict); }