Esempio n. 1
0
 public SaveResult InsertOrUpdate(ref QuicklistEntryDTO quickListEntry)
 {
     try
     {
         using (OpenNosContext context = DataAccessHelper.CreateContext())
         {
             long           entryId = quickListEntry.EntryId;
             QuicklistEntry dbentry = context.QuicklistEntry.FirstOrDefault(c => c.EntryId == entryId);
             if (dbentry == null)
             {
                 // new entity
                 QuicklistEntry entry = _mapper.Map <QuicklistEntry>(quickListEntry);
                 context.QuicklistEntry.Add(entry);
                 context.SaveChanges();
                 _mapper.Map(entry, quickListEntry);
                 return(SaveResult.Inserted);
             }
             else
             {
                 //existing entity
                 _mapper.Map(quickListEntry, dbentry);
                 context.SaveChanges();
                 quickListEntry = _mapper.Map <QuicklistEntryDTO>(quickListEntry); // does this line anything?
                 return(SaveResult.Updated);
             }
         }
     }
     catch (Exception e)
     {
         Logger.Log.Error(String.Format(Language.Instance.GetMessageFromKey("UPDATE_ERROR"), e.Message), e);
         return(SaveResult.Error);
     }
 }
Esempio n. 2
0
        public QuicklistEntryDTO LoadById(Guid id)
        {
            using (OpenNosContext context = DataAccessHelper.CreateContext())
            {
                QuicklistEntryDTO quicklistEntryDTO = new QuicklistEntryDTO();
                if (Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntryDTO(context.QuicklistEntry.FirstOrDefault(i => i.Id.Equals(id)), quicklistEntryDTO))
                {
                    return(quicklistEntryDTO);
                }

                return(null);
            }
        }
Esempio n. 3
0
 public IEnumerable <QuicklistEntryDTO> LoadByCharacterId(long characterId)
 {
     using (OpenNosContext context = DataAccessHelper.CreateContext())
     {
         List <QuicklistEntryDTO> result = new List <QuicklistEntryDTO>();
         foreach (QuicklistEntry QuicklistEntryobject in context.QuicklistEntry.Where(i => i.CharacterId == characterId))
         {
             QuicklistEntryDTO quicklistEntryDTO = new QuicklistEntryDTO();
             Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntryDTO(QuicklistEntryobject, quicklistEntryDTO);
             result.Add(quicklistEntryDTO);
         }
         return(result);
     }
 }
Esempio n. 4
0
        protected static QuicklistEntryDTO Update(QuicklistEntry entity, QuicklistEntryDTO inventory, OpenNosContext context)
        {
            if (entity != null)
            {
                Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntry(inventory, entity);
                context.SaveChanges();
            }
            if (Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntryDTO(entity, inventory))
            {
                return(inventory);
            }

            return(null);
        }
Esempio n. 5
0
        protected static QuicklistEntryDTO InsertOrUpdate(OpenNosContext context, QuicklistEntryDTO dto)
        {
            Guid           primaryKey = dto.Id;
            QuicklistEntry entity     = context.Set <QuicklistEntry>().FirstOrDefault(c => c.Id == primaryKey);

            if (entity == null)
            {
                return(Insert(dto, context));
            }
            else
            {
                return(Update(entity, dto, context));
            }
        }
Esempio n. 6
0
        protected static QuicklistEntryDTO Insert(QuicklistEntryDTO dto, OpenNosContext context)
        {
            QuicklistEntry entity = new QuicklistEntry();

            Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntry(dto, entity);
            context.Set <QuicklistEntry>().Add(entity);
            context.SaveChanges();
            if (Mapper.Mappers.QuicklistEntryMapper.ToQuicklistEntryDTO(entity, dto))
            {
                return(dto);
            }

            return(null);
        }
