Esempio n. 1
0
        public void GiveTo(CharacterRecord record)
        {
            var effects = ItemManager.Instance.GenerateItemEffects(ItemTemplate, MaxEffects);

            var item = new PlayerItemRecord
            {
                Id       = PlayerItemRecord.PopNextId(),
                OwnerId  = record.Id,
                Template = ItemTemplate,
                Stack    = Amount,
                Position = CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED,
                Effects  = effects,
            };

            WorldServer.Instance.DBAccessor.Database.Insert(item);
        }
Esempio n. 2
0
        public BasePlayerItem CreatePlayerItem(Character owner, ItemTemplate template, int amount, List <EffectBase> effects)
        {
            if (amount < 0)
            {
                throw new ArgumentException("amount < 0", "amount");
            }

            var guid   = PlayerItemRecord.PopNextId();
            var record = new PlayerItemRecord // create the associated record
            {
                Id       = guid,
                OwnerId  = owner.Id,
                Template = template,
                Stack    = (uint)amount,
                Position = CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED,
                Effects  = effects,
                IsNew    = true,
            };

            return(CreateItemInstance(owner, record));
        }
Esempio n. 3
0
        public PlayerItemRecord GenerateItemRecord(CharacterRecord character)
        {
            var template = ItemManager.Instance.TryGetTemplate(ItemId);

            if (template == null)
            {
                throw new InvalidOperationException(string.Format("itemId {0} doesn't exists", ItemId));
            }

            List <EffectBase> effects = ItemManager.Instance.GenerateItemEffects(template, MaxEffects);

            var record = new PlayerItemRecord
            {
                Id       = PlayerItemRecord.PopNextId(),
                OwnerId  = character.Id,
                Template = template,
                Stack    = Amount,
                Position = CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED,
                Effects  = effects,
            };

            return(record);
        }
Esempio n. 4
0
        public static void Initialize()
        {
            var allItems = World.Instance.Database.Fetch <PlayerItemRecord>(string.Format(PlayerItemRelator.FetchQuery));

            foreach (var item in allItems.Where(x => checkItems.Any(y => y == x.ItemId)))
            {
                if (item.Effects.Any(x => x.EffectId == EffectsEnum.Effect_LivingObjectId))
                {
                    var m_livingObjectIdEffect = (EffectInteger)item.Effects.FirstOrDefault(x => x.EffectId == EffectsEnum.Effect_LivingObjectId);
                    var m_moodEffect           = (EffectInteger)item.Effects.FirstOrDefault(x => x.EffectId == EffectsEnum.Effect_LivingObjectMood);
                    var m_selectedLevelEffect  = (EffectInteger)item.Effects.FirstOrDefault(x => x.EffectId == EffectsEnum.Effect_LivingObjectSkin);
                    var m_experienceEffect     = (EffectInteger)item.Effects.FirstOrDefault(x => x.EffectId == EffectsEnum.Effect_LivingObjectLevel);
                    var m_categoryEffect       = (EffectInteger)item.Effects.FirstOrDefault(x => x.EffectId == EffectsEnum.Effect_LivingObjectCategory);

                    item.Effects = ItemManager.Instance.GenerateItemEffects(item.Template);

                    item.Effects.Add(m_livingObjectIdEffect);
                    item.Effects.Add(m_moodEffect);
                    item.Effects.Add(m_selectedLevelEffect);
                    item.Effects.Add(m_experienceEffect);
                    item.Effects.Add(m_categoryEffect);
                }
                else
                {
                    item.Effects = ItemManager.Instance.GenerateItemEffects(item.Template);
                }

                if (item.ItemId == 20392)
                {
                    World.Instance.Database.Delete(item);

                    var template = ItemManager.Instance.TryGetTemplate(20000);

                    var orbes = World.Instance.Database.Fetch <PlayerItemRecord>(string.Format("SELECT * FROM characters_items WHERE OwnerId={0} AND ItemId={1}", item.OwnerId, 20000)).FirstOrDefault();

                    if (orbes == null)
                    {
                        orbes = new PlayerItemRecord
                        {
                            Id       = PlayerItemRecord.PopNextId(),
                            Effects  = ItemManager.Instance.GenerateItemEffects(template),
                            IsNew    = true,
                            ItemId   = 20000,
                            OwnerId  = item.OwnerId,
                            Position = CharacterInventoryPositionEnum.INVENTORY_POSITION_NOT_EQUIPED,
                            Stack    = 820000
                        };

                        World.Instance.Database.Insert(orbes);
                    }
                    else
                    {
                        orbes.Stack += 820000;

                        World.Instance.Database.Update(orbes);
                    }
                }
                else
                {
                    World.Instance.Database.Update(item);
                }

                Logger.Info("Update Item {0}", item.ItemId);
            }
        }