📄 handler_cg_gm.cpp
字号:
MSG_CG_GM_LEVEL_UP_SYN* pRecv = (MSG_CG_GM_LEVEL_UP_SYN*)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
if ( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() ) return;
if( MAX_LEVEL < pPlayer->GetLevel() + pRecv->m_wBonusLevel)
{
return;
}
pPlayer->LevelUp( pRecv->m_wBonusLevel );
}
// 胶泡器牢飘诀
VOID Handler_CG_GM::OnCG_GM_STAT_UP_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
MSG_CG_GM_STAT_UP_SYN* pRecv = (MSG_CG_GM_STAT_UP_SYN*)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
if ( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() ) return;
// 胶湃器牢飘俊 措茄 八刘 鞘荐!!
pPlayer->StatPointUp( pRecv->m_dwBonusStat );
}
// 胶懦器牢飘诀
VOID Handler_CG_GM::OnCG_GM_SKILLPOINT_UP_SYN( ServerSession * pServerSession, MSG_BASE* pMsg, WORD wSize )
{
MSG_CG_GM_SKILLPOINT_UP_SYN* pRecv = (MSG_CG_GM_SKILLPOINT_UP_SYN*)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecv->m_dwKey );
if ( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() ) return;
// 胶懦 器牢飘俊 措茄 八刘 鞘荐!!
pPlayer->SkillPointUp( pRecv->m_dwBonusSkill );
}
Handler_CG_GM_IMPL( CG_GM_RELOAD_DATA_CMD )
{
MSG_CG_GM_RELOAD_DATA_CMD * pRecvMsg = (MSG_CG_GM_RELOAD_DATA_CMD *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if ( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() ) return;
// 府肺爹 疙飞 鼻茄 乐绰瘤 眉农秦具 窃
g_pGameServer->ReloadData();
}
class GetPlayerInfoOpr
{
BYTE m_byPlayerNum;
GM_CHARINFO *m_pCharInfo;
public:
GetPlayerInfoOpr( GM_CHARINFO *pCharInfo ) : m_pCharInfo(pCharInfo), m_byPlayerNum(0) {}
~GetPlayerInfoOpr() {}
BYTE GetPlayerNum() { return m_byPlayerNum; }
VOID operator () ( Player *pPlayer )
{
if( m_byPlayerNum >= MSG_CG_GM_ROOMINFO_ACK::_MAX_PLAYER_INFO_SIZE ) return;
strncpy( m_pCharInfo[m_byPlayerNum].m_szCharName, pPlayer->GetCharName(), MAX_CHARNAME_LENGTH );
m_pCharInfo[m_byPlayerNum].m_byClass = pPlayer->GetCharType();
m_pCharInfo[m_byPlayerNum].m_LV = pPlayer->GetLevel();
pPlayer->GetPos( &m_pCharInfo[m_byPlayerNum].m_vCurPos );
m_byPlayerNum++;
}
};
// 规沥焊
Handler_CG_GM_IMPL( CG_GM_ROOMINFO_SYN )
{
MSG_CG_GM_ROOMINFO_SYN* pRecvMsg = (MSG_CG_GM_ROOMINFO_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() )
{
MSG_CG_GM_RECOVERY_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
GameZone *pZone = NULL;
if( pRecvMsg->m_RoomKey )
{
pZone = g_GameZoneManager.GetZone( pRecvMsg->m_RoomKey );
}
else if( pPlayer->GetField() && pPlayer->GetField()->GetMap() )
{
pZone = pPlayer->GetField()->GetMap()->GetGameZone();
}
else
{
MSG_CG_GM_ROOMINFO_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ROOM_NOT_EXIST;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
if( !pZone )
{
MSG_CG_GM_ROOMINFO_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ROOM_NOT_EXIST;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
MSG_CG_GM_ROOMINFO_ACK AckMsg;
// 规厘捞抚 悸泼
memset( AckMsg.m_szMasterName, 0, sizeof(TCHAR) *MAX_CHARNAME_LENGTH );
if( pZone->GetZoneType() != eZONETYPE_VILLAGE )
{
GameRoom *pRoom = (GameRoom*)pZone;
Player * pMaster = PlayerManager::Instance()->FindPlayer( pRoom->GetMasterUserKey() );
if( pMaster )
{
strncpy( AckMsg.m_szMasterName, pMaster->GetCharName(), MAX_CHARNAME_LENGTH );
}
}
// 敲饭捞吝牢 某腐磐 府胶飘
GetPlayerInfoOpr GetInfoOpr( AckMsg.m_pPlayerInfo );
pZone->ForeachPlayer( GetInfoOpr );
AckMsg.m_byCount = GetInfoOpr.GetPlayerNum();
pPlayer->SendPacket( &AckMsg, sizeof(AckMsg) );
}
// 何劝
Handler_CG_GM_IMPL( CG_GM_RESURRECTION_SYN )
{
MSG_CG_GM_RESURRECTION_SYN* pRecvMsg = (MSG_CG_GM_RESURRECTION_SYN *)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() )
{
MSG_CG_GM_RECOVERY_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
if( pPlayer->OnResurrection( 0, 1.0f, 1.0f ) )
{
// 林困俊 何劝阑 舅妨林磊.
WzVector curPos;
pPlayer->GetPos(&curPos);
MSG_CG_GM_RESURRECTION_BRD sendMsg;
sendMsg.m_dwObjectKey = pPlayer->GetObjectKey();
sendMsg.m_dwHP = pPlayer->GetHP();
sendMsg.m_dwMP = pPlayer->GetMP();
sendMsg.m_wvCurPos = curPos;
pPlayer->SendPacketAround( &sendMsg, sizeof(sendMsg) );
}
else
{
MSG_CG_GM_RESURRECTION_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_CANNOT_RESURRECTION; //何劝且荐 绝澜..
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
}
}
// 雀汗
Handler_CG_GM_IMPL( CG_GM_RECOVERY_SYN )
{
MSG_CG_GM_RECOVERY_SYN* pRecvMsg = (MSG_CG_GM_RECOVERY_SYN*)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() )
{
MSG_CG_GM_RECOVERY_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
DWORD dwMaxHP = pPlayer->GetMaxHP();
DWORD dwMaxMP = pPlayer->GetMaxMP();
if( pPlayer->OnRecover( dwMaxHP, dwMaxMP ) ) //Recover窃荐 郴何俊 BRD 菩哦捞 乐促.. 蝶肺 焊尘 鞘夸 绝促.
{
//// 林困俊 何劝阑 舅妨林磊.
//MSG_CG_GM_RECOVERY_BRD sendMsg;
//sendMsg.m_dwObjectKey = pPlayer->GetObjectKey();
//sendMsg.m_dwHP = pPlayer->GetHP();
//sendMsg.m_dwMP = pPlayer->GetMP();
//pPlayer->SendPacketAround( &sendMsg, sizeof(sendMsg) );
}
else //角菩 沁阑 版快父 焊郴搁 等促.
{
MSG_CG_GM_RECOVERY_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_CANNOT_RESURRECTION; // 雀汗 角菩
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
}
}
// 加档
Handler_CG_GM_IMPL( CG_GM_SET_SPEED_SYN )
{
MSG_CG_GM_SET_SPEED_SYN* pRecvMsg = (MSG_CG_GM_SET_SPEED_SYN*)pMsg;
MSG_CG_GM_RECOVERY_NAK NakMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() )
{
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
// 饭骇篮 0~5鳖瘤捞促.
if( pRecvMsg->m_byMoveLevel > 5 )
{
NakMsg.m_dwErrorCode = RC::RC_GM_INVALID_ARGUMENT;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
float fRatio = 1.0f + 0.5f * pRecvMsg->m_byMoveLevel;
//眠啊肺 捞悼
pPlayer->SetAddMoveSpeedRatio( fRatio );
//林困荤恩俊霸 加档啊 官诧巴阑 焊辰促.
MSG_CG_GM_SET_SPEED_BRD brdMsg;
brdMsg.m_dwObjectKey = pPlayer->GetObjectKey();
brdMsg.m_byMoveLevel = pRecvMsg->m_byMoveLevel;
brdMsg.m_fSpeedRatio = fRatio;
pPlayer->SendPacketAround( &brdMsg, sizeof(brdMsg) );
}
// 涝厘
Handler_CG_GM_IMPL( CG_GM_ENTRANCE_SYN )
{
MSG_CG_GM_ENTRANCE_SYN* pRecvMsg = (MSG_CG_GM_ENTRANCE_SYN*)pMsg;
Player * pPlayer = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pPlayer ) return;
if( !pPlayer->IsGMPlayer() )
{
MSG_CG_GM_RECOVERY_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//涝厘矫俊绰 捧疙 脑, 公利 脑, 加档, 绢墨款飘 脑 惑怕啊 等促.
BOOL bTransparency = pPlayer->IsStatus(eCHAR_STATE_ETC_OBSERVER);
BOOL bSuccess = FALSE;
if (!bTransparency) //泅犁 捧疙 惑怕啊 酒聪扼搁..
{
pPlayer->GetStatusManager()->AllocStatus( eCHAR_STATE_ETC_OBSERVER );
bSuccess = TRUE;
}
if (bSuccess)
{
// Brd
MSG_CG_GM_OBSERVER_BRD BrdMsg;
BrdMsg.m_dwObjectKey = pPlayer->GetObjectKey();
BrdMsg.m_byObserverOn = 1; //公炼扒 捧疙 脑 惑怕捞促.
pPlayer->SendPacketAround( &BrdMsg, sizeof(BrdMsg) );
}
else
{
MSG_CG_GM_OBSERVER_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM;
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
}
BOOL bUndead = pPlayer->IsStatus(eCHAR_STATE_ETC_UNDEAD);
bSuccess = FALSE;
if (!bUndead) //泅犁 公利惑怕啊 酒聪搁
{
pPlayer->GetStatusManager()->AllocStatus( eCHAR_STATE_ETC_UNDEAD );
bSuccess = TRUE;
}
if (bSuccess)
{
// ack
MSG_CG_GM_UNDEAD_MODE_ACK AckMsg;
AckMsg.m_bUndeadOn = TRUE;
pPlayer->SendPacket( &AckMsg, sizeof(AckMsg) );
}
else
{
// nak
MSG_CG_GM_UNDEAD_MODE_NAK NakMsg;
NakMsg.m_dwErrorCode = 0; //捞固 攫单靛 惑怕捞促.
pPlayer->SendPacket( &NakMsg, sizeof(NakMsg) );
}
float fRatio = 2.5f;
pPlayer->SetAddMoveSpeedRatio(fRatio);
//林困荤恩俊霸 加档啊 官诧巴阑 焊辰促.
MSG_CG_GM_SET_SPEED_BRD brdMsg;
brdMsg.m_dwObjectKey = pPlayer->GetObjectKey();
brdMsg.m_byMoveLevel = 3;
brdMsg.m_fSpeedRatio = fRatio;
pPlayer->SendPacketAround( &brdMsg, sizeof(brdMsg) );
}
// 立加辆丰
Handler_CG_GM_IMPL( CG_GM_FORCE_DISCONNECT_SYN )
{
MSG_CG_GM_FORCE_DISCONNECT_SYN* pRecvMsg = (MSG_CG_GM_FORCE_DISCONNECT_SYN*)pMsg;
//1. GM Check
Player * pGM = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pGM ) return;
if( !pGM->IsGMPlayer() )
{
MSG_CG_GM_FORCE_DISCONNECT_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//2. User Check
Field* pField = pGM->GetField();
if( !pField ) return;
Player* pUser = (Player*)pField->FindCharacter(pRecvMsg->m_dwUserKey);
if( !pUser )
{
MSG_CG_GM_FORCE_DISCONNECT_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//碍力辆丰
pUser->ForceDisconnect(GM_FORCE_DISCONNECT);
}
// 力芭
Handler_CG_GM_IMPL( CG_GM_MONSTER_DESTROYONE_SYN )
{
MSG_CG_GM_MONSTER_DESTROYONE_SYN* pRecvMsg = (MSG_CG_GM_MONSTER_DESTROYONE_SYN*)pMsg;
//1. GM Check
Player * pGM = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pGM ) return;
if( !pGM->IsGMPlayer() )
{
MSG_CG_GM_MONSTER_DESTROYONE_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//2. User Check
Field* pField = pGM->GetField();
if( !pField ) return;
NPC* pMonster = (NPC*)pField->FindCharacter(pRecvMsg->m_dwMonsterKey);
if( !pMonster )
{
MSG_CG_GM_MONSTER_DESTROYONE_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//Field 俊 npc 窍唱父 瘤快绰 纳腐磐 父甸巴...
pField->KillNPC(pGM, pMonster, FALSE);
}
// 懦
Handler_CG_GM_IMPL( CG_GM_MONSTER_KILLONE_SYN )
{
MSG_CG_GM_MONSTER_KILLONE_SYN* pRecvMsg = (MSG_CG_GM_MONSTER_KILLONE_SYN*)pMsg;
//1. GM Check
Player * pGM = PlayerManager::Instance()->FindPlayer( pRecvMsg->m_dwKey );
if( !pGM ) return;
if( !pGM->IsGMPlayer() )
{
MSG_CG_GM_MONSTER_KILLONE_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_ISNOT_GM; // GM捞 酒聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//2. User Check
Field* pField = pGM->GetField();
if( !pField ) return;
NPC* pMonster = (NPC*)pField->FindCharacter(pRecvMsg->m_dwMonsterKey);
if( !pMonster )
{
MSG_CG_GM_MONSTER_KILLONE_NAK NakMsg;
NakMsg.m_dwErrorCode = RC::RC_GM_NOTEXIST_USER; // USER啊 粮犁窍瘤 臼嚼聪促.
pGM->SendPacket( &NakMsg, sizeof(NakMsg) );
return;
}
//Field 俊 npc 窍唱父 瘤快绰 纳腐磐 父甸巴...
pField->KillNPC(pGM, pMonster, TRUE);
}
*/
// 胶飘傅 疙飞绢 贸府
Handler_CG_GM_IMPL( CG_GM_STRING_CMD_SYN )
{
MSG_CG_GM_STRING_CMD_SYN* pRecvMsg = (MSG_CG_GM_STRING_CMD_SYN*)pMsg;
m_GMCmdManager.ParseCommand( pRecvMsg->m_dwKey, pRecvMsg->m_szStringCmd );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -