Ejemplo n.º 1
0
 public static void HandleExchangeBidHouseBuy(ExchangeBidHouseBuyMessage message, WorldClient client)
 {
     if (client.Character.IsInExchange(ExchangeTypeEnum.BIDHOUSE_BUY))
     {
         client.Character.GetDialog <BuyExchange>().Buy(message.uid, message.qty, message.price);
     }
 }
Ejemplo n.º 2
0
        public static void HandleExchangeBidHouseBuyMessage(WorldClient client, ExchangeBidHouseBuyMessage message)
        {
            if (!client.Character.IsInExchange())
            {
                return;
            }

            var category = BidHouseManager.Instance.GetBidHouseCategory(message.uid);

            if (category == null)
            {
                return;
            }

            var item = category.GetItem(message.qty, message.price);

            if (item == null)
            {
                //Cet objet n'est plus disponible à ce prix. Quelqu'un a été plus rapide...
                client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_MESSAGE, 64);

                SendExchangeBidHouseBuyResultMessage(client, message.uid, false);
                return;
            }

            if (client.Character.Inventory.IsFull(item.Template, (int)item.Stack))
            {
                //Action annulée pour cause de surcharge...
                client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_ERROR, 70);

                SendExchangeBidHouseBuyResultMessage(client, message.uid, false);
                return;
            }

            if (!item.SellItem(client.Character))
            {
                SendExchangeBidHouseBuyResultMessage(client, item.Guid, false);
                return;
            }

            var result = client.Character.Exchanger.MoveItem(item.Guid, (int)item.Stack);

            if (result)
            {
                client.Character.Inventory.SubKamas((int)item.Price);
            }

            SendExchangeBidHouseBuyResultMessage(client, item.Guid, result);

            //%3 x {item,%1,%2} (%4 kamas)
            client.Character.SendInformationMessage(TextInformationTypeEnum.TEXT_INFORMATION_MESSAGE, 252, item.Template.Id, item.Guid, item.Stack, item.Price);
        }
Ejemplo n.º 3
0
        public async Task <bool> BuyItem(uint itemUId, uint quantity)
        {
            /* Check if BidHouse Dialog is open */
            if (!_bidHouseBuyDialogIsLoaded)
            {
                throw new Exception("La fenêtre HDV n'est pas ouverte.");
            }

            /* Check quantity */
            /* We can use log10(|quantity|)%1 */
            if ((quantity != 1) & (quantity != 10) & (quantity != 100))
            {
                throw new Exception("La quantité doit être l'une des suivantes : 1, 10, 100.");
            }

            /* Check if item exists in bid house */
            var Prices = new List <ulong>();

            if (!ItemPricesList.TryGetValue(itemUId, out Prices))
            {
                throw new Exception(
                          $"Cet identifiant ({itemUId}) n'existe pas dans la liste des prix ou cette dernière n'a pas été chargée.");
            }

            /* Check if requested quantity exists */
            var Price = Prices[Convert.ToInt32(Math.Log10(quantity))];

            if (!(Price > 0))
            {
                throw new Exception($"Cette quantité ({quantity}) n'existe pas pour l'item demandé.");
            }

            Logger.Default.Log($"Achat de {quantity} de l'item portant l'uid {itemUId} au prix de {Price}",
                               LogMessageType.Info);
            /* All good, we pay */

            var message = new ExchangeBidHouseBuyMessage
            {
                Uid   = itemUId,
                Qty   = quantity,
                Price = Price
            };

            /* Check if item was successfully bought */
            if (await SendAndWait(message, 3000))
            {
                return(true);
            }

            throw new Exception("L'item n'a pas pu être acheté.");
        }
Ejemplo n.º 4
0
 public static void HandleExchangeItemBidHouseBuy(ExchangeBidHouseBuyMessage message, WorldClient client)
 {
     client.Character.BidShopInstance.BuyItem(message.uid, message.qty, message.price);
 }