コード例 #1
0
    public void UpdateRewards(GameSession session)
    {
        Rewards = new();
        foreach ((long uid, int amount) in Slots.Where(x => x != null))
        {
            Item item = session.Player.Inventory.Items.FirstOrDefault(x => x.Value.Uid == uid).Value;
            if (!ItemMetadataStorage.IsValid(item.Id))
            {
                continue;
            }

            List <ItemBreakReward> breakRewards = ItemMetadataStorage.GetBreakRewards(item.Id);
            if (breakRewards == null)
            {
                continue;
            }

            foreach (ItemBreakReward ingredient in breakRewards)
            {
                if (ingredient.Id == 0)
                {
                    continue;
                }

                if (Rewards.ContainsKey(ingredient.Id))
                {
                    Rewards[ingredient.Id] += ingredient.Count;
                }
                else
                {
                    Rewards[ingredient.Id] = ingredient.Count;
                }

                Rewards[ingredient.Id] *= amount;
            }
            // TODO: Add Onyx Crystal (40100023) and Chaos Onyx Crystal (40100024) to rewards if InventoryTab = Gear, based on level and rarity
            // TODO: Add rewards for outfits
        }

        session.Send(ItemBreakPacket.Results(Rewards));
    }
コード例 #2
0
        private static void UpdateRewards(GameSession session)
        {
            Player player = session.Player;

            player.Rewards = new Dictionary <int, int>();
            foreach (Tuple <long, int> slot in player.DismantleSlots.Where(x => x != null))
            {
                Item item = player.Inventory.Items.FirstOrDefault(x => x.Value.Uid == slot.Item1).Value;
                if (!ItemMetadataStorage.IsValid(item.Id))
                {
                    continue;
                }

                List <ItemBreakReward> breakRewards = ItemMetadataStorage.GetBreakRewards(item.Id);
                if (breakRewards == null)
                {
                    continue;
                }

                foreach (ItemBreakReward ingredient in breakRewards)
                {
                    if (ingredient.Id != 0)
                    {
                        if (player.Rewards.ContainsKey(ingredient.Id))
                        {
                            player.Rewards[ingredient.Id] += ingredient.Count;
                        }
                        else
                        {
                            player.Rewards[ingredient.Id] = ingredient.Count;
                        }
                        player.Rewards[ingredient.Id] *= slot.Item2;
                    }
                }
                // TODO: Add Onyx Crystal (40100023) and Chaos Onyx Crystal (40100024) to rewards if InventoryTab = Gear, based on level and rarity
                // TODO: Add rewards for outfits
            }
            session.Send(ItemBreakPacket.Results(player.Rewards));
        }