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

📄 handler_wz.cpp

📁 奇迹世界 部分源代码奇迹世界 部分源代码奇迹世界 部分源代码
💻 CPP
字号:
#include "StdAfx.h"
#include ".\handler_WZ.h"
#include "WorldServer.h"
#include "GuildServerSession.h"
#include "ServerSessionManager.h"
#include <PacketStruct_CW.h>
#include <PacketStruct_WZ.h>
#include "WorldGuildManager.h"
#include "WorldGuild.h"
#include "WorldGuildMember.h"
#include "UserManager.h"
#include "User.h"

// 辨靛 沥焊 眠啊
VOID Handler_WZ::OnWZ_GUILD_INFO_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_INFO_CMD *pRecvMsg = (MSG_WZ_GUILD_INFO_CMD*)pMsg;

	g_WorldGuildManager.OnAddGuild( pRecvMsg->m_GuildInfo, pRecvMsg->m_MemberInfo, pRecvMsg->m_Count );

	// 柯扼牢 糕滚啊 乐促绰 娟扁!
	User	*pUser;

	for(BYTE i=0;i<pRecvMsg->m_Count; i++)
	{
		if( pRecvMsg->m_MemberInfo[i].m_byIsLogin != 0 )
		{
			pUser = UserManager::Instance()->FindUserByCharGuid( pRecvMsg->m_MemberInfo[i].m_CharGuid );
			if( !pUser )
			{
				MessageOut( eCRITICAL_LOG, "WZ_GUILD_INFO Error - No Online Member[%s][CharGuid:%u]!!", pRecvMsg->m_MemberInfo[i].m_tszCharName, pRecvMsg->m_MemberInfo[i].m_CharGuid );
				continue;
			}
			pUser->SetGuildGuid( pRecvMsg->m_GuildInfo.m_GuildGuid );	// 技~泼~!!!

			// 辨靛俊 柯扼牢 糕滚肺 眠啊
			g_WorldGuildManager.OnLoginGulid( pUser, pRecvMsg->m_GuildInfo.m_GuildGuid );
		}
	}

	MessageOut( eFULL_LOG, "WZ_GUILD_INFO(%s/%u)", pRecvMsg->m_GuildInfo.m_tszGuildName, pRecvMsg->m_GuildInfo.m_GuildGuid );
}

VOID Handler_WZ::OnWZ_GUILD_DESTROY_GUILD_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_DESTROY_GUILD_CMD* pRecvMsg = (MSG_WZ_GUILD_DESTROY_GUILD_CMD*)pMsg;

	MessageOut( eFULL_LOG, "WZ_GUILD_DESTROY(%s/%u)", g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid )->GetGuildName(), pRecvMsg->m_GuildGuid );
	g_WorldGuildManager.OnDestroyGuild( pRecvMsg->m_GuildGuid );
}

VOID Handler_WZ::OnWZ_GUILD_JOIN_GUILD_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_JOIN_GUILD_CMD* pRecvMsg = (MSG_WZ_GUILD_JOIN_GUILD_CMD*)pMsg;

	GUILD_MEMBER_INFO	memberInfo;

	memcpy( &memberInfo, &pRecvMsg->m_Info, sizeof(BASE_GUILD_MEMBER_INFO) );
	memberInfo.m_byIsLogin = 1;	// 寸楷洒 啊涝且 荐 乐栏妨搁 柯扼牢

	g_WorldGuildManager.OnJoinGuild( pRecvMsg->m_GuildGuid, memberInfo );


	WorldGuild* pGuild = g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid );
	if( !pGuild )
	{
		MessageOut( eCRITICAL_LOG, "GUILD_JOIN Error - No Guild[GuildGuid:%u]", pRecvMsg->m_GuildGuid );
		return;
	}
	User	*pUser = UserManager::Instance()->FindUser( pRecvMsg->m_Info.m_tszCharName );

	if( !pUser )
	{
		MessageOut( eCRITICAL_LOG, "GUILD_JOIN Error - User[%s][CharGuid:%u] Already Logout", pRecvMsg->m_Info.m_tszCharName, pRecvMsg->m_Info.m_CharGuid );
		return;
	}
/*
	// 促弗 糕滚甸 吝 柯扼牢牢 糕滚甸俊霸 捞 荤角阑 舅妨霖促
	MSG_CW_GUILD_MEMBER_JOIN_BRD	brdMsg;

	brdMsg.m_Member.m_byClass = pRecvMsg->m_Info.m_byClass;
	brdMsg.m_Member.m_byOnline = 1;	// 货肺 啊涝沁栏聪 构...
	brdMsg.m_Member.m_byPosition = pRecvMsg->m_Info.m_byPosition;
	brdMsg.m_Member.m_LV = pRecvMsg->m_Info.m_LV;
	memcpy( brdMsg.m_Member.m_tszCharName, pRecvMsg->m_Info.m_tszCharName, sizeof(brdMsg.m_Member.m_tszCharName) );

	pGuild->SendAll( (BYTE*)&brdMsg, sizeof(MSG_CW_GUILD_MEMBER_JOIN_BRD) );
*/
	// 促弗 糕滚甸 吝 柯扼牢牢 糕滚甸阑 舅妨霖促
	MSG_CW_GUILD_MEMBER_BRD sendMsg;

	sendMsg.m_Count = 0;

	pGuild->GetMemberPacketInfo( sendMsg.m_Count, sendMsg.m_Member );

	pUser->Send( (BYTE*)&sendMsg, sendMsg.GetSize() );

	MessageOut( eFULL_LOG, "WZ_GUILD_JOIN(%s/%u) - (%s)", g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid )->GetGuildName(), 
														pRecvMsg->m_GuildGuid, 
														pRecvMsg->m_Info.m_tszCharName );
}

