mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-24 14:37:25 +00:00
fix: commendation vendor cant accept missions (#1497)
* fix: incorrect serialization for commendation * Update VendorComponent.h
This commit is contained in:
parent
fcb89b3c7a
commit
fe4b29f643
@ -9,11 +9,15 @@
|
|||||||
#include "UserManager.h"
|
#include "UserManager.h"
|
||||||
#include "CDMissionsTable.h"
|
#include "CDMissionsTable.h"
|
||||||
|
|
||||||
|
AchievementVendorComponent::AchievementVendorComponent(Entity* parent) : VendorComponent(parent) {
|
||||||
|
RefreshInventory(true);
|
||||||
|
};
|
||||||
|
|
||||||
bool AchievementVendorComponent::SellsItem(Entity* buyer, const LOT lot) {
|
bool AchievementVendorComponent::SellsItem(Entity* buyer, const LOT lot) {
|
||||||
auto* missionComponent = buyer->GetComponent<MissionComponent>();
|
auto* missionComponent = buyer->GetComponent<MissionComponent>();
|
||||||
if (!missionComponent) return false;
|
if (!missionComponent) return false;
|
||||||
|
|
||||||
if (m_PlayerPurchasableItems[buyer->GetObjectID()].contains(lot)){
|
if (m_PlayerPurchasableItems[buyer->GetObjectID()].contains(lot)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +39,7 @@ void AchievementVendorComponent::Buy(Entity* buyer, LOT lot, uint32_t count) {
|
|||||||
int itemCompID = compRegistryTable->GetByIDAndType(lot, eReplicaComponentType::ITEM);
|
int itemCompID = compRegistryTable->GetByIDAndType(lot, eReplicaComponentType::ITEM);
|
||||||
CDItemComponent itemComp = itemComponentTable->GetItemComponentByID(itemCompID);
|
CDItemComponent itemComp = itemComponentTable->GetItemComponentByID(itemCompID);
|
||||||
uint32_t costLOT = itemComp.commendationLOT;
|
uint32_t costLOT = itemComp.commendationLOT;
|
||||||
|
|
||||||
if (costLOT == -1 || !SellsItem(buyer, lot)) {
|
if (costLOT == -1 || !SellsItem(buyer, lot)) {
|
||||||
auto* user = UserManager::Instance()->GetUser(buyer->GetSystemAddress());
|
auto* user = UserManager::Instance()->GetUser(buyer->GetSystemAddress());
|
||||||
CheatDetection::ReportCheat(user, buyer->GetSystemAddress(), "Attempted to buy item %i from achievement vendor %i that is not purchasable", lot, m_Parent->GetLOT());
|
CheatDetection::ReportCheat(user, buyer->GetSystemAddress(), "Attempted to buy item %i from achievement vendor %i that is not purchasable", lot, m_Parent->GetLOT());
|
||||||
@ -44,7 +48,7 @@ void AchievementVendorComponent::Buy(Entity* buyer, LOT lot, uint32_t count) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto* inventoryComponent = buyer->GetComponent<InventoryComponent>();
|
auto* inventoryComponent = buyer->GetComponent<InventoryComponent>();
|
||||||
if (!inventoryComponent) {
|
if (!inventoryComponent) {
|
||||||
GameMessages::SendVendorTransactionResult(buyer, buyer->GetSystemAddress(), eVendorTransactionResult::PURCHASE_FAIL);
|
GameMessages::SendVendorTransactionResult(buyer, buyer->GetSystemAddress(), eVendorTransactionResult::PURCHASE_FAIL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -69,4 +73,9 @@ void AchievementVendorComponent::Buy(Entity* buyer, LOT lot, uint32_t count) {
|
|||||||
inventoryComponent->AddItem(lot, count, eLootSourceType::VENDOR);
|
inventoryComponent->AddItem(lot, count, eLootSourceType::VENDOR);
|
||||||
GameMessages::SendVendorTransactionResult(buyer, buyer->GetSystemAddress(), eVendorTransactionResult::PURCHASE_SUCCESS);
|
GameMessages::SendVendorTransactionResult(buyer, buyer->GetSystemAddress(), eVendorTransactionResult::PURCHASE_SUCCESS);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AchievementVendorComponent::RefreshInventory(bool isCreation) {
|
||||||
|
SetHasStandardCostItems(true);
|
||||||
|
Game::entityManager->SerializeEntity(m_Parent);
|
||||||
|
}
|
||||||
|
@ -11,7 +11,9 @@ class Entity;
|
|||||||
class AchievementVendorComponent final : public VendorComponent {
|
class AchievementVendorComponent final : public VendorComponent {
|
||||||
public:
|
public:
|
||||||
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::ACHIEVEMENT_VENDOR;
|
static constexpr eReplicaComponentType ComponentType = eReplicaComponentType::ACHIEVEMENT_VENDOR;
|
||||||
AchievementVendorComponent(Entity* parent) : VendorComponent(parent) {};
|
AchievementVendorComponent(Entity* parent);
|
||||||
|
|
||||||
|
void RefreshInventory(bool isCreation = false) override;
|
||||||
bool SellsItem(Entity* buyer, const LOT lot);
|
bool SellsItem(Entity* buyer, const LOT lot);
|
||||||
void Buy(Entity* buyer, LOT lot, uint32_t count);
|
void Buy(Entity* buyer, LOT lot, uint32_t count);
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ public:
|
|||||||
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
void Serialize(RakNet::BitStream& outBitStream, bool bIsInitialUpdate) override;
|
||||||
|
|
||||||
void OnUse(Entity* originator) override;
|
void OnUse(Entity* originator) override;
|
||||||
void RefreshInventory(bool isCreation = false);
|
virtual void RefreshInventory(bool isCreation = false);
|
||||||
void SetupConstants();
|
void SetupConstants();
|
||||||
bool SellsItem(const LOT item) const;
|
bool SellsItem(const LOT item) const;
|
||||||
float GetBuyScalar() const { return m_BuyScalar; }
|
float GetBuyScalar() const { return m_BuyScalar; }
|
||||||
|
Loading…
Reference in New Issue
Block a user