📄 handler_dg_charinfo.cpp
字号:
#include "stdafx.h"
#include ".\handler_dg_charinfo.h"
#include <PacketStruct_DG.h>
#include <PacketStruct_CG.h>
#include <PacketStruct_AG.h>
#include "PlayerManager.h"
#include "Player.h"
#include <Macro.h>
#include "ServerSession.h"
#include <VarPacket.h>
#include "ItemManager.h"
#include "SCItemSlotContainer.h"
#include "DropManager.h"
#include "ObjectFactory.h"
#include "PlayerDisconnectHandler.h"
#include "QuestManager.h"
#include "MissionManager.h"
#include "Skill.h"
#include "SkillManager.h"
#include "GameZone.h"
#include "GameZoneManager.h"
#include "WarehouseSlotContainer.h"
#include "QuickManager.h"
#include "EventInventorySlotContainer.h"
Handler_DG_CHARINFO::Handler_DG_CHARINFO()
{
}
Handler_DG_CHARINFO::~Handler_DG_CHARINFO()
{
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_CHAR_ITEM_CMD )
{
MSG_DG_CHARINFO_CHAR_ITEM_CMD * pRecvMsg = (MSG_DG_CHARINFO_CHAR_ITEM_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->SetCharInfo( &pRecvMsg->m_CharacterInfo );
pPlayer->SerializeItemTotalInfo( pRecvMsg->m_ItemInfo, SERIALIZE_STORE );
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_SKILL_CMD )
{
MSG_DG_CHARINFO_SKILL_CMD * pRecvMsg = (MSG_DG_CHARINFO_SKILL_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->SerializeSkillTotalInfo( pRecvMsg->m_SkillInfo, SERIALIZE_STORE );
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_QUICK_CMD )
{
MSG_DG_CHARINFO_QUICK_CMD * pRecvMsg = (MSG_DG_CHARINFO_QUICK_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->SerializeQuickTotalInfo( pRecvMsg->m_QuickInfo, SERIALIZE_STORE );
pPlayer->GetQuickManager()->UpdateOriginalItems();
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_STYLE_CMD )
{
MSG_DG_CHARINFO_STYLE_CMD * pRecvMsg = (MSG_DG_CHARINFO_STYLE_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->SerializeStyleTotalInfo( pRecvMsg->m_StyleInfo, SERIALIZE_STORE );
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_QUEST_CMD )
{
MSG_DG_CHARINFO_QUEST_CMD * pRecvMsg = (MSG_DG_CHARINFO_QUEST_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->GetMissionManager()->SerializeStream( pRecvMsg->m_pMissionStream, MAX_MISSIONSTREAM_SIZE, SERIALIZE_STORE );
pPlayer->GetQuestManager()->SerializeStream( pRecvMsg->m_pQuestStream, MAX_QUESTSTREAM_SIZE, SERIALIZE_STORE );
// Agent肺 QUEST沥焊 焊晨
/*MSG_AG_CHARINFO_QUEST_CMD msg;
memcpy( msg.m_pMissionStream, pRecvMsg->m_pMissionStream, MAX_MISSIONSTREAM_SIZE );
memcpy( msg.m_pQuestStream, pRecvMsg->m_pQuestStream, MAX_MISSIONSTREAM_SIZE );
pPlayer->SendPacket( &msg, sizeof(msg) );*/
}
/*
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_WAREHOUSE_CMD )
{
MSG_DG_CHARINFO_WAREHOUSE_CMD * pRecvMsg = (MSG_DG_CHARINFO_WAREHOUSE_CMD *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return ;
pPlayer->SerializeWarehouseTotalInfo( pRecvMsg->m_ItemInfo, SERIALIZE_STORE);
}
*/
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_UDPATE_ACK )
{
MSG_DG_CHARINFO_UDPATE_ACK * pRecvMsg = (MSG_DG_CHARINFO_UDPATE_ACK *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return;
/*
sSWITCH( pRecvMsg->m_byType )
CASE( MSG_DG_CHARINFO_UDPATE_ACK::UNREGISTER )
MSG_AG_CONNECTION_UNREGISTER_ACK msg;
pPlayer->SendPacket( &msg, sizeof(msg) );
DEFAULT
eSWITCH
*/
MSG_AG_ZONE_ROOM_LEAVE_ACK msg;
pPlayer->SendPacket( &msg, sizeof(msg) );
PlayerManager::Instance()->RemovePlayer( pPlayer );
ObjectFactory::Instance()->FreeObject( pPlayer );
}
class PassiveSkillListOpr
{
BYTE m_byCount;
SLOTCODE *m_SkillCodeArray;
public:
PassiveSkillListOpr( SLOTCODE *SkillCodeArray ) : m_SkillCodeArray(SkillCodeArray), m_byCount(0) {}
BYTE GetCount() { return m_byCount; }
VOID operator () ( Skill *pSkill )
{
m_SkillCodeArray[m_byCount] = pSkill->GetSkillCode();
++m_byCount;
}
};
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_ALL_REQ_ACK )
{
MSG_DG_CHARINFO_ALL_REQ_ACK * pRecvMsg = (MSG_DG_CHARINFO_ALL_REQ_ACK *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
// 某腐磐 沥焊甸 历厘
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return;
sSWITCH( pRecvMsg->m_byType )
CASE( MSG_DG_CHARINFO_ALL_REQ_ACK::JOIN_VILLAGE )
MSG_CG_CHARINFO_CHAR_ITEM_CMD msg1;
pPlayer->CopyToCharInfo( msg1.m_CharacterInfo );
pPlayer->SerializeInventoryTotalInfo( msg1.m_ItemInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg1, msg1.GetSize() );
MSG_CG_CHARINFO_SKILL_CMD msg2;
pPlayer->SerializeSkillTotalInfo( msg2.m_SkillInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg2, msg2.GetSize() );
// 菩矫宏 胶懦府胶飘绰 宏肺靛肺 朝妨具茄促.
/* MSG_CG_SKILL_PASSIVE_SKILL_LIST_CMD msg3;
PassiveSkillListOpr PassiveOpr( msg3.m_SkillCode );
pPlayer->GetSkillManager()->ForEachPassiveSkill( PassiveOpr );
msg3.m_dwObjectKey = pPlayer->GetObjectKey();
msg3.m_byCount = PassiveOpr.GetCount();
pPlayer->SendPacketAround( &msg3, msg3.GetSize() );*/
MSG_CG_CHARINFO_QUICK_CMD msg4;
pPlayer->SerializeQuickTotalInfo( msg4.m_QuickInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg4, msg4.GetSize() );
MSG_CG_CHARINFO_STYLE_CMD msg5;
pPlayer->SerializeStyleTotalInfo( msg5.m_StyleInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg5, msg5.GetSize() );
//SUNLOG( eFULL_LOG, "[U:%d,P:%d,ID:%s]:付阑俊 甸绢 咳", pPlayer->GetUserKey(), pPlayer->GetObjectKey(), pPlayer->GetUserID() );
eSWITCH
pPlayer->SetState( PLAYER_LOADING );
//肺弊牢矫 酒捞袍 沥焊 巢扁扁
GAMELOG->WriteInvenInfoOnLogin( pPlayer, g_pGameServer->GetServerGUID() );
//肺弊牢矫 酒捞袍 沥焊 巢扁扁 场
//某腐磐 立加 肺弊
GAMELOG->WriteCharConnect( pPlayer, g_pGameServer->GetServerGUID() );
//某腐磐 立加 肺弊 场
MSG_AG_ZONE_ROOM_JOIN_ACK msg;
pPlayer->SendPacket(&msg, sizeof(msg));
}
Handler_DG_CHARINFO_IMPL( DG_CHARINFO_ALL_REQ_NAK )
{
MSG_DG_CHARINFO_ALL_REQ_NAK * pRecvMsg = (MSG_DG_CHARINFO_ALL_REQ_NAK *)pMsg;
DWORD UserKey = pRecvMsg->m_dwKey;
// 某腐磐 沥焊甸 历厘
Player * pPlayer = PlayerManager::Instance()->FindPlayer( UserKey );
if( !pPlayer ) return;
SUNLOG( eCRITICAL_LOG, "[Handler_DG_CHARINFO_IMPL( DG_CHARINFO_ALL_REQ_NAK )] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
SUNLOG( eCRITICAL_LOG, "[Handler_DG_CHARINFO_IMPL( DG_CHARINFO_ALL_REQ_NAK )] [U:%d,ID:%s]DG_CHARINFO_ALL_REQ_NAK : 甸绢 棵 荐 绝促!!!!!!!!!!!!!!!!!!!!!!!!!!!", pPlayer->GetUserKey(), pPlayer->GetUserID() );
SUNLOG( eCRITICAL_LOG, "[Handler_DG_CHARINFO_IMPL( DG_CHARINFO_ALL_REQ_NAK )] !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
MSG_AG_ZONE_ROOM_JOIN_NAK msg;
msg.m_dwErrorCode = pRecvMsg->m_dwErrorCode;
pPlayer->SendPacket( &msg, sizeof(msg) );
}
Handler_DG_CHARINFO_IMPL( DG_ITEM_SERIAL_ACK )
{
MSG_DG_ITEM_SERIAL_ACK * pRecvMsg = (MSG_DG_ITEM_SERIAL_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
SCSlotContainer *pContainer = pPlayer->GetItemManager()->GetItemSlotContainer(pRecvMsg->m_SlotIdx);
SCSlot & slot = pContainer->GetSlot(pRecvMsg->m_ItemPos);
ASSERT( slot.GetSerial() == TEMP_DBSERIAL_VALUE );
slot.SetSerial( pRecvMsg->m_DBSerial );
pContainer->SetLock(pRecvMsg->m_ItemPos,FALSE);
}
/*
Handler_DG_CHARINFO_IMPL( DG_ITEM_WAREHOUSEITEMALL_ACK )
{
MSG_DG_ITEM_WAREHOUSEITEMALL_ACK * pRecvMsg = (MSG_DG_ITEM_WAREHOUSEITEMALL_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
ItemManager * pMGR = pPlayer->GetItemManager();
pPlayer->SerializeWarehouseTotalInfo( pRecvMsg->m_ItemInfo, SERIALIZE_STORE );
pMGR->SetWarehouseMoney( pRecvMsg->m_Money );
MSG_CG_ITEM_WAREHOUSEITEMALL_ACK msg;
msg.m_WarehouseMoney = pMGR->GetWarehouseMoney();
pPlayer->SerializeWarehouseTotalInfo( msg.m_ItemInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg, msg.GetSize() );
}
*/
Handler_DG_CHARINFO_IMPL( DG_WAREHOUSE_START_ACK )
{
MSG_DG_WAREHOUSE_START_ACK * pRecvMsg = (MSG_DG_WAREHOUSE_START_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
// 芒绊 矫累 惑怕肺 官厕
CWarehouseSlotContainer * pContainer = pPlayer->GetWarehouseContainer();
ASSERT( !pContainer->IsStarted() );
pContainer->SerializeItemInfo( pRecvMsg->m_ItemInfo, SERIALIZE_STORE );
pContainer->SerializeMoney( pRecvMsg->m_WarehouseMoney );
pContainer->StartWarehouse();
MSG_CG_WAREHOUSE_START_ACK msg;
msg.m_WarehouseMoney = pContainer->GetCurMoney();
pContainer->SerializeItemInfo( msg.m_ItemInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg, msg.GetSize() );
//芒绊 沥焊 肺弊 巢扁扁
for( POSTYPE i=0; i < pContainer->GetMaxSlotNum(); i++ )
{
if( !pContainer->IsEmpty(i) )
{
SCItemSlot& rItemSlot = (SCItemSlot&)pContainer->GetSlot(i);
GAMELOG->WriteWareHouseInfo( pPlayer, g_pGameServer->GetServerGUID(), &rItemSlot, (DWORD)pContainer->GetCurMoney() );
}
}
//芒绊 沥焊 肺弊 巢扁扁 场
}
Handler_DG_CHARINFO_IMPL( DG_WAREHOUSE_START_NAK )
{
MSG_DG_WAREHOUSE_START_NAK * pRecvMsg = (MSG_DG_WAREHOUSE_START_NAK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
MSG_CG_WAREHOUSE_START_NAK msg;
msg.m_dwErrorCode = pRecvMsg->m_dwErrorCode;
pPlayer->SendPacket( &msg, sizeof(msg) );
}
Handler_DG_CHARINFO_IMPL( DG_WAREHOUSE_END_ACK )
{
MSG_DG_WAREHOUSE_END_ACK * pRecvMsg = (MSG_DG_WAREHOUSE_END_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
CWarehouseSlotContainer * pContainer = pPlayer->GetWarehouseContainer();
//芒绊 辆丰 沥焊 肺弊 巢扁扁
for( POSTYPE i=0; i < pContainer->GetMaxSlotNum(); i++ )
{
if( !pContainer->IsEmpty(i) )
{
SCItemSlot& rItemSlot = (SCItemSlot&)pContainer->GetSlot(i);
GAMELOG->WriteWareHouseInfo( pPlayer, g_pGameServer->GetServerGUID(), &rItemSlot, (DWORD)pContainer->GetCurMoney() );
}
}
//芒绊 沥焊 肺弊 巢扁扁 场
pContainer->ClearAll();
MSG_CG_WAREHOUSE_END_ACK msg;
pPlayer->SendPacket( &msg, sizeof(msg) );
}
Handler_DG_CHARINFO_IMPL( DG_WAREHOUSE_END_NAK )
{
MSG_DG_WAREHOUSE_END_NAK * pRecvMsg = (MSG_DG_WAREHOUSE_END_NAK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
CWarehouseSlotContainer * pContainer = pPlayer->GetWarehouseContainer();
// 矫累惑怕肺 登倒覆
pContainer->StartWarehouse();
MSG_CG_WAREHOUSE_END_NAK msg;
msg.m_dwErrorCode = pRecvMsg->m_dwErrorCode;
pPlayer->SendPacket( &msg, sizeof(msg) );
}
Handler_DG_CHARINFO_IMPL( DG_EVENT_SELECT_ACK )
{
MSG_DG_EVENT_SELECT_ACK * pRecvMsg = (MSG_DG_EVENT_SELECT_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
pPlayer->GetEventSlotContainer()->OnSelect( TRUE, &pRecvMsg->m_TotalInfo );
MSG_CG_EVENT_SELECT_ACK msg;
pPlayer->GetEventSlotContainer()->Serialize( msg.m_TotalInfo, SERIALIZE_LOAD );
pPlayer->SendPacket( &msg, msg.GetSize() );
}
Handler_DG_CHARINFO_IMPL( DG_EVENT_SELECT_NAK )
{
MSG_DG_EVENT_SELECT_NAK * pRecvMsg = (MSG_DG_EVENT_SELECT_NAK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
pPlayer->GetEventSlotContainer()->OnSelect( FALSE, NULL );
MSG_CG_EVENT_SELECT_NAK msg;
msg.m_byErrorCode = RC::RC_EVENT_NOTEXIST_EVENTITEM;//pRecvMsg->m_byErrorCode;//< 酒捞袍捞 绝阑 版快父 肺流利栏肺 nak啊 坷霸登绢乐澜
pPlayer->SendPacket( &msg, sizeof(msg) );
}
Handler_DG_CHARINFO_IMPL( DG_EVENT_UPDATE_ACK )
{
MSG_DG_EVENT_UPDATE_ACK * pRecvMsg = (MSG_DG_EVENT_UPDATE_ACK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
MSG_CG_EVENT_MOVE_ITEM_TO_INVEN_ACK msg;
pPlayer->GetEventSlotContainer()->OnMoveItemToInventory( TRUE, pRecvMsg->m_ItemPos, &msg.m_TotalInfo );
pPlayer->SendPacket( &msg, msg.GetSize() );
}
Handler_DG_CHARINFO_IMPL( DG_EVENT_UPDATE_NAK )
{
MSG_DG_EVENT_UPDATE_NAK * pRecvMsg = (MSG_DG_EVENT_UPDATE_NAK *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
ASSERT( pPlayer );
if( !pPlayer ) return ;
pPlayer->GetEventSlotContainer()->OnMoveItemToInventory( FALSE, 0, NULL );
MSG_CG_EVENT_MOVE_ITEM_TO_INVEN_NAK msg;
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
pPlayer->SendPacket( &msg, sizeof(msg) );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -