/// <summary> /// Char_NEW character creation character /// </summary> /// <param name="characterCreatePacket"></param> public void CreateCharacter(CharNewPacket characterCreatePacket) { if (Session.HasCurrentMapInstance) { return; } // TODO: Hold Account Information in Authorized object var accountId = Session.Account.AccountId; var slot = characterCreatePacket.Slot; var characterName = characterCreatePacket.Name; if (DaoFactory.CharacterDao.FirstOrDefault(s => s.AccountId == accountId && s.Slot == slot && s.State == CharacterState.Active) != null) { return; } var rg = new Regex( @"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$"); if (rg.Matches(characterName).Count == 1) { var character = DaoFactory.CharacterDao.FirstOrDefault(s => s.Name == characterName && s.State == CharacterState.Active); if (character == null) { var chara = new CharacterDto { Class = (byte)CharacterClassType.Adventurer, Gender = characterCreatePacket.Gender, HairColor = characterCreatePacket.HairColor, HairStyle = characterCreatePacket.HairStyle, Hp = 221, JobLevel = 1, Level = 1, MapId = 1, MapX = (short)RandomFactory.Instance.RandomNumber(78, 81), MapY = (short)RandomFactory.Instance.RandomNumber(114, 118), Mp = 221, MaxMateCount = 10, SpPoint = 10000, SpAdditionPoint = 0, Name = characterName, Slot = slot, AccountId = accountId, MinilandMessage = "Welcome", State = CharacterState.Active }; DaoFactory.CharacterDao.InsertOrUpdate(ref chara); LoadCharacters(null); } else { Session.SendPacket(new InfoPacket { Message = Session.GetMessageFromKey(LanguageKey.ALREADY_TAKEN) }); } } else { Session.SendPacket(new InfoPacket { Message = Session.GetMessageFromKey(LanguageKey.INVALID_CHARNAME) }); } }
/// <summary> /// Char_NEW character creation character /// </summary> /// <param name="characterCreatePacket"></param> public void CreateCharacter(CharNewPacket characterCreatePacket) { if (Session.HasCurrentMapInstance) { return; } // TODO: Hold Account Information in Authorized object long accountId = Session.Account.AccountId; byte slot = characterCreatePacket.Slot; string characterName = characterCreatePacket.Name; if (slot > 2 || DAOFactory.CharacterDAO.FirstOrDefault(s => s.AccountId == accountId && s.Name == characterName && s.Slot == slot && s.State == CharacterState.Active) != null) { return; } if (characterName.Length <= 3 || characterName.Length >= 15) { return; } Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$"); if (rg.Matches(characterName).Count == 1) { CharacterDTO character = DAOFactory.CharacterDAO.FirstOrDefault(s => s.Name == characterName && s.State == CharacterState.Active); if (character == null || character.State == CharacterState.Inactive) { if (characterCreatePacket.Slot > 2) { return; } Random rnd = new Random(); Character newCharacter = new Character { Class = (byte)CharacterClassType.Adventurer, Gender = characterCreatePacket.Gender, HairColor = characterCreatePacket.HairColor, HairStyle = characterCreatePacket.HairStyle, Hp = 221, JobLevel = 1, Level = 1, MapId = 1, MapX = (short)rnd.Next(78, 81), MapY = (short)rnd.Next(114, 118), Mp = 221, MaxMateCount = 10, SpPoint = 10000, SpAdditionPoint = 0, Name = characterName, Slot = slot, AccountId = accountId, MinilandMessage = "Welcome", State = CharacterState.Active }; CharacterDTO chara = newCharacter; SaveResult insertResult = DAOFactory.CharacterDAO.InsertOrUpdate(ref chara); /* CharacterSkillDTO sk1 = new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 200 }; * CharacterSkillDTO sk2 = new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 201 }; * CharacterSkillDTO sk3 = new CharacterSkillDTO { CharacterId = newCharacter.CharacterId, SkillVNum = 209 }; * QuicklistEntryDTO qlst1 = new QuicklistEntryDTO * { * CharacterId = newCharacter.CharacterId, * Type = 1, * Slot = 1, * Pos = 1 * }; * QuicklistEntryDTO qlst2 = new QuicklistEntryDTO * { * CharacterId = newCharacter.CharacterId, * Q2 = 1, * Slot = 2 * }; * QuicklistEntryDTO qlst3 = new QuicklistEntryDTO * { * CharacterId = newCharacter.CharacterId, * Q2 = 8, * Type = 1, * Slot = 1, * Pos = 16 * }; * QuicklistEntryDTO qlst4 = new QuicklistEntryDTO * { * CharacterId = newCharacter.CharacterId, * Q2 = 9, * Type = 1, * Slot = 3, * Pos = 1 * }; * * * * DAOFactory.QuicklistEntryDAO.InsertOrUpdate(ref qlst1); * DAOFactory.QuicklistEntryDAO.InsertOrUpdate(ref qlst2); * DAOFactory.QuicklistEntryDAO.InsertOrUpdate(ref qlst3); * DAOFactory.QuicklistEntryDAO.InsertOrUpdate(ref qlst4); * DAOFactory.CharacterSkillDAO.InsertOrUpdate(ref sk1); * DAOFactory.CharacterSkillDAO.InsertOrUpdate(ref sk2); * DAOFactory.CharacterSkillDAO.InsertOrUpdate(ref sk3); * * Inventory startupInventory = new Inventory((Character)newCharacter); * startupInventory.AddNewToInventory(1, 1, InventoryType.Wear, 5, 5); * startupInventory.AddNewToInventory(8, 1, InventoryType.Wear, 5, 5); * startupInventory.AddNewToInventory(12, 1, InventoryType.Wear, 5, 5); * startupInventory.AddNewToInventory(2024, 10, InventoryType.Etc); * startupInventory.AddNewToInventory(2081, 1, InventoryType.Etc); * startupInventory.AddNewToInventory(1907, 1, InventoryType.Main); * IEnumerable<ItemInstanceDTO> startupInstanceDtos = startupInventory.Values.ToList(); * DAOFactory.IteminstanceDAO.InsertOrUpdate(startupInstanceDtos); */ LoadCharacters(null); } else { Session.SendPacket(new InfoPacket() { Message = Language.Instance.GetMessageFromKey("ALREADY_TAKEN"), }); } } else { Session.SendPacket(new InfoPacket() { Message = Language.Instance.GetMessageFromKey("INVALID_CHARNAME"), }); } }
/// <summary> /// Char_NEW character creation character /// </summary> /// <param name="characterCreatePacket"></param> public void CreateCharacter(CharNewPacket characterCreatePacket) { if (Session.HasCurrentMapInstance) { return; } // TODO: Hold Account Information in Authorized object long accountId = Session.Account.AccountId; byte slot = characterCreatePacket.Slot; string characterName = characterCreatePacket.Name; if (DAOFactory.CharacterDAO.FirstOrDefault(s => s.AccountId == accountId && s.Slot == slot && s.State == CharacterState.Active) != null) { return; } Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$"); if (rg.Matches(characterName).Count == 1) { CharacterDTO character = DAOFactory.CharacterDAO.FirstOrDefault(s => s.Name == characterName && s.State == CharacterState.Active); if (character == null) { Random rnd = new Random(); Character newCharacter = new Character { Class = (byte)CharacterClassType.Adventurer, Gender = characterCreatePacket.Gender, HairColor = characterCreatePacket.HairColor, HairStyle = characterCreatePacket.HairStyle, Hp = 221, JobLevel = 1, Level = 1, MapId = 1, MapX = (short)rnd.Next(78, 81), MapY = (short)rnd.Next(114, 118), Mp = 221, MaxMateCount = 10, SpPoint = 10000, SpAdditionPoint = 0, Name = characterName, Slot = slot, AccountId = accountId, MinilandMessage = "Welcome", State = CharacterState.Active }; CharacterDTO chara = newCharacter; SaveResult insertResult = DAOFactory.CharacterDAO.InsertOrUpdate(ref chara); LoadCharacters(null); } else { Session.SendPacket(new InfoPacket() { Message = Language.Instance.GetMessageFromKey("ALREADY_TAKEN"), }); } } else { Session.SendPacket(new InfoPacket() { Message = Language.Instance.GetMessageFromKey("INVALID_CHARNAME"), }); } }