133 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
		
		
			
		
	
	
			133 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			C++
		
	
	
	
|  | //************************************
 | |||
|  | // FileName:  D:\VisualStudioSource\dnf_project\src\Dispatch.cpp
 | |||
|  | // FullName:  D:\VisualStudioSource\dnf_project\src
 | |||
|  | // Date:      2022/09/01
 | |||
|  | // By:        Vance
 | |||
|  | // Copyright (c) 2022.  Vance All rights reserved
 | |||
|  | //************************************
 | |||
|  | 
 | |||
|  | #include "dispatch.h"
 | |||
|  | 
 | |||
|  | CDispatch::CDispatch() | |||
|  | { | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | CDispatch::~CDispatch() | |||
|  | { | |||
|  | 
 | |||
|  | } | |||
|  | 
 | |||
|  | int CDispatch::UseEquipmentMoveItem(CUser* user, PacketBuf* pBuf) | |||
|  | { | |||
|  | 	int result = 0; | |||
|  | 
 | |||
|  | 	if (pBuf) | |||
|  | 	{ | |||
|  | 		int equipment_pos = pBuf->get_short();	//װ<><D7B0>λ<EFBFBD><CEBB>
 | |||
|  | 		int equipment_id = pBuf->get_int();		//װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | |||
|  | 		int item_pos = pBuf->get_short();		//<2F><>Ʒλ<C6B7><CEBB>
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 		//1 <20><>Ʒ<EFBFBD><C6B7> 2 ʱװ
 | |||
|  | 		if (user->CheckItemLock(1, equipment_pos)) | |||
|  | 		{ | |||
|  | 			user->SendCmdErrorPacket(83, 213); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		CInventory* inven = user->getCurCharacInvenW(); | |||
|  | 		if (!inven) | |||
|  | 		{ | |||
|  | 			LOG("user->getCurCharacInvenW : error \n"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		Inven_Item* equipment_avartar = inven->GetInvenRef(CInventory::INVENTORY_TYPE_ITEM, equipment_pos); | |||
|  | 		if (!equipment_avartar) | |||
|  | 		{ | |||
|  | 			LOG("inven->GetInvenRef : error \n"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 		Inven_Item* item_avartar = inven->GetInvenRef(CInventory::INVENTORY_TYPE_ITEM, item_pos); | |||
|  | 		if (!item_avartar) | |||
|  | 		{ | |||
|  | 			LOG("inven->GetInvenRef : error \n"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 		 | |||
|  | 		if (equipment_avartar->isEmpty() ) | |||
|  | 		{ | |||
|  | 			LOG("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 		if (equipment_avartar->getKey() != equipment_id) | |||
|  | 		{ | |||
|  | 			LOG("<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		if (item_avartar->isEmpty()) | |||
|  | 		{ | |||
|  | 			LOG("<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƷΪ<EFBFBD><EFBFBD>"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		int item_id = item_avartar->getKey(); | |||
|  | 
 | |||
|  | 		CDataManager* DataManager = CDataManager::G_CDataManager(); | |||
|  | 
 | |||
|  | 		if (!DataManager) | |||
|  | 		{ | |||
|  | 			LOG("G_CDataManager <20><><EFBFBD><EFBFBD>"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		CItem* equipment_citem = DataManager->find_item(equipment_id); | |||
|  | 		CItem* item_citem = DataManager->find_item(item_id); | |||
|  | 
 | |||
|  | 		if (!equipment_citem || !item_citem) | |||
|  | 		{ | |||
|  | 			LOG("<EFBFBD><EFBFBD>ȡpvf<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!"); | |||
|  | 			return result; | |||
|  | 		} | |||
|  | 
 | |||
|  | 		LOG("UseEquipmentMoveItem [ equipment_pos:%d equipment_id:%d item_pos:%d item_id:%d ]" | |||
|  | 			, equipment_pos | |||
|  | 			, equipment_id | |||
|  | 			, item_pos | |||
|  | 			, item_id | |||
|  | 		); | |||
|  | 
 | |||
|  | 		//Data: equipment_citem->GetItemType=147418664 item_citem->is_stackable=1 item_citem->GetItemType=11
 | |||
|  | 		LOG("Data: equipment_citem->GetItemType=%d item_citem->is_stackable=%d item_citem->GetItemType=%d" | |||
|  | 			, equipment_citem->GetItemType() | |||
|  | 			, item_citem->is_stackable() | |||
|  | 			, item_citem->GetItemType() | |||
|  | 
 | |||
|  | 		); | |||
|  | 
 | |||
|  | 		//if (!item_citem->is_stackable() || (equipment_citem->GetItemType() != 20))
 | |||
|  | 		//{
 | |||
|  | 		//	LOG("citem->is_stackable() || (citem->GetItemType() : error \n");
 | |||
|  | 		//	pUser->SendCmdErrorPacket(205, 209);
 | |||
|  | 		//	return 0;
 | |||
|  | 		//}
 | |||
|  | 
 | |||
|  | 		/*
 | |||
|  | 			<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Call (2000) | |||
|  | 			<EFBFBD><EFBFBD>ԿCall (װ<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>,2) | |||
|  | 			<EFBFBD><EFBFBD>ԿCall (װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,4)  | |||
|  | 			<EFBFBD><EFBFBD>ԿCall (<EFBFBD><EFBFBD>Ʒλ<EFBFBD><EFBFBD>,2)  | |||
|  | 			<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Call () | |||
|  | 		*/ | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 
 | |||
|  | 	} | |||
|  | 	return result; | |||
|  | } | |||
|  | 
 | |||
|  | 
 |