DP_S/src/dispatch.cpp

133 lines
2.7 KiB
C++
Raw Normal View History

2022-09-02 01:27:05 +08:00
//************************************
// 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;
}