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); } }
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); }
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é."); }
public static void HandleExchangeItemBidHouseBuy(ExchangeBidHouseBuyMessage message, WorldClient client) { client.Character.BidShopInstance.BuyItem(message.uid, message.qty, message.price); }