Esempio n. 7
0
 public QuicklistEntryDTO InsertOrUpdate(QuicklistEntryDTO dto)
 {
     try
     {
         using (OpenNosContext context = DataAccessHelper.CreateContext())
         {
             return(InsertOrUpdate(context, dto));
         }
     }
     catch (Exception e)
     {
         Logger.Error($"Message: {e.Message}", e);
         return(null);
     }
 }
 public static bool ToQuicklistEntryDTO(QuicklistEntry input, QuicklistEntryDTO output)
 {
     if (input == null)
     {
         return(false);
     }
     output.CharacterId = input.CharacterId;
     output.Id          = input.Id;
     output.Morph       = input.Morph;
     output.Pos         = input.Pos;
     output.Q1          = input.Q1;
     output.Q2          = input.Q2;
     output.Slot        = input.Slot;
     output.Type        = input.Type;
     return(true);
 }
Esempio n. 9
0
        public void CreateCharacter(string packet)
        {
            Logger.Debug(packet, Session.SessionId);
            if (Session.HasCurrentMap)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;

            string[] packetsplit = packet.Split(' ');

            byte   slot          = Convert.ToByte(packetsplit[3]);
            string characterName = packetsplit[2];
            Random random        = new Random();

            if (slot <= 2 && DAOFactory.CharacterDAO.LoadBySlot(accountId, slot) == null)
            {
                if (characterName.Length > 3 && characterName.Length < 15)
                {
                    System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B]*$");
                    int isIllegalCharacter = rg.Matches(characterName).Count;

                    if (isIllegalCharacter == 1)
                    {
                        if (DAOFactory.CharacterDAO.LoadByName(characterName) == null)
                        {
                            if (Convert.ToByte(packetsplit[3]) > 2)
                            {
                                return;
                            }
                            CharacterDTO newCharacter = new CharacterDTO()
                            {
                                Class           = (byte)ClassType.Adventurer,
                                Gender          = (GenderType)Enum.Parse(typeof(GenderType), packetsplit[4]),
                                HairColor       = (HairColorType)Enum.Parse(typeof(HairColorType), packetsplit[6]),
                                HairStyle       = (HairStyleType)Enum.Parse(typeof(HairStyleType), packetsplit[5]),
                                Hp              = 221,
                                JobLevel        = 1,
                                Level           = 1,
                                MapId           = 1,
                                MapX            = (short)ServerManager.RandomNumber(78, 81),
                                MapY            = (short)ServerManager.RandomNumber(114, 118),
                                Mp              = 221,
                                SpPoint         = 10000,
                                SpAdditionPoint = 0,
                                Name            = characterName,
                                Slot            = slot,
                                AccountId       = accountId,
                                State           = CharacterState.Active,
                            };

                            SaveResult        insertResult = DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                            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(qlst1);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst2);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst3);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst4);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk2);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk3);

                            IList <ItemInstanceDTO> startupInventory = new List <ItemInstanceDTO>();
                            ItemInstance            inventory        = new WearableInstance // first weapon
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (byte)EquipmentType.MainWeapon,
                                Type        = InventoryType.Wear,
                                Amount      = 1,
                                ItemVNum    = 1,
                            };
                            startupInventory.Add(inventory);

                            inventory = new WearableInstance() // second weapon
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (byte)EquipmentType.SecondaryWeapon,
                                Type        = InventoryType.Wear,
                                Amount      = 1,
                                ItemVNum    = 8
                            };
                            startupInventory.Add(inventory);

                            inventory = new WearableInstance() // armor
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (byte)EquipmentType.Armor,
                                Type        = InventoryType.Wear,
                                Amount      = 1,
                                ItemVNum    = 12
                            };
                            startupInventory.Add(inventory);

                            inventory = new ItemInstance() // snack
                            {
                                CharacterId = newCharacter.CharacterId,
                                Type        = InventoryType.Etc,
                                Amount      = 10,
                                ItemVNum    = 2024
                            };
                            startupInventory.Add(inventory);

                            inventory = new ItemInstance() // ammo
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = 1,
                                Type        = InventoryType.Etc,
                                Amount      = 1,
                                ItemVNum    = 2081
                            };
                            startupInventory.Add(inventory);

                            DAOFactory.IteminstanceDao.InsertOrUpdate(startupInventory);
                            LoadCharacters(packet);
                        }
                        else
                        {
                            Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                    }
                }
            }
        }
        public void CreateCharacter(string packet)
        {
            Logger.Debug(packet, Session.SessionId);
            if (Session.CurrentMap != null)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;

            string[] packetsplit = packet.Split(' ');

            byte   slot          = Convert.ToByte(packetsplit[3]);
            string characterName = packetsplit[2];
            Random random        = new Random();

            if (slot <= 2 && DAOFactory.CharacterDAO.LoadBySlot(accountId, slot) == null)
            {
                if (characterName.Length > 3 && characterName.Length < 15)
                {
                    bool isIllegalCharacter = false;

                    System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex(@"^[\u4E00-\u9FA5a-zA-Z0-9ąáàâäãåçćéèêëęíìîïłńñóòôöõúùûüśźżýÿæœĄÁÀÂÄÃÅĆÇĘÉÈÊËÍÌÎÏŁŃÑÓÒÔÖÕÚÙÛÜŚŹŻÝŸÆŒ.¤*-|#²§µß™€=$^<>£!()&~{}@]*$`~");
                    isIllegalCharacter = rg.IsMatch(characterName);

                    if (!isIllegalCharacter)
                    {
                        if (DAOFactory.CharacterDAO.LoadByName(characterName) == null)
                        {
                            if (Convert.ToByte(packetsplit[3]) > 2)
                            {
                                return;
                            }
                            CharacterDTO newCharacter = new CharacterDTO()
                            {
                                Class                 = (byte)ClassType.Adventurer,
                                Gender                = (Convert.ToByte(packetsplit[4]) >= 0 && Convert.ToByte(packetsplit[4]) <= 1 ? Convert.ToByte(packetsplit[4]) : Convert.ToByte(0)),
                                Gold                  = 0,
                                HairColor             = Enum.IsDefined(typeof(HairColorType), Convert.ToByte(packetsplit[6])) ? Convert.ToByte(packetsplit[6]) : Convert.ToByte(0),
                                HairStyle             = Enum.IsDefined(typeof(HairStyleType), Convert.ToByte(packetsplit[5])) ? Convert.ToByte(packetsplit[5]) : Convert.ToByte(0),
                                Hp                    = 221,
                                JobLevel              = 1,
                                JobLevelXp            = 0,
                                Level                 = 1,
                                LevelXp               = 0,
                                MapId                 = 1,
                                FamilyId              = -1,
                                FamilyInfo            = "-",
                                FamilyLevel           = 1,
                                FamilyName            = "-",
                                FamilyPosition        = "-",
                                MapX                  = (short)(random.Next(78, 81)),
                                MapY                  = (short)(random.Next(114, 118)),
                                Mp                    = 221,
                                Name                  = characterName,
                                Slot                  = slot,
                                AccountId             = accountId,
                                StateEnum             = CharacterState.Active,
                                WhisperBlocked        = false,
                                FamilyRequestBlocked  = false,
                                ExchangeBlocked       = false,
                                BuffBlocked           = false,
                                EmoticonsBlocked      = false,
                                FriendRequestBlocked  = false,
                                GroupRequestBlocked   = false,
                                MinilandInviteBlocked = false,
                                HeroChatBlocked       = false,
                                QuickGetUp            = false,
                                MouseAimLock          = false,
                                HpBlocked             = false,
                            };

                            SaveResult        insertResult = DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                            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,
                                Q1          = 0,
                                Q2          = 0,
                                Type        = 1,
                                Slot        = 1,
                                Pos         = 1
                            };
                            QuicklistEntryDTO qlst2 = new QuicklistEntryDTO
                            {
                                CharacterId = newCharacter.CharacterId,
                                Q1          = 0,
                                Q2          = 1,
                                Type        = 0,
                                Slot        = 2,
                                Pos         = 0
                            };
                            QuicklistEntryDTO qlst3 = new QuicklistEntryDTO
                            {
                                CharacterId = newCharacter.CharacterId,
                                Q1          = 0,
                                Q2          = 8,
                                Type        = 1,
                                Slot        = 1,
                                Pos         = 16
                            };
                            QuicklistEntryDTO qlst4 = new QuicklistEntryDTO
                            {
                                CharacterId = newCharacter.CharacterId,
                                Q1          = 0,
                                Q2          = 9,
                                Type        = 1,
                                Slot        = 3,
                                Pos         = 1
                            };
                            qlst1 = DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst1);
                            qlst2 = DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst2);
                            qlst3 = DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst3);
                            qlst4 = DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst4);
                            sk1   = DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);
                            sk2   = DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk2);
                            sk3   = DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk3);

                            IList <InventoryDTO> startupInventory = new List <InventoryDTO>();
                            InventoryDTO         inventory        = new InventoryDTO() // first weapon
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (short)EquipmentType.MainWeapon,
                                Type        = InventoryType.Equipment
                            };
                            inventory.ItemInstance = new WearableInstance()
                            {
                                Amount = 1, ItemVNum = 1, Id = inventory.Id
                            };
                            startupInventory.Add(inventory);

                            inventory = new InventoryDTO() // second weapon
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (short)EquipmentType.SecondaryWeapon,
                                Type        = InventoryType.Equipment
                            };
                            inventory.ItemInstance = new WearableInstance()
                            {
                                Amount = 1, ItemVNum = 8, Id = inventory.Id
                            };
                            startupInventory.Add(inventory);

                            inventory = new InventoryDTO() // armor
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = (short)EquipmentType.Armor,
                                Type        = InventoryType.Equipment
                            };
                            inventory.ItemInstance = new WearableInstance()
                            {
                                Amount = 1, ItemVNum = 12, Id = inventory.Id
                            };
                            startupInventory.Add(inventory);

                            inventory = new InventoryDTO() // snack
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = 0,
                                Type        = InventoryType.Etc
                            };
                            inventory.ItemInstance = new ItemInstance()
                            {
                                Amount = 10, ItemVNum = 2024, Id = inventory.Id
                            };
                            startupInventory.Add(inventory);

                            inventory = new InventoryDTO() // ammo
                            {
                                CharacterId = newCharacter.CharacterId,
                                Slot        = 1,
                                Type        = InventoryType.Etc
                            };
                            inventory.ItemInstance = new ItemInstance()
                            {
                                Amount = 1, ItemVNum = 2081, Id = inventory.Id
                            };
                            startupInventory.Add(inventory);

                            DAOFactory.InventoryDAO.InsertOrUpdate(startupInventory);
                            LoadCharacters(packet);
                        }
                        else
                        {
                            Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                    }
                }
            }
        }
Esempio n. 11
0
        public void Save()
        {
            QuicklistEntryDTO tempsave = this;

            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(ref tempsave);
        }
        public void CreateCharacter(string packet)
        {
            Logger.Debug(Session.GenerateIdentity(), packet);
            if (Session.HasCurrentMapInstance)
            {
                return;
            }

            // TODO: Hold Account Information in Authorized object
            long accountId = Session.Account.AccountId;

            string[] packetsplit = packet.Split(' ');
            if (packetsplit.Length != 7)
            {
                return;
            }
            byte   slot;
            string characterName = packetsplit[2];

            if (byte.TryParse(packetsplit[3], out slot) && slot <= 2 && DAOFactory.CharacterDAO.LoadBySlot(accountId, slot) == null)
            {
                if (characterName.Length > 3 && characterName.Length < 15)
                {
                    Regex rg = new Regex(@"^[\u0021-\u007E\u00A1-\u00AC\u00AE-\u00FF\u4E00-\u9FA5\u0E01-\u0E3A\u0E3F-\u0E5B\u002E]*$");
                    int   isIllegalCharacter = rg.Matches(characterName).Count;

                    if (isIllegalCharacter == 1)
                    {
                        if (DAOFactory.CharacterDAO.LoadByName(characterName) == null)
                        {
                            if (Convert.ToByte(packetsplit[3]) > 2)
                            {
                                return;
                            }
                            CharacterDTO newCharacter = new CharacterDTO
                            {
                                Class           = (byte)ClassType.Adventurer,
                                Gender          = (GenderType)Enum.Parse(typeof(GenderType), packetsplit[4]),
                                HairColor       = (HairColorType)Enum.Parse(typeof(HairColorType), packetsplit[6]),
                                HairStyle       = (HairStyleType)Enum.Parse(typeof(HairStyleType), packetsplit[5]),
                                Hp              = 221,
                                JobLevel        = 1,
                                Level           = 1,
                                MapId           = 1,
                                MapX            = (short)ServerManager.Instance.RandomNumber(78, 81),
                                MapY            = (short)ServerManager.Instance.RandomNumber(114, 118),
                                Mp              = 221,
                                MaxMateCount    = 10,
                                SpPoint         = 10000,
                                SpAdditionPoint = 0,
                                Name            = characterName,
                                Slot            = slot,
                                AccountId       = accountId,
                                MinilandMessage = "Welcome",
                                State           = CharacterState.Active
                            };

                            SaveResult        insertResult = DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                            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(qlst1);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst2);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst3);
                            DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst4);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk2);
                            DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk3);

                            Inventory startupInventory = new Inventory((Character)newCharacter);
                            startupInventory.AddNewToInventory(1, 1, InventoryType.Wear);
                            startupInventory.AddNewToInventory(8, 1, InventoryType.Wear);
                            startupInventory.AddNewToInventory(12, 1, InventoryType.Wear);
                            startupInventory.AddNewToInventory(2024, 10, InventoryType.Etc);
                            startupInventory.AddNewToInventory(2081, 1, InventoryType.Etc);
                            startupInventory.GetAllItems().ForEach(i => DAOFactory.IteminstanceDAO.InsertOrUpdate(i));

                            LoadCharacters(packet);
                        }
                        else
                        {
                            Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                        }
                    }
                    else
                    {
                        Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                    }
                }
            }
        }
        /// <summary>
        /// Char_NEW character creation character
        /// </summary>
        /// <param name="characterCreatePacket"></param>
        public void CreateCharacter(CharacterCreatePacket 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.LoadBySlot(accountId, slot) != 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.LoadByName(characterName);
                if (character == null || character.State == CharacterState.Inactive)
                {
                    if (characterCreatePacket.Slot > 2)
                    {
                        return;
                    }
                    CharacterDTO newCharacter = new CharacterDTO
                    {
                        Class           = (byte)ClassType.Adventurer,
                        Gender          = characterCreatePacket.Gender,
                        HairColor       = characterCreatePacket.HairColor,
                        HairStyle       = characterCreatePacket.HairStyle,
                        Hp              = 221,
                        JobLevel        = 20,
                        Level           = 15,
                        MapId           = 1,
                        MapX            = (short)ServerManager.Instance.RandomNumber(78, 81),
                        MapY            = (short)ServerManager.Instance.RandomNumber(109, 112),
                        Mp              = 221,
                        MaxMateCount    = 10,
                        Gold            = 15000,
                        SpPoint         = 10000,
                        SpAdditionPoint = 0,
                        Name            = characterName,
                        Slot            = slot,
                        AccountId       = accountId,
                        MinilandMessage = "Welcome",
                        State           = CharacterState.Active
                    };

                    SaveResult        insertResult = DaoFactory.CharacterDao.InsertOrUpdate(ref newCharacter);
                    CharacterQuestDTO firstQuest   = new CharacterQuestDTO {
                        CharacterId = newCharacter.CharacterId, QuestId = 1997, IsMainQuest = true
                    };
                    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.CharacterQuestDao.InsertOrUpdate(firstQuest);
                    DaoFactory.QuicklistEntryDao.InsertOrUpdate(qlst1);
                    DaoFactory.QuicklistEntryDao.InsertOrUpdate(qlst2);
                    DaoFactory.QuicklistEntryDao.InsertOrUpdate(qlst3);
                    DaoFactory.QuicklistEntryDao.InsertOrUpdate(qlst4);
                    DaoFactory.CharacterSkillDao.InsertOrUpdate(sk1);
                    DaoFactory.CharacterSkillDao.InsertOrUpdate(sk2);
                    DaoFactory.CharacterSkillDao.InsertOrUpdate(sk3);

                    Inventory startupInventory = new Inventory((Character)newCharacter);
                    startupInventory.AddNewToInventory(2024, 10, InventoryType.Etc);
                    startupInventory.AddNewToInventory(2081, 1, InventoryType.Etc);
                    startupInventory.AddNewToInventory(1907, 1, InventoryType.Main);
                    startupInventory.Select(s => s.Value).ToList().ForEach(i => DaoFactory.IteminstanceDao.InsertOrUpdate(i));

                    LoadCharacters(characterCreatePacket.OriginalContent);
                }
                else
                {
                    Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                }
            }
            else
            {
                Session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
            }
        }
Esempio n. 14
0
 public QuicklistEntryDTO InsertOrUpdate(QuicklistEntryDTO dto)
 {
     throw new NotImplementedException();
 }
        private void ExecuteHandler(ClientSession session)
        {
            short data1 = 0, data2 = 0, type = Type, q1 = Q1, q2 = Q2;

            if (Data1.HasValue)
            {
                data1 = Data1.Value;
            }

            if (Data2.HasValue)
            {
                data2 = Data2.Value;
            }

            switch (type)
            {
            case 0:
            case 1:

                // client says qset 0 1 3 2 6 answer -> qset 1 3 0.2.6.0
                session.Character.QuicklistEntries.RemoveAll(n =>
                                                             n.Q1 == q1 && n.Q2 == q2 &&
                                                             (session.Character.UseSp ? n.Morph == session.Character.Morph : n.Morph == 0));
                session.Character.QuicklistEntries.Add(new QuicklistEntryDTO
                {
                    CharacterId = session.Character.CharacterId,
                    Type        = type,
                    Q1          = q1,
                    Q2          = q2,
                    Slot        = data1,
                    Pos         = data2,
                    Morph       = session.Character.UseSp ? (short)session.Character.Morph : (short)0
                });
                session.SendPacket($"qset {q1} {q2} {type}.{data1}.{data2}.0");
                break;

            case 2:

                // DragDrop / Reorder qset type to1 to2 from1 from2 vars -> q1 q2 data1 data2
                QuicklistEntryDTO qlFrom = session.Character.QuicklistEntries.SingleOrDefault(n =>
                                                                                              n.Q1 == data1 && n.Q2 == data2 &&
                                                                                              (session.Character.UseSp ? n.Morph == session.Character.Morph : n.Morph == 0));
                if (qlFrom != null)
                {
                    QuicklistEntryDTO qlTo = session.Character.QuicklistEntries.SingleOrDefault(n =>
                                                                                                n.Q1 == q1 && n.Q2 == q2 && (session.Character.UseSp
                                ? n.Morph == session.Character.Morph
                                : n.Morph == 0));
                    qlFrom.Q1 = q1;
                    qlFrom.Q2 = q2;
                    if (qlTo == null)
                    {
                        // Put 'from' to new position (datax)
                        session.SendPacket(
                            $"qset {qlFrom.Q1} {qlFrom.Q2} {qlFrom.Type}.{qlFrom.Slot}.{qlFrom.Pos}.0");

                        // old 'from' is now empty.
                        session.SendPacket($"qset {data1} {data2} 7.7.-1.0");
                    }
                    else
                    {
                        // Put 'from' to new position (datax)
                        session.SendPacket(
                            $"qset {qlFrom.Q1} {qlFrom.Q2} {qlFrom.Type}.{qlFrom.Slot}.{qlFrom.Pos}.0");

                        // 'from' is now 'to' because they exchanged
                        qlTo.Q1 = data1;
                        qlTo.Q2 = data2;
                        session.SendPacket($"qset {qlTo.Q1} {qlTo.Q2} {qlTo.Type}.{qlTo.Slot}.{qlTo.Pos}.0");
                    }
                }

                break;

            case 3:

                // Remove from Quicklist
                session.Character.QuicklistEntries.RemoveAll(n =>
                                                             n.Q1 == q1 && n.Q2 == q2 &&
                                                             (session.Character.UseSp ? n.Morph == session.Character.Morph : n.Morph == 0));
                session.SendPacket($"qset {q1} {q2} 7.7.-1.0");
                break;

            default:
                return;
            }
        }
        private void ExecuteHandler(ClientSession session, string packet)
        {
            if (session.HasCurrentMapInstance)
            {
                return;
            }

            long accountId = session.Account.AccountId;

            if (Slot <= 2 &&
                DAOFactory.CharacterDAO.LoadBySlot(accountId, Slot) == null &&
                Name.Length > 3 && Name.Length < 15)
            {
                Regex rg = new Regex(@"^[A-Za-z0-9_äÄöÖüÜß~*<>°+-.!_-Й¤£±†‡×ßø^\S]+$");
                if (rg.Matches(Name).Count == 1)
                {
                    if (DAOFactory.CharacterDAO.LoadByName(Name) == null)
                    {
                        GameLogger.Instance.LogCharacterCreation(ServerManager.Instance.ChannelId, session.Account.Name,
                                                                 session.Account.AccountId, Name, Slot, Gender, HairStyle, HairColor);
                        CharacterDTO newCharacter = new CharacterDTO
                        {
                            Class           = (byte)ClassType.Adventurer,
                            Gender          = Gender,
                            HairColor       = HairColor,
                            HairStyle       = HairStyle,
                            Hp              = 221,
                            JobLevel        = 1,
                            Level           = 1,
                            MapId           = 1,
                            MapX            = (short)ServerManager.RandomNumber(78, 81),
                            MapY            = (short)ServerManager.RandomNumber(114, 118),
                            Mp              = 221,
                            MaxMateCount    = 10,
                            SpPoint         = 10000,
                            SpAdditionPoint = 0,
                            Name            = Name,
                            Slot            = Slot,
                            AccountId       = accountId,
                            MaxPartnerCount = 3,
                            MinilandMessage = "Welcome on Xarion",
                            State           = CharacterState.Active,
                            MinilandPoint   = 2000
                        };

                        DAOFactory.CharacterDAO.InsertOrUpdate(ref newCharacter);
                        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(qlst1);
                        DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst2);
                        DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst3);
                        DAOFactory.QuicklistEntryDAO.InsertOrUpdate(qlst4);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk1);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk2);
                        DAOFactory.CharacterSkillDAO.InsertOrUpdate(sk3);

                        using (Inventory startupInventory = new Inventory(new Character(newCharacter)))
                        {
                            startupInventory.AddNewToInventory(901, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(903, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(905, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(884, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(885, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(886, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(887, 1, InventoryType.Equipment);
                            startupInventory.AddNewToInventory(5228, 1, InventoryType.Main);
                            startupInventory.AddNewToInventory(1, 1, InventoryType.Wear, 7, 8);
                            startupInventory.AddNewToInventory(8, 1, InventoryType.Wear, 7, 8);
                            startupInventory.AddNewToInventory(12, 1, InventoryType.Wear, 7, 8);
                            startupInventory.AddNewToInventory(2081, 255, InventoryType.Etc);
                            startupInventory.ForEach(i => DAOFactory.ItemInstanceDAO.InsertOrUpdate(i));
                            EntryPointPacket.HandlePacket(session, packet);
                        }
                    }
                    else
                    {
                        session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("ALREADY_TAKEN")}");
                    }
                }
                else
                {
                    session.SendPacketFormat($"info {Language.Instance.GetMessageFromKey("INVALID_CHARNAME")}");
                }
            }
        }