/// <summary> /// Changes players name /// </summary> /// <param name="plr">Player that initiated the command</param> /// <param name="values">List of command arguments (after command name)</param> /// <returns>True if command was correctly handled, false if operation was canceled</returns> public static bool ModifyPlayerName(Player plr, ref List <string> values) { if (values.Count < 2) { plr.SendClientMessage("Usage: .modify playername old_player_name new_player_name"); return(true); } var charToRename = CharMgr.GetCharacter(Player.AsCharacterName(values[0]), false); if (charToRename == null) { plr.SendClientMessage("Player with name '" + values[0] + "' not found.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR); return(true); } var existingChar = CharMgr.GetCharacter(Player.AsCharacterName(values[1]), false); if (existingChar != null) { plr.SendClientMessage("Player with name '" + existingChar.Name + "' already exists.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR); return(true); } if (values[1].Length < 3) { plr.SendClientMessage("Player name must be at least 3 characters long.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR); return(true); } if (!values[1].All(c => char.IsLetter(c) && c <= 0x7A)) { plr.SendClientMessage("Player names may not contain special characters.", ChatLogFilters.CHATLOGFILTERS_USER_ERROR); return(true); } string newName = values[1][0].ToString().ToUpper() + values[1].ToLower().Substring(1); CharMgr.UpdateCharacterName(charToRename, newName); var player = Player.GetPlayer(values[0]); LogSanction(player.Info.AccountId, plr, "GM issued Name Change", "", $"From {charToRename.Name} to {newName}"); GMCommandLog log = new GMCommandLog { PlayerName = plr.Name, AccountId = (uint)plr.Client._Account.AccountId, Command = "Changed player name FROM " + values[0] + " TO " + charToRename.Name, Date = DateTime.Now }; CharMgr.Database.AddObject(log); if (player != null) { player.Name = charToRename.Name; player.Quit(false, false); } plr.SendClientMessage(log.Command); return(true); }