VOID Handler_WZ::OnWZ_GUILD_WITHDRAW_GUILD_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_WITHDRAW_GUILD_CMD* pRecvMsg = (MSG_WZ_GUILD_WITHDRAW_GUILD_CMD*)pMsg;

	// 促弗 糕滚甸 吝 柯扼牢牢 糕滚甸俊霸 捞 荤角阑 舅妨霖促
	WorldGuild* pGuild = g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid );
	if( !pGuild )
	{
		MessageOut( eCRITICAL_LOG, "GUILD_JOIN Error - No Guild[GuildGuid:%u]", pRecvMsg->m_GuildGuid );
		return;
	}

/*
	User *pUser = UserManager::Instance()->FindUserByCharGuid( pRecvMsg->m_CharGuid );

	if( pUser )
	{
		MSG_CW_GUILD_MEMBER_WITHDRAW_BRD	brdMsg;

		memset( brdMsg.m_tszCharName, 0, sizeof(TCHAR) * MAX_CHARNAME_LENGTH );
		_tcsncpy( brdMsg.m_tszCharName, pUser->GetCharName().c_str(), MAX_CHARNAME_LENGTH - 1 );

		pGuild->SendAll( (BYTE*)&brdMsg, sizeof(MSG_CW_GUILD_MEMBER_WITHDRAW_BRD) );
	}
*/
	g_WorldGuildManager.OnWithdrawGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid );

	MessageOut( eFULL_LOG, "WZ_GUILD_WITHDRAW(%s/%u) - (%u)", g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid )->GetGuildName(), 
														pRecvMsg->m_GuildGuid, 
														pRecvMsg->m_CharGuid );
}

VOID Handler_WZ::OnWZ_GUILD_LOGIN_CHAR_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_LOGIN_CHAR_CMD* pRecvMsg = (MSG_WZ_GUILD_LOGIN_CHAR_CMD*)pMsg;

	User	*pUser = UserManager::Instance()->FindUserByCharGuid( pRecvMsg->m_CharGuid );

	if( !pUser )
	{
		MessageOut( eCRITICAL_LOG, "WZ_GUILD_LOGIN_CHAR Error - [CharGuid:%u]酒流 World辑滚俊 绝澜!!!", pRecvMsg->m_CharGuid );
		return;
	}

	WorldGuild *pGuild = g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid );

	if( !pGuild)
	{
		MSG_WZ_GUILD_SELECT_SYN ToGuildMsg;
		ToGuildMsg.m_dwKey = pUser->GetGUID();
		ToGuildMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
		ToGuildMsg.m_CharGuid = pUser->GetCharGuid();
		pGuildServer->Send( (BYTE*)&ToGuildMsg, sizeof(MSG_WZ_GUILD_SELECT_SYN) );

		MessageOut( eFULL_LOG, "LOGIN_CHAR_CMD 辨靛沥焊[%u] 绝绢辑 夸没[CharGuid:%u]", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid );
		return;
	}

	WorldGuildMember *pMember = pGuild->FindMember( pRecvMsg->m_CharGuid );

	if( !pMember)
	{
		MessageOut( eCRITICAL_LOG, "WZ_GUILD_LOGIN_CHAR Member 绝澜!" );
		return;
	}

	pMember->SetOnline();

	pUser->SetGuildGuid( pRecvMsg->m_GuildGuid );	// 技~泼~!!!!

	// 辨靛俊 柯扼牢 糕滚肺 眠啊
	pGuild->AddOnlineMember( pUser, pRecvMsg->m_CharGuid );
/*
	// 辨靛狼 葛电 柯扼牢 糕滚甸俊霸 柯扼牢 咯何甫 舅妨霖促
	MSG_CW_GUILD_LOGIN_CHAR_BRD	sendMsg;

	memcpy( sendMsg.m_tszCharName, pMember->GetCharName(), sizeof(sendMsg.m_tszCharName) );

	pGuild->SendAll( (BYTE*)&sendMsg, sizeof(MSG_CW_GUILD_LOGIN_CHAR_BRD) );

	// 捞 仇俊霸绰 辨靛 沥焊甫 烹掳肺 霖促
	MSG_CW_GUILD_MEMBER_BRD	memberMsg;

	memberMsg.m_Count = pGuild->GetMemberNum();

	if( memberMsg.m_Count > 0 )
	{
		GUILDMEMBER_HASH_ITR	iter;
		int						nCount=0;

		pGuild->GetMemberPacketInfo( memberMsg.m_Count, memberMsg.m_Member );
		for( BYTE i = 0; i< memberMsg.m_Count; i++ )
		{
			pUser = UserManager::Instance()->FindUser( memberMsg.m_Member[i].m_tszCharName );

			if( !pUser )
			{
				// 柯扼牢 酒囱 辨靛 糕滚
				continue;
			}

			pUser->Send( (BYTE*)&memberMsg, sizeof(MSG_CW_GUILD_MEMBER_BRD) );
		}
	}
*/
	MessageOut( eFULL_LOG, "GUILD_LOGIN_CHAR(%s/%u)", pMember->GetMemberInfo().m_tszCharName, pRecvMsg->m_CharGuid );
}

VOID Handler_WZ::OnWZ_GUILD_LOGOUT_CHAR_CMD( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_LOGOUT_CHAR_CMD* pRecvMsg = (MSG_WZ_GUILD_LOGOUT_CHAR_CMD*)pMsg;

	WorldGuild *pGuild = g_WorldGuildManager.FindGuild( pRecvMsg->m_GuildGuid );

	if( !pGuild)
	{
		MessageOut( eCRITICAL_LOG, "WZ_GUILD_LOGOUT_CHAR Guild 绝澜!" );
		return;
	}
	WorldGuildMember *pMember = pGuild->FindMember( pRecvMsg->m_CharGuid );

	if( !pMember)
	{
		MessageOut( eCRITICAL_LOG, "WZ_GUILD_LOGOUT_CHAR Member 绝澜!" );
		return;
	}

	pMember->SetOnline( FALSE );

	pGuild->RemoveOnlineMember( pRecvMsg->m_CharGuid );

/*	// 辨靛狼 葛电 柯扼牢 糕滚甸俊霸 柯扼牢 咯何甫 舅妨霖促
	MSG_CW_GUILD_LOGOUT_CHAR_BRD	sendMsg;

	memcpy( sendMsg.m_tszCharName, pMember->GetCharName(), sizeof(sendMsg.m_tszCharName) );

	pGuild->SendAll( (BYTE*)&sendMsg, sizeof(MSG_CW_GUILD_LOGOUT_CHAR_BRD) );
*/
	MessageOut( eFULL_LOG, "GUILD_LOGOUT_CHAR(%s/%u)", pMember->GetMemberInfo().m_tszCharName, pRecvMsg->m_CharGuid );
}

// 辨靛 辑滚 沥焊 汗备 - 菩哦 郴侩捞 WZ_GUILD_INFO_CMD客 肯傈 悼老窍骨肺 沥焊 技泼 规过档 肯傈 悼老
VOID Handler_WZ::OnWZ_GUILD_SELECT_ACK( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_SELECT_ACK *pRecvMsg = (MSG_WZ_GUILD_SELECT_ACK*)pMsg;

	g_WorldGuildManager.OnAddGuild( pRecvMsg->m_GuildInfo, pRecvMsg->m_MemberInfo, pRecvMsg->m_Count );

	// 柯扼牢 糕滚啊 乐促绰 娟扁!
	User	*pUser;

	for(BYTE i=0;i<pRecvMsg->m_Count; i++)
	{
		if( pRecvMsg->m_MemberInfo[i].m_byIsLogin != 0 )
		{
			pUser = UserManager::Instance()->FindUserByCharGuid( pRecvMsg->m_MemberInfo[i].m_CharGuid );
			if( !pUser )
			{
				MessageOut( eCRITICAL_LOG, "WZ_GUILD_SELECT_ACK Error - No Online Member[%s][CharGuid:%u]!!", pRecvMsg->m_MemberInfo[i].m_tszCharName, pRecvMsg->m_MemberInfo[i].m_CharGuid );
				continue;
			}
			pUser->SetGuildGuid( pRecvMsg->m_GuildInfo.m_GuildGuid );	// 技~泼~!!!

			// 辨靛俊 柯扼牢 糕滚肺 眠啊
			g_WorldGuildManager.OnLoginGulid( pUser, pRecvMsg->m_GuildInfo.m_GuildGuid );
		}
	}

	MessageOut( eFULL_LOG, "WZ_GUILD_SELECT_ACK(%s/%u)", pRecvMsg->m_GuildInfo.m_tszGuildName, pRecvMsg->m_GuildInfo.m_GuildGuid );
}

// 辨靛 辑滚 沥焊 汗备 角菩 - 咯扁辑 漂喊茄 累诀篮 窍瘤 臼瘤父, 捞 惑炔俊 吧赴 荤侩磊绰 捞力 辨靛 沥焊甫 掘阑 荐 绝促
VOID Handler_WZ::OnWZ_GUILD_SELECT_NAK( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
	MSG_WZ_GUILD_SELECT_NAK* pRecvMsg = (MSG_WZ_GUILD_SELECT_NAK*)pMsg;

	MessageOut( eFULL_LOG, "WZ_GUILD_SELECT_NAK[dwKey:%u]", pRecvMsg->m_dwKey );
}

VOID Handler_WZ::OnSERVERCOMMON_HEARTBEAT( GuildServerSession *pGuildServer, MSG_BASE *pMsg, WORD wSize )
{
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -