Ejemplo n.º 1
0
        // Example: "item id:20000027"
        private static void ProcessItemCommand(GameSession session, string command)
        {
            Dictionary <string, string> config = command.ToMap();

            if (!int.TryParse(config.GetValueOrDefault("id", "20000027"), out int itemId))
            {
                return;
            }
            if (!ItemMetadataStorage.IsValid(itemId))
            {
                session.SendNotice("Invalid item: " + itemId);
                return;
            }

            _ = int.TryParse(config.GetValueOrDefault("rarity", "5"), out int rarity);
            _ = int.TryParse(config.GetValueOrDefault("amount", "1"), out int amount);

            Item item = new Item(itemId)
            {
                CreationTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                TransferFlag = TransferFlag.Splitable | TransferFlag.Tradeable,
                PlayCount    = itemId.ToString().StartsWith("35") ? 10 : 0,
                Rarity       = rarity,
                Amount       = amount,
                Stats        = new ItemStats(itemId, rarity)
            };

            // Simulate looting item
            InventoryController.Add(session, item, true);
        }
        // Example: "item id:20000027"
        private static void ProcessItemCommand(GameSession session, string command)
        {
            Dictionary <string, string> config = command.ToMap();

            if (!int.TryParse(config.GetValueOrDefault("id", "20000027"), out int itemId))
            {
                return;
            }
            if (!ItemMetadataStorage.IsValid(itemId))
            {
                session.SendNotice("Invalid item: " + itemId);
                return;
            }

            // Add some bonus attributes to equips and pets
            ItemStats stats = new ItemStats();

            if (ItemMetadataStorage.GetTab(itemId) == InventoryTab.Gear ||
                ItemMetadataStorage.GetTab(itemId) == InventoryTab.Pets)
            {
                Random rng = new Random();
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
            }

            Item item = new Item(itemId)
            {
                CreationTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                TransferFlag = TransferFlag.Splitable | TransferFlag.Tradeable,
                Stats        = stats,
                PlayCount    = itemId.ToString().StartsWith("35") ? 10 : 0
            };

            if (int.TryParse(config.GetValueOrDefault("rarity", "5"), out int rarity))
            {
                item.Rarity = rarity;
            }
            if (int.TryParse(config.GetValueOrDefault("amount", "1"), out int amount))
            {
                item.Amount = amount;
            }

            // Simulate looting item
            InventoryController.Add(session, item, true);

            /*if (session.Player.Inventory.Add(item))
             * {
             *  session.Send(ItemInventoryPacket.Add(item));
             *  session.Send(ItemInventoryPacket.MarkItemNew(item, item.Amount));
             * }*/
        }
Ejemplo n.º 3
0
    public override void Execute(GameCommandTrigger trigger)
    {
        int itemId = trigger.Get <int>("id");
        int rarity = trigger.Get <int>("rarity");
        int amount = trigger.Get <int>("amount");

        if (!ItemMetadataStorage.IsValid(itemId))
        {
            trigger.Session.SendNotice("Invalid item: " + itemId);
            return;
        }

        rarity = Math.Min(rarity, 6);
        rarity = Math.Max(rarity, 1);

        Item item = new(itemId, Math.Max(1, amount), rarity);

        // Simulate looting item
        trigger.Session.Player.Inventory.AddItem(trigger.Session, item, true);
    }
Ejemplo n.º 4
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));
    }
Ejemplo n.º 5
0
        // Example: "item id:20000027"
        private static void ProcessItemCommand(GameSession session, string command)
        {
            Dictionary <string, string> config = command.ToMap();

            int.TryParse(config.GetValueOrDefault("id", "20000027"), out int itemId);
            if (!ItemMetadataStorage.IsValid(itemId))
            {
                session.SendNotice("Invalid item: " + itemId);
                return;
            }

            // Add some bonus attributes to equips and pets
            var stats = new ItemStats();

            if (ItemMetadataStorage.GetTab(itemId) == InventoryType.Gear ||
                ItemMetadataStorage.GetTab(itemId) == InventoryType.Pets)
            {
                var rng = new Random();
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
                stats.BonusAttributes.Add(ItemStat.Of((ItemAttribute)rng.Next(35), 0.01f));
            }

            var item = new Item(itemId)
            {
                Uid          = Environment.TickCount64,
                CreationTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds(),
                Transfer     = TransferFlag.Splitable | TransferFlag.Tradeable,
                Stats        = stats
            };

            int.TryParse(config.GetValueOrDefault("rarity", "5"), out item.Rarity);
            int.TryParse(config.GetValueOrDefault("amount", "1"), out item.Amount);

            // Simulate looting item
            if (session.Inventory.Add(item))
            {
                session.Send(ItemInventoryPacket.Add(item));
                session.Send(ItemInventoryPacket.MarkItemNew(item));
            }
        }
        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));
        }
Ejemplo n.º 7
0
        public override void Execute(GameCommandTrigger trigger)
        {
            int itemId = trigger.Get <int>("id");
            int rarity = trigger.Get <int>("rarity");
            int amount = trigger.Get <int>("amount");

            if (!ItemMetadataStorage.IsValid(itemId))
            {
                trigger.Session.SendNotice("Invalid item: " + itemId);
                return;
            }

            Item item = new Item(itemId)
            {
                Rarity = rarity >= 0 ? rarity : ItemMetadataStorage.GetRarity(itemId),
                Amount = amount
            };

            item.Stats = new ItemStats(item);

            // Simulate looting item
            InventoryController.Add(trigger.Session, item, true);
        }