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); }
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)); }
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); }
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); } }