diff --git a/src/MHServerEmu/Billing/BillingService.cs b/src/MHServerEmu/Billing/BillingService.cs index 517c77b84..d21b49a3a 100644 --- a/src/MHServerEmu/Billing/BillingService.cs +++ b/src/MHServerEmu/Billing/BillingService.cs @@ -106,17 +106,16 @@ private void OnBuyItemFromCatalog(FrontendClient client, NetMessageBuyItemFromCa DBAvatar currentAvatar = client.Session.Account.CurrentAvatar; CatalogEntry entry = _catalog.GetEntry(buyItemFromCatalog.SkuId); - if (entry == null && entry.GuidItems.Length == 0) return; + if (entry == null || entry.GuidItems.Length == 0) + { + SendBuyItemResponse(client, false, BuyItemResultErrorCodes.BUY_RESULT_ERROR_UNKNOWN, buyItemFromCatalog.SkuId); + return; + } var costumePrototype = entry.GuidItems[0].ItemPrototypeRuntimeIdForClient.As(); if (costumePrototype == null || costumePrototype.UsableBy != (PrototypeId)currentAvatar.Prototype) { - client.SendMessage(MuxChannel, new(NetMessageBuyItemFromCatalogResponse.CreateBuilder() - .SetDidSucceed(false) - .SetCurrentCurrencyBalance(ConfigManager.Billing.CurrencyBalance) - .SetErrorcode(BuyItemResultErrorCodes.BUY_RESULT_ERROR_UNKNOWN) - .SetSkuId(buyItemFromCatalog.SkuId) - .Build())); + SendBuyItemResponse(client, false, BuyItemResultErrorCodes.BUY_RESULT_ERROR_UNKNOWN, buyItemFromCatalog.SkuId); return; } @@ -137,11 +136,16 @@ private void OnBuyItemFromCatalog(FrontendClient client, NetMessageBuyItemFromCa client.SendMessage(MuxChannel, new( Property.ToNetMessageSetProperty(9078332, new(PropertyEnum.AvatarLibraryCostume, 0, enumValue), costumePrototype.DataRef))); + SendBuyItemResponse(client, true, BuyItemResultErrorCodes.BUY_RESULT_ERROR_SUCCESS, buyItemFromCatalog.SkuId); + } + + private void SendBuyItemResponse(FrontendClient client, bool didSucceed, BuyItemResultErrorCodes errorCode, long skuId) + { client.SendMessage(MuxChannel, new(NetMessageBuyItemFromCatalogResponse.CreateBuilder() - .SetDidSucceed(true) + .SetDidSucceed(didSucceed) .SetCurrentCurrencyBalance(ConfigManager.Billing.CurrencyBalance) - .SetErrorcode(BuyItemResultErrorCodes.BUY_RESULT_ERROR_SUCCESS) - .SetSkuId(buyItemFromCatalog.SkuId) + .SetErrorcode(errorCode) + .SetSkuId(skuId) .Build())); } }