#include "stdafx.h" #include "./Handler_Guild.WorldToGuild.h" #include #include #include // GUILD #include "Services/Guild/GuildManager.h" #include "Services/Guild/Guild.h" #include "Services/Guild/GuildMember.h" // #include "QueryObjects/DBHandler.h" #include "PacketHandler/Handler_Guild.GuildToDbp.h" // // //================================================================================================== // CHANGES: f110518.2L const nsPacket::PacketHandlerInfo Handler_Guild_WorldToGuild::GetPacketHandlerNodes() { #define HANDLER_NODE_INFO(c, p, phase) { MAKEWORD(c, p), false, phase, Handler_Guild_WorldToGuild::On##p } #define HANDLER_NODE_INFO_DBR(c, p, phase) { MAKEWORD(c, p), true, phase, Handler_Guild_WorldToGuild::On##p } #define HANDLER_NODE_INFO_EOR() { 0, false, static_cast(0), NULL } static const nsPacket::PacketHandlerNode handlers_static_[] = { // HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_RESTORE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_MEMBER_INFO_REQ_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_NOTICE_SYN, PHASE_UNLIMITED), //_NA_0_20100527_ADD_CHAR_RELATION_MEMO HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_SYN, PHASE_UNLIMITED), // HANDLER_NODE_INFO_EOR() // end of records }; BOOST_STATIC_ASSERT(_countof(handlers_static_) >= 1); nsPacket::PacketHandlerInfo return_value = { handlers_static_, _countof(handlers_static_) - 1 }; // return return_value; }; //================================================================================================== Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_RESTORE_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_WZ_GUILD_RESTORE_SYN* pRecvMsg = (MSG_WZ_GUILD_RESTORE_SYN*)pMsg; //1. ±æµå°¡ Á¸ÀçÇÏ´ÂÁö üũ Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_GuildGuid ); if( !pGuild ) { //¸¸ÀÏ ±æµå ¼­¹ö¿¡ Á¤º¸°¡ ¾øÀ¸¸é, ÀÌ»óÇÑ À¯ÀúÀ̰ųª Agent¼­¹ö·Î ·Î±×ÀÎ ÇÏÁö ¾ÊÀº À¯ÀúÀÌ´Ù. MSG_WZ_GUILD_RESTORE_NAK nakMsg; nakMsg.m_byErrorCode = RC::RC_GUILD_NOT_EXIST_GUILD; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } //2. ±æµå´Â Á¸ÀçÇϴµ¥, ÇØ´ç ¸â¹ö°¡ ±æµå¸â¹öÀÎÁö üũ GuildMember* pMember = pGuild->FindMember( pRecvMsg->m_CharGuid ); if (pMember == NULL) // CHANGES: f110523.6L, fixed a missing condition check, old problem... { MSG_WZ_GUILD_RESTORE_NAK nakMsg; nakMsg.m_byErrorCode = RC::RC_GUILD_NOT_GUILD_MEMBER; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } MSG_WZ_GUILD_RESTORE_ACK akcMsg; g_GuildManager.SerializeBaseGuildInfo( pRecvMsg->m_GuildGuid, akcMsg.m_WorldGuildInfo, SERIALIZE_LOAD ); g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, akcMsg.m_BaseMemberInfo ); pServerSession->SendPacket( &akcMsg, sizeof(akcMsg) ); } Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_MEMBER_INFO_REQ_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_WZ_GUILD_MEMBER_INFO_REQ_SYN* pRecvMsg = (MSG_WZ_GUILD_MEMBER_INFO_REQ_SYN*)pMsg; //1. ±æµå°¡ Á¸ÀçÇÏ´ÂÁö üũ Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_GuildGuid ); if( !pGuild ) { SUNLOG( eCRITICAL_LOG, "[Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_MEMBER_INFO_REQ_SYN )] Guild Not Exist, GuildGuid = %u", pRecvMsg->m_GuildGuid ); return; } //2. ±æµå´Â Á¸ÀçÇϴµ¥, ÇØ´ç ¸â¹ö°¡ ±æµå¸â¹ö°¡ ¾Æ´Ï¸é.. GuildMember* pMember = pGuild->FindMember( pRecvMsg->m_CharGuid ); if( !pMember ) { SUNLOG( eCRITICAL_LOG, "[Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_MEMBER_INFO_REQ_SYN )] Not GuildMember, GuildGuid = %u, CharGuid = %u", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); return; } MSG_WZ_GUILD_MEMBER_INFO_REQ_ACK akcMsg; g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, akcMsg.m_BaseMemberInfo ); pServerSession->SendPacket( &akcMsg, sizeof(akcMsg) ); } Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_CHANGE_NOTICE_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_WZ_GUILD_CHANGE_NOTICE_SYN, pRecvMsg, pMsg); if(!g_GuildManager.CheckRight( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, eGUILD_RIGHTS_NOTICE)) { MSG_WZ_GUILD_CHANGE_NOTICE_NAK msg; msg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; msg.m_byErrorCode = RC::RC_GUILD_NOTICE_CHNAGE_NONE_RIGHT; pServerSession->SendPacket(&msg, sizeof(msg)); return; } MSG_DZ_GUILD_CHANGE_NOTICE_SYN msg; msg.m_dwKey = 0; // (WAVERIX) (090903) (CHANGES) msg.m_dwSessionIndex = 0; // (WAVERIX) (090903) (CHANGES) msg.m_eNoticeType = (eGUILD_NOTICE)0; msg.m_GuildGuid = pRecvMsg->m_GuildGuid; msg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; msg.m_byNoticeLen= pRecvMsg->m_wNoticeLen; strncpy( msg.m_tszGuildNotice, pRecvMsg->m_szGuildNotice, MAX_GUILDNOTICE_LENGTH ); msg.m_tszGuildNotice[MAX_GUILDNOTICE_LENGTH] = '\0'; Handler_Guild_GuildToDbp::OnDZ_GUILD_CHANGE_NOTICE_SYN( g_DBHandler.GetSharedSession(), &msg, msg.GetSize()); } // ±æµå¿ø ÀÎÁö üũ //_NA_0_20100527_ADD_CHAR_RELATION_MEMO Handler_Guild_WorldToGuild_IMPL( WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_SYN, pRecvMsg, pMsg); Guild* pGuild = g_GuildManager.FindGuild(pRecvMsg->m_guildGuid); if (pGuild) { GuildMember* pMember = pGuild->FindMember(pRecvMsg->m_dwToCharGuid); if (pMember) { MSG_WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_ACK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwToCharGuid = pRecvMsg->m_dwToCharGuid; pServerSession->SendPacket(&msg, sizeof(msg)); return; } } MSG_WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_NAK msg; msg.m_byErrorCode = RC::RC_FRIEND_NOTGUILDMEMBER; pServerSession->SendPacket(&msg, sizeof(msg)); }