/// <summary> /// Handles the creation of the character. /// </summary> /// <param name="player">The player.</param> /// <param name="packet">The packet.</param> private static bool HandleCreation(Models.Entities.Player player, CharacterCreationPacket packet) { if (player.ClientId != packet.ClientId) { Accounts.Ban(player.DbPlayer.Account, Drivers.Messages.INVALID_CLIENT_ID, DbAccount.BanRangeType.Perm); return(false); } if (!packet.Job.ToString().StartsWith("Intern")) { Accounts.Ban(player.DbPlayer.Account, Drivers.Messages.INVALID_CLIENT_ID, DbAccount.BanRangeType.Perm); return(false); } if (packet.Model != 1003 && packet.Model != 1004 && packet.Model != 2001 && packet.Model != 2002) { Accounts.Ban(player.DbPlayer.Account, Drivers.Messages.INVALID_MODEL, DbAccount.BanRangeType.Perm); return(false); } if (!ValidateCharacters(packet.Name)) { player.ClientSocket.Send(MessageController.CreateNewPlayer(Drivers.Messages.Errors.INVALID_CHARS)); return(true); } if (IsBannedName(packet.Name)) { player.ClientSocket.Send(MessageController.CreateNewPlayer(Drivers.Messages.Errors.NAME_BANNED)); return(true); } if (Players.GetPlayerByName(packet.Name, Drivers.Settings.WorldSettings.Server) != null) { player.ClientSocket.Send(MessageController.CreateNewPlayer(Drivers.Messages.Errors.NAME_TAKEN)); return(true); } // stats fallback ... player.DbPlayer.Strength = 0; player.DbPlayer.Agility = 0; player.DbPlayer.Vitality = 0; player.DbPlayer.Spirit = 0; player.DbPlayer.Name = packet.Name; player.Job = packet.Job; player.Level = 1; player.DbPlayer.Model = packet.Model; Players.Create(player.DbPlayer, new ushort[] { player.Strength, player.Vitality, player.Agility, player.Spirit }, player.MaxHP, player.MaxMP); player.ClientSocket.Disconnect(Drivers.Messages.SUCCESS_CREATE); return(true); }