⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handler_cg_gm.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	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 + -