mirror of
				https://github.com/DarkflameUniverse/DarkflameServer.git
				synced 2025-10-31 20:52:01 +00:00 
			
		
		
		
	Merge branch 'main' into tea
This commit is contained in:
		
							
								
								
									
										21
									
								
								dCommon/dEnums/eReponseMoveItemBetweenInventoryTypeCode.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								dCommon/dEnums/eReponseMoveItemBetweenInventoryTypeCode.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| #ifndef __EREPONSEMOVEITEMBETWEENINVENTORYTYPECODE__H__ | ||||
| #define __EREPONSEMOVEITEMBETWEENINVENTORYTYPECODE__H__ | ||||
|  | ||||
| #include <cstdint> | ||||
|  | ||||
| enum class eReponseMoveItemBetweenInventoryTypeCode : int32_t { | ||||
| 	SUCCESS, | ||||
| 	FAIL_GENERIC, | ||||
| 	FAIL_INV_FULL, | ||||
| 	FAIL_ITEM_NOT_FOUND, | ||||
| 	FAIL_CANT_MOVE_TO_THAT_INV_TYPE, | ||||
| 	FAIL_NOT_NEAR_BANK, | ||||
| 	FAIL_CANT_SWAP_ITEMS, | ||||
| 	FAIL_SOURCE_TYPE, | ||||
| 	FAIL_WRONG_DEST_TYPE, | ||||
| 	FAIL_SWAP_DEST_TYPE, | ||||
| 	FAIL_CANT_MOVE_THINKING_HAT, | ||||
| 	FAIL_DISMOUNT_BEFORE_MOVING | ||||
| }; | ||||
|  | ||||
| #endif  //!__EREPONSEMOVEITEMBETWEENINVENTORYTYPECODE__H__ | ||||
| @@ -99,6 +99,7 @@ | ||||
| #include "ActivityManager.h" | ||||
| #include "PlayerManager.h" | ||||
| #include "eVendorTransactionResult.h" | ||||
| #include "eReponseMoveItemBetweenInventoryTypeCode.h" | ||||
|  | ||||
| #include "CDComponentsRegistryTable.h" | ||||
| #include "CDObjectsTable.h" | ||||
| @@ -4565,16 +4566,31 @@ void GameMessages::HandleRequestMoveItemBetweenInventoryTypes(RakNet::BitStream& | ||||
| 	if (inStream.ReadBit()) inStream.Read(itemLOT); | ||||
|  | ||||
| 	if (invTypeDst == invTypeSrc) { | ||||
| 		SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::FAIL_GENERIC); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	auto* inventoryComponent = entity->GetComponent<InventoryComponent>(); | ||||
|  | ||||
| 	if (inventoryComponent != nullptr) { | ||||
| 	if (inventoryComponent) { | ||||
| 		if (itemID != LWOOBJID_EMPTY) { | ||||
| 			auto* item = inventoryComponent->FindItemById(itemID); | ||||
|  | ||||
| 			if (!item) return; | ||||
| 			if (!item) { | ||||
| 				SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::FAIL_ITEM_NOT_FOUND); | ||||
| 				return; | ||||
| 			}  | ||||
|  | ||||
| 			if (item->GetLot() == 6086) { // Thinking hat | ||||
| 				SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::FAIL_CANT_MOVE_THINKING_HAT); | ||||
| 				return; | ||||
| 			} | ||||
| 			 | ||||
| 			auto* destInv = inventoryComponent->GetInventory(invTypeDst); | ||||
| 			if (destInv && destInv->GetEmptySlots() == 0) { | ||||
| 				SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::FAIL_INV_FULL); | ||||
| 				return; | ||||
| 			} | ||||
|  | ||||
| 			// Despawn the pet if we are moving that pet to the vault. | ||||
| 			auto* petComponent = PetComponent::GetActivePet(entity->GetObjectID()); | ||||
| @@ -4583,10 +4599,32 @@ void GameMessages::HandleRequestMoveItemBetweenInventoryTypes(RakNet::BitStream& | ||||
| 			} | ||||
|  | ||||
| 			inventoryComponent->MoveItemToInventory(item, invTypeDst, iStackCount, showFlyingLoot, false, false, destSlot); | ||||
| 			SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::SUCCESS); | ||||
| 		} | ||||
| 	} else { | ||||
| 		SendResponseMoveItemBetweenInventoryTypes(entity->GetObjectID(), sysAddr, invTypeDst, invTypeSrc, eReponseMoveItemBetweenInventoryTypeCode::FAIL_GENERIC); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| void GameMessages::SendResponseMoveItemBetweenInventoryTypes(LWOOBJID objectId, const SystemAddress& sysAddr, eInventoryType inventoryTypeDestination, eInventoryType inventoryTypeSource, eReponseMoveItemBetweenInventoryTypeCode response) { | ||||
| 	CBITSTREAM; | ||||
| 	CMSGHEADER; | ||||
|  | ||||
| 	bitStream.Write(objectId); | ||||
| 	bitStream.Write(eGameMessageType::RESPONSE_MOVE_ITEM_BETWEEN_INVENTORY_TYPES); | ||||
|  | ||||
| 	bitStream.Write(inventoryTypeDestination != eInventoryType::ITEMS); | ||||
| 	if (inventoryTypeDestination != eInventoryType::ITEMS) bitStream.Write(inventoryTypeDestination); | ||||
|  | ||||
| 	bitStream.Write(inventoryTypeSource != eInventoryType::ITEMS); | ||||
| 	if (inventoryTypeSource != eInventoryType::ITEMS) bitStream.Write(inventoryTypeSource); | ||||
|  | ||||
| 	bitStream.Write(response != eReponseMoveItemBetweenInventoryTypeCode::FAIL_GENERIC); | ||||
| 	if (response != eReponseMoveItemBetweenInventoryTypeCode::FAIL_GENERIC) bitStream.Write(response); | ||||
|  | ||||
| 	SEND_PACKET; | ||||
| } | ||||
|  | ||||
|  | ||||
| void GameMessages::SendShowActivityCountdown(LWOOBJID objectId, bool bPlayAdditionalSound, bool bPlayCountdownSound, std::u16string sndName, int32_t stateToPlaySoundOn, const SystemAddress& sysAddr) { | ||||
| 	CBITSTREAM; | ||||
|   | ||||
| @@ -39,6 +39,7 @@ enum class eQuickBuildFailReason : uint32_t; | ||||
| enum class eQuickBuildState : uint32_t; | ||||
| enum class BehaviorSlot : int32_t; | ||||
| enum class eVendorTransactionResult : uint32_t; | ||||
| enum class eReponseMoveItemBetweenInventoryTypeCode : int32_t; | ||||
|  | ||||
| enum class eCameraTargetCyclingMode : int32_t { | ||||
| 	ALLOW_CYCLE_TEAMMATES, | ||||
| @@ -594,6 +595,7 @@ namespace GameMessages { | ||||
| 	//NT: | ||||
|  | ||||
| 	void HandleRequestMoveItemBetweenInventoryTypes(RakNet::BitStream& inStream, Entity* entity, const SystemAddress& sysAddr); | ||||
| 	void SendResponseMoveItemBetweenInventoryTypes(LWOOBJID objectId, const SystemAddress& sysAddr, eInventoryType inventoryTypeDestination, eInventoryType inventoryTypeSource, eReponseMoveItemBetweenInventoryTypeCode response); | ||||
|  | ||||
| 	void SendShowActivityCountdown(LWOOBJID objectId, bool bPlayAdditionalSound, bool bPlayCountdownSound, std::u16string sndName, int32_t stateToPlaySoundOn, const SystemAddress& sysAddr); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 David Markowitz
					David Markowitz