📄 handler_cg_item.cpp
字号:
#include "StdAfx.h"
#include ".\handler_cg_item.h"
#include <Protocol_CG.h>
#include <Protocol_DG.h>
#include <PacketStruct_CG.h>
#include <PacketStruct_DG.h>
#include "Player.h"
#include "ItemManager.h"
#include "PlayerManager.h"
#include "GameServer.h"
#include <SCItemSlotContainer.h>
#include "Field.h"
#include "Item.h"
#include "Sector.h"
#include "ObjectFactory.h"
#include "QuickManager.h"
#include "Map.h"
#include "GameServer.h"
Handler_CG_ITEM::Handler_CG_ITEM()
{
}
Handler_CG_ITEM::~Handler_CG_ITEM()
{
}
Handler_CG_ITEM_IMPL( CG_ITEM_ENCHANT_SYN )
{
MSG_CG_ITEM_ENCHANT_SYN * pRecvMsg = (MSG_CG_ITEM_ENCHANT_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->EnchantEx( pRecvMsg->m_TargetPos, pRecvMsg->m_SuccessRateIndex );
switch( rt )
{
case RC::RC_ITEM_ENCHANT_SUCCESS:
{
// 己傍
MSG_CG_ITEM_ENCHANT_SUCCESS_ACK msg;
//msg.m_TargetPos = pRecvMsg->m_TargetPos;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
case RC::RC_ITEM_ENCHANT_FAILED:
{
// 角菩
MSG_CG_ITEM_ENCHANT_FAILED_ACK msg;
//msg.m_TargetPos = pRecvMsg->m_TargetPos;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
default:
{
MSG_CG_ITEM_ENCHANT_NAK msg;
msg.m_byErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
Handler_CG_ITEM_IMPL( CG_ITEM_ENCHANTUP_SYN )
{
MSG_CG_ITEM_ENCHANTUP_SYN * pRecvMsg = (MSG_CG_ITEM_ENCHANTUP_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
BYTE Enchant = 0;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->Enchant( pRecvMsg->m_TargetPos, Enchant );
switch( rt )
{
case RC::RC_ITEM_ENCHANT_SUCCESS:
{
// 己傍
MSG_CG_ITEM_ENCHANTUP_ACK msg;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
msg.m_TargetItemEnchant = Enchant;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
case RC::RC_ITEM_ENCHANT_DOWN_FAILED:
{
// 角菩
// 促款
MSG_CG_ITEM_ENCHANTUP_ACK msg;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
msg.m_TargetItemEnchant = Enchant;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
case RC::RC_ITEM_ENCHANT_CRACK_FAILED:
{
// 角菩
// 家戈
MSG_CG_ITEM_ENCHANTUP_ACK msg;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
msg.m_TargetItemEnchant = 0;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
default:
{
MSG_CG_ITEM_ENCHANTUP_NAK msg;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
Handler_CG_ITEM_IMPL( CG_ITEM_RANKUP_SYN )
{
MSG_CG_ITEM_RANKUP_SYN * pRecvMsg = (MSG_CG_ITEM_RANKUP_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
POSTYPE RankUpItemPos = 0;
POSTYPE DeletedItemPos = 0;
MONEY RankUpFare = 0;
BOOL bCreatedSocket = FALSE;
//珐农诀 矫档
GAMELOG->WriteItemRankUpStart( pPlayer, g_pGameServer->GetServerGUID(), pRecvMsg->m_TargetPos[0], pRecvMsg->m_TargetPos[1] );
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->RankUpEx( pRecvMsg->m_TargetPos[0], pRecvMsg->m_TargetPos[1],
RankUpItemPos, DeletedItemPos, RankUpFare, bCreatedSocket );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
MSG_CG_ITEM_RANKUP_ACK msg;
msg.m_TargetPos[0] = RankUpItemPos;
msg.m_TargetPos[1] = DeletedItemPos;
SCItemSlot & rSlot = (SCItemSlot &)pPlayer->GetItemManager()->GetItemSlotContainer(SI_INVENTORY)->GetSlot( RankUpItemPos );
rSlot.CopyOut(msg.m_TargetItemStream);
msg.m_Money = pPlayer->GetMoney();
pPlayer->SendPacket(&msg,sizeof(msg));
//珐农诀 己傍 肺弊
GAMELOG->WriteItemRankUpResult( pPlayer, g_pGameServer->GetServerGUID(), &rSlot, (DWORD)RankUpFare, bCreatedSocket );
//珐农诀 己傍 肺弊 场
}
break;
default:
{
MSG_CG_ITEM_RANKUP_NAK msg;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
Handler_CG_ITEM_IMPL( CG_ITEM_SOCKET_FILL_SYN )
{
MSG_CG_ITEM_SOCKET_FILL_SYN * pRecvMsg = (MSG_CG_ITEM_SOCKET_FILL_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->FillSocket( pRecvMsg->m_SocketItemPos, pRecvMsg->m_TargetPos );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
MSG_CG_ITEM_SOCKET_FILL_ACK msg;
msg.m_SocketItemPos = pRecvMsg->m_SocketItemPos;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
SCItemSlot & rSlot = (SCItemSlot &)pPlayer->GetItemManager()->GetItemSlotContainer(SI_INVENTORY)->GetSlot( msg.m_TargetPos );
rSlot.CopyOut(msg.m_TargetItemStream);
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
default:
{
MSG_CG_ITEM_SOCKET_FILL_NAK msg;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
Handler_CG_ITEM_IMPL( CG_ITEM_SOCKET_EXTRACT_SYN )
{
MSG_CG_ITEM_SOCKET_EXTRACT_SYN * pRecvMsg = (MSG_CG_ITEM_SOCKET_EXTRACT_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->ExtractSocket( pRecvMsg->m_TargetPos );
switch( rt )
{
case RC::RC_ITEM_EXTRACTSOCKET_SUCCESS:
{
MSG_CG_ITEM_SOCKET_EXTRACT_SUCCESS_ACK msg;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
SCItemSlot & rSlot = (SCItemSlot &)pPlayer->GetItemManager()->GetItemSlotContainer(SI_INVENTORY)->GetSlot( msg.m_TargetPos );
rSlot.CopyOut(msg.m_TargetItemStream);
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
case RC::RC_ITEM_EXTRACTSOCKET_FAILED:
{
MSG_CG_ITEM_SOCKET_EXTRACT_FAILED_ACK msg;
msg.m_TargetPos = pRecvMsg->m_TargetPos;
pPlayer->SendPacket(&msg,sizeof(msg));
}
break;
default:
{
MSG_CG_ITEM_SOCKET_EXTRACT_NAK msg;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
Handler_CG_ITEM_IMPL( CG_ITEM_ACCESSORY_CREATE_SYN )
{
MSG_CG_ITEM_ACCESSORY_CREATE_SYN * pRecvMsg = (MSG_CG_ITEM_ACCESSORY_CREATE_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
MSG_CG_ITEM_ACCESSORY_CREATE_ACK amsg;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->CreateAccessory( pRecvMsg->m_type, pRecvMsg->m_SocketItemPos, &amsg.m_ItemInfo );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
amsg.m_type = pRecvMsg->m_type;
amsg.m_SocketItemPos = pRecvMsg->m_SocketItemPos;
amsg.m_Money = pPlayer->GetMoney();
pPlayer->SendPacket(&amsg,amsg.GetSize());
}
break;
default:
{
MSG_CG_ITEM_ACCESSORY_CREATE_NAK msg;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket(&msg,sizeof(msg));
}
}
}
VOID Handler_CG_ITEM::OnCG_ITEM_MOVE_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
MSG_CG_ITEM_MOVE_SYN * pRecvMsg = (MSG_CG_ITEM_MOVE_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->Move( pRecvMsg->m_fromIndex, pRecvMsg->m_fromPos, pRecvMsg->m_toIndex, pRecvMsg->m_toPos );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
MSG_CG_ITEM_MOVE_ACK msg;
msg.m_byCategory = CG_ITEM;
msg.m_byProtocol = CG_ITEM_MOVE_ACK;
msg.m_fromIndex = pRecvMsg->m_fromIndex;
msg.m_fromPos = pRecvMsg->m_fromPos;
msg.m_toIndex = pRecvMsg->m_toIndex;
msg.m_toPos = pRecvMsg->m_toPos;
pPlayer->SendPacket( &msg, sizeof( MSG_CG_ITEM_MOVE_ACK ) );
//肺弊颇老阑 巢变促.
//1. 芒绊俊 该扁扁
if(msg.m_fromIndex == SI_INVENTORY && msg.m_toIndex == SI_WAREHOUSE)
{
SCItemSlotContainer * pInventory = pPlayer->GetItemManager()->GetItemSlotContainer( SI_INVENTORY );
SCItemSlot & rSlot = (SCItemSlot &)pInventory->GetSlot(pRecvMsg->m_fromPos);
GAMELOG->WriteItemMoveInWareHouse( pPlayer, g_pGameServer->GetServerGUID(), TRUE, &rSlot );
}
//2. 芒绊俊辑 茫扁
else if(msg.m_fromIndex == SI_WAREHOUSE && msg.m_toIndex == SI_INVENTORY)
{
SCItemSlotContainer * pWareHouse = pPlayer->GetItemManager()->GetItemSlotContainer( SI_WAREHOUSE );
SCItemSlot & rSlot = (SCItemSlot &)pWareHouse->GetSlot(pRecvMsg->m_fromPos);
GAMELOG->WriteItemMoveInWareHouse( pPlayer, g_pGameServer->GetServerGUID(), FALSE, &rSlot );
}
}
break;
case RC::RC_ITEM_INVALIDPOS:
default:
{
MSG_CG_ITEM_MOVE_NAK msg;
msg.m_byCategory = CG_ITEM;
msg.m_byProtocol = CG_ITEM_MOVE_NAK;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket( &msg, sizeof( MSG_CG_ITEM_MOVE_NAK ) );
}
}
}
VOID Handler_CG_ITEM::OnCG_ITEM_PICK_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
MSG_CG_ITEM_PICK_SYN * pRecvMsg = (MSG_CG_ITEM_PICK_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
MSG_CG_ITEM_PICK_ACK amsg;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->Pick( pRecvMsg->m_dwFieldItemObjectKey, &amsg.m_ItemInfo );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
pPlayer->SendPacket( &amsg, amsg.GetSize() );
}
break;
default:
{
MSG_CG_ITEM_PICK_NAK msg;
msg.m_dwErrorCode = rt;
msg.m_dwFieldItemObjectKey = pRecvMsg->m_dwFieldItemObjectKey;
pPlayer->SendPacket( &msg, sizeof( msg ) );
}
}
}
VOID Handler_CG_ITEM::OnCG_ITEM_DROP_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
MSG_CG_ITEM_DROP_SYN * pRecvMsg = (MSG_CG_ITEM_DROP_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->Drop( pRecvMsg->m_atIndex, pRecvMsg->m_atPos );
switch( rt )
{
case RC::RC_ITEM_SUCCESS:
{
MSG_CG_ITEM_DROP_ACK msg;
msg.m_byCategory = CG_ITEM;
msg.m_byProtocol = CG_ITEM_DROP_ACK;
msg.m_atIndex = pRecvMsg->m_atIndex;
msg.m_atPos = pRecvMsg->m_atPos;
pPlayer->SendPacket( &msg, sizeof( msg ) );
}
break;
default:
{
MSG_CG_ITEM_DROP_NAK msg;
msg.m_byCategory = CG_ITEM;
msg.m_byProtocol = CG_ITEM_DROP_NAK;
msg.m_dwErrorCode = rt;
pPlayer->SendPacket( &msg, sizeof( msg ) );
}
}
}
VOID Handler_CG_ITEM::OnCG_ITEM_COMBINE_SYN( ServerSession * pServerSession, MSG_BASE * pMsg, WORD wSize )
{
MSG_CG_ITEM_COMBINE_SYN * pRecvMsg = (MSG_CG_ITEM_COMBINE_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
RC::eITEM_RESULT rt = pPlayer->GetItemManager()->Combine( pRecvMsg->m_fromIndex, pRecvMsg->m_fromPos, pRecvMsg->m_toIndex, pRecvMsg->m_toPos );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -