#include "stdafx.h" #include "./Handler_Guild.GameToGuild.h" #include #include #include #include #include "Services/DominationManager.h" // GUILD #include "Services/Guild/GuildManager.h" #include "Services/Guild/Guild.h" #include "Services/Guild/GuildMember.h" #include "Services/Guild/GuildRelation.h" #include "Services/Guild/GuildSmallContentEntry.h" // #include "QueryObjects/DBHandler.h" #include "PacketHandler/Handler_Guild.GuildToDbp.h" // #include #include #ifdef _NA_003923_20120130_GUILD_RENEWAL #include "GuildInGameLog.h" #endif #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #include "GuildFacilities.h" #include "GuildFacilityInfoParser.h" #endif // _NA_007330_20140620_GUILD_SYSTEM_EXTENSION //================================================================================================== // CHANGES: f110518.2L const nsPacket::PacketHandlerInfo Handler_Guild_GameToGuild::GetPacketHandlerNodes() { #define HANDLER_NODE_INFO(c, p, phase) { MAKEWORD(c, p), false, phase, Handler_Guild_GameToGuild::On##p } #define HANDLER_NODE_INFO_DBR(c, p, phase) { MAKEWORD(c, p), true, phase, Handler_Guild_GameToGuild::On##p } #define HANDLER_NODE_INFO_EOR() { 0, false, static_cast(0), NULL } static const nsPacket::PacketHandlerNode handlers_static_[] = { // //HANDLER_NODE_INFO(AM_OPERATION, AM_OPERATION_USERCOUNT_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CREATE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_DESTROY_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_JOIN_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_WITHDRAW_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_KICKPLAYER_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_DONATE_UP_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CONVERT_UP2GP_SYN, PHASE_UNLIMITED), #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHUNTING_PVP_RESULT_CMD, PHASE_UNLIMITED), #endif HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHANGE_DUTY_SYN, PHASE_UNLIMITED), //±æµå Á÷Ã¥ ¼³Á¤ HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RIGHT_DELEGATION_LIST_SYN, PHASE_UNLIMITED), //±æµå À§ÀÓ ±ÇÇÑ ¸ñ·Ï ¿äû HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RIGHT_DELEGATION_SYN, PHASE_UNLIMITED), //±æµå ±ÇÇÑ À§ÀÓ HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHANGE_MASTER_SYN, PHASE_UNLIMITED), //±æµåÀ庯°æ HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CREATE_CORPS_SYN, PHASE_UNLIMITED), //±æµå ±º´Ü »ý¼º HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_DESTROY_CORPS_SYN, PHASE_UNLIMITED), //±æµå ±º´Ü ÇØ»ê HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_EMPTY_COMMANDER_INFO_SYN, PHASE_UNLIMITED), //±æµå ºó ±º´ÜÀå Á¤º¸ ¿äû. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHANGE_COMMANDER_SYN, PHASE_UNLIMITED), //±æµå ±º´ÜÀå º¯°æ. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHANGE_CORPS_SYN, PHASE_UNLIMITED), //±æµå ±º´Ü º¯°æ. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CREATE_REAR_CAMP_SYN, PHASE_UNLIMITED), //±æµå À°¼ºÄ·ÇÁ »ý¼º. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_DESTROY_REAR_CAMP_SYN, PHASE_UNLIMITED), //±æµå À°¼ºÄ·ÇÁ ÇØ»ê. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_INVITE_SYN, PHASE_UNLIMITED), //±æµå ÃÊ´ë. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_LOGIN_CHAR_SYN, PHASE_UNLIMITED), //±æµå ¸â¹ö ·Î±×ÀÎ. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_LOGOUT_CHAR_SYN, PHASE_UNLIMITED), //±æµå ¸â¹ö ·Î±×¾Æ¿ô. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHAR_LEVELUP_SYN, PHASE_UNLIMITED), //±æµå¿ø ·¹º§¾÷. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_TOTALINFO_REQ_SYN, PHASE_UNLIMITED), //±æµå¿ø Á¤º¸¿äû. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_GM_GUILD_POINT_SYN, PHASE_UNLIMITED), //±æµå¿ø Æ÷ÀÎÆ® º¯°æ ¿äû. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_CHANGE_CHAOSTATE_SYN, PHASE_UNLIMITED), //±æµå¿ø Ä«¿À»óÅ º¯°æ. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_ENTER_SERVER_SYN, PHASE_UNLIMITED), //±æµå¿øÀÌ °ÔÀÓ¼­¹ö°£À» À̵¿ÇÒ ¶§. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_PRE_LOGIN_CMD, PHASE_UNLIMITED), //±æµå¿øÀÌ ·Î±×ÀÎ »çÀü Áغñ. HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RELATION_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RELATION_DELETE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RELATION_BOTH_AGAINST_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_BOTH_RELATION_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RECOVERY_GUILD_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_GUILDMARK_REGISTER_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_GUILDMARK_DELETE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_WAREHOUSE_OPEN_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_WAREHOUSE_CLOSE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RELATION_INFO_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_NAME_CHANGE_SYN, PHASE_UNLIMITED), //{ __KR_001385_20090907_DOMINATION_PACKET HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_INFO_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_AUCTION_INFO_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_UPDATE_INFO_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_ACCEP_HEIM_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_INIT_ACTIONINFO_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_RETURNHIME_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_BATTING_HEIM_SYN, PHASE_UNLIMITED), //} //_NA_20100604_BETTER_DOMINATION_MANAGER HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_UPDATE_GUILDINFO_SYN, PHASE_UNLIMITED), //_NA_20100913_GUILD_WAREHOUSE_GM_COMMAND HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD, PHASE_UNLIMITED), // GM ¸í·É¿¡ ÀÇÇÑ ±æµå â°í °­Á¦ ´Ý±â //_NA_20110216_INCREASE_DOMINATION_DEFFENSEWALL_POINT HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_ADD_DEFFENSEWALL_POINT_SYN, PHASE_UNLIMITED), //_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_MEMBER_JOIN_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_MEMBER_LEAVE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_MEMBERLIST_REQ, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_MEMBERLIST_INIT_CMD, PHASE_UNLIMITED), #ifdef _NA004034_20120102_GUILD_POINT_SYSTEM HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILDPOINTSYSTEM, PHASE_UNLIMITED), #endif //_NA004034_20120102_GUILD_POINT_SYSTEM #ifdef _NA_003923_20120130_GUILD_RENEWAL HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_IN_GAME_GUILD_LOG_LIST_REQ, PHASE_UNLIMITED), #endif #ifdef _NA_004034_20120102_GUILD_INTRODUCTION HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_INTRODUCTION_SAVE_SYN, PHASE_UNLIMITED), #endif //_NA_004034_20120102_GUILD_INTRODUCTION #ifdef _NA_000000_20130429_DOMINATION_PENALTY HANDLER_NODE_INFO(GZ_GUILD, GZ_DOMINATION_PENALTY_CMD, PHASE_UNLIMITED), #endif //_NA_000000_20130429_DOMINATION_PENALTY #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_JOIN_REQUEST_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_JOIN_REQUEST_REJECT_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_RELOAD_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_FACILITY_UPGRADE_SYN, PHASE_UNLIMITED), HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_FACILITY_SELECT_SYN, PHASE_UNLIMITED), #endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION #ifdef _NA_008334_20150608_SONNENSCHEIN HANDLER_NODE_INFO(GZ_GUILD, GZ_GUILD_SONNENSCHEIN_UPDATE_SYN, PHASE_UNLIMITED), #endif //_NA_008334_20150608_SONNENSCHEIN 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; }; //================================================================================================== BOOST_STATIC_ASSERT(RC::RC_GUILD_RESULT_COUNTS <= UCHAR_MAX); //================================================================================================== Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CREATE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CREATE_SYN * pRecvMsg = (MSG_GZ_GUILD_CREATE_SYN *)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanCreateGuild(pRecvMsg->m_MasterLV); if( rt == RC::RC_GUILD_SUCCESS ) { MSG_DZ_GUILD_CREATE_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); msg.m_MasterCharGuid = pRecvMsg->m_MasterCharGuid; _tcsncpy(msg.m_tszGuildName, pRecvMsg->m_tszGuildName, _countof(msg.m_tszGuildName)); msg.m_tszGuildName[_countof(msg.m_tszGuildName) - 1] = _T('\0'); _tcsncpy(msg.m_szMasterCharName, pRecvMsg->m_tszMasterCharName, _countof(msg.m_szMasterCharName)); msg.m_szMasterCharName[_countof(msg.m_szMasterCharName) - 1] = _T('\0'); msg.m_byClass = pRecvMsg->m_byMasterClass; msg.m_Level = pRecvMsg->m_MasterLV; Handler_Guild_GuildToDbp::OnDZ_GUILD_CREATE_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } else { MSG_GZ_GUILD_CREATE_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = rt; pServerSession->SendPacket( &msg, sizeof(msg) ); } } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_GUILD_DESTROY_SYN* receive_msg = static_cast(pMsg); #ifdef _USING_GUILD_DESTROY_LOGGING SUNLOG(eCRITICAL_LOG, _T("|±æµåÇØ»ê½Åû|Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_SYN)|MSG_GZ_GUILD_DESTROY_SYN ¹ÞÀ½|GuildGuid:%d, MasterCharGuid:%d|"), receive_msg->m_GuildGuid, receive_msg->m_MasterCharGuid); #endif // _USING_GUILD_DESTROY_LOGGING const RC::eGUILD_RESULT result = g_GuildManager.CanDestroyGuild(receive_msg->m_GuildGuid, receive_msg->m_MasterCharGuid); if (result == RC::RC_GUILD_SUCCESS) { MSG_DZ_GUILD_DESTROY_SYN msg; msg.m_dwKey = receive_msg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); msg.m_MasterCharGuid = receive_msg->m_MasterCharGuid; msg.m_GuildGuid = receive_msg->m_GuildGuid; msg.m_DestroyWaitTime = receive_msg->m_DestroyWaitTime; #ifdef _USING_GUILD_DESTROY_LOGGING SUNLOG(eCRITICAL_LOG, _T("|±æµåÇØ»ê½Åû|Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_SYN)|MSG_DZ_GUILD_DESTROY_SYN º¸³¿|Key:%u, SessionIndex:%u, MasterCharGuid:%u, GuildGuid:%d, DestroyWaitTime:%u|"), msg.m_dwKey, msg.m_dwSessionIndex, msg.m_MasterCharGuid, msg.m_GuildGuid, msg.m_DestroyWaitTime); #endif // _USING_GUILD_DESTROY_LOGGING Handler_Guild_GuildToDbp::OnDZ_GUILD_DESTROY_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } else { MSG_GZ_GUILD_DESTROY_NAK nak_msg; nak_msg.m_dwKey = receive_msg->m_dwKey; nak_msg.m_byErrorCode = result; #ifdef _USING_GUILD_DESTROY_LOGGING SUNLOG(eCRITICAL_LOG, _T("|±æµåÇØ»ê½Åû|Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_SYN)|MSG_GZ_GUILD_DESTROY_NAK º¸³¿|Key:%u, ErrorCode:%d|"), nak_msg.m_dwKey, nak_msg.m_byErrorCode); #endif // _USING_GUILD_DESTROY_LOGGING pServerSession->SendPacket(&nak_msg, sizeof(nak_msg)); } } //Å»Åð. Handler_Guild_GameToGuild_IMPL(GZ_GUILD_WITHDRAW_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_WITHDRAW_SYN * pRecvMsg = (MSG_GZ_GUILD_WITHDRAW_SYN *)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanLeaveGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_WITHDRAW_NAK msgNAK; msgNAK.m_dwKey = pRecvMsg->m_dwKey; msgNAK.m_byErrorCode = rt; pServerSession->SendPacket( &msgNAK, sizeof(msgNAK) ); return; } MSG_DZ_GUILD_WITHDRAW_SYN msgSYN; msgSYN.m_dwKey = pRecvMsg->m_dwKey; msgSYN.m_dwSessionIndex = pServerSession->GetSessionIndex(); msgSYN.m_GuildGuid = pRecvMsg->m_GuildGuid; msgSYN.m_CharGuid = pRecvMsg->m_CharGuid; msgSYN.m_byPenaltyType = 1; // ÀÚ±âÀڽŠŻÅð Handler_Guild_GuildToDbp::OnDZ_GUILD_WITHDRAW_SYN( g_DBHandler.GetSharedSession(), &msgSYN, sizeof(msgSYN)); //{ // MSG_GZ_GUILD_WITHDRAW_NAK msgNAK; // msgNAK.m_dwKey = pRecvMsg->m_dwKey; // msgNAK.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &msgNAK, sizeof(msgNAK) ); // return; //} } // ±æµå¿ø °­Åð Handler_Guild_GameToGuild_IMPL(GZ_GUILD_KICKPLAYER_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_KICKPLAYER_SYN* pRecvMsg = (MSG_GZ_GUILD_KICKPLAYER_SYN*)pMsg; if( _tcslen( pRecvMsg->m_ptszCharName ) > MAX_CHARNAME_LENGTH ) { MSG_GZ_GUILD_KICKPLAYER_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; nakMsg.m_dwErrorCode = RC::RC_GUILD_FAILED; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); DISPMSG( "KICKPLAYER Error - KickCharName Overflow[GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); return; } RC::eGUILD_RESULT rt = g_GuildManager.CanKickMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_ptszCharName ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_KICKPLAYER_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; _tcsncpy( nakMsg.m_ptszCharName, pRecvMsg->m_ptszCharName, MAX_CHARNAME_LENGTH ); nakMsg.m_ptszCharName[MAX_CHARNAME_LENGTH] = '\0'; nakMsg.m_dwErrorCode = rt; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } GuildMember* pOperMember = g_GuildManager.FindGuildMember(pRecvMsg->m_GuildGuid,pRecvMsg->m_OperCharGuid); if( !pOperMember ) return; GuildMember* pTargetMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_ptszCharName ); if( !pTargetMember ) return; //¿Ö ±×³É ¸®ÅÏÇϳĸé... À§¿¡¼­ °ËÁõµÇ¾ú±â ¶§¹®ÀÌ´Ù. ¹Ýµå½Ã Á¸ÀçÇÑ´Ù. MSG_DZ_GUILD_KICKPLAYER_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_GuildGuid = pRecvMsg->m_GuildGuid; msg.m_OperCharGuid = pOperMember->GetCharGuid(); msg.m_TargetCharGuid = pTargetMember->GetCharGuid(); msg.m_byCorpsNum = pOperMember->GetCorpsNumber(); msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); Handler_Guild_GuildToDbp::OnDZ_GUILD_KICKPLAYER_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //{ // MSG_GZ_GUILD_KICKPLAYER_NAK nakMsg; // nakMsg.m_dwKey = pRecvMsg->m_dwKey; // _tcsncpy( nakMsg.m_ptszCharName, pRecvMsg->m_ptszCharName, MAX_CHARNAME_LENGTH ); // nakMsg.m_ptszCharName[MAX_CHARNAME_LENGTH] = '\0'; // nakMsg.m_dwErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} } //////////////////// // ±æµå Æ÷ÀÎÆ® °ü·Ã // UP Àû¸³ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DONATE_UP_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_DONATE_UP_SYN* pRecvMsg = (MSG_GZ_GUILD_DONATE_UP_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanDonateUP( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_DONATE_UP_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; nakMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; nakMsg.m_byErrorCode = rt; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } MSG_DZ_GUILD_DONATE_UP_SYN sendMsg; sendMsg.m_dwKey = pRecvMsg->m_dwKey; sendMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); // °ÔÀÓ¼­¹öÀÇ ¼¼¼ÇÀ» ÀúÀåÇÑ´Ù. sendMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; sendMsg.m_CharGuid = pRecvMsg->m_CharGuid; sendMsg.m_GuildUP = pRecvMsg->m_DonateUP; Handler_Guild_GuildToDbp::OnDZ_GUILD_DONATE_UP_SYN( g_DBHandler.GetSharedSession(), &sendMsg, sizeof(sendMsg)); //{ // SUNLOG( eCRITICAL_LOG, "DZ_GUILD_DONATE_UP Error - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // MSG_DZ_GUILD_DONATE_UP_NAK nakMsg; // nakMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; // nakMsg.m_byErrorCode = RC::RC_GUILD_FAILED; // pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} } // UP->GP º¯È¯ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CONVERT_UP2GP_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CONVERT_UP2GP_SYN* pRecvMsg = (MSG_GZ_GUILD_CONVERT_UP2GP_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanConvertUP2GP( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_ConvertGP ); if( rt != RC::RC_GUILD_SUCCESS ) { // ±âº»ÀûÀÎ ±ÇÇÑ °Ë»ç´Â GameServer¿¡¼­ Çß´Ù°í ÆÇ´ÜÇϹǷΠµû·Î °Ë»çÇÏÁö ¾Ê°í ¹Ù·Î DBProxy·Î º¸³½´Ù MSG_GZ_GUILD_CONVERT_UP2GP_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; nakMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; nakMsg.m_byErrorCode = rt; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } MSG_DZ_GUILD_CONVERT_UP2GP_SYN sendMsg; sendMsg.m_dwKey = pRecvMsg->m_dwKey; sendMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); sendMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; sendMsg.m_ConverGP = pRecvMsg->m_ConvertGP; Handler_Guild_GuildToDbp::OnDZ_GUILD_CONVERT_UP2GP_SYN( g_DBHandler.GetSharedSession(), &sendMsg, sizeof(sendMsg)); //{ // MSG_GZ_GUILD_CONVERT_UP2GP_NAK nakMsg; // nakMsg.m_dwKey = pRecvMsg->m_dwKey; // nakMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; // nakMsg.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} } // ±æµå¿ø Ä«¿À»óÅ º¯°æ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_CHAOSTATE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHANGE_CHAOSTATE_SYN* pRecvMsg = (MSG_GZ_GUILD_CHANGE_CHAOSTATE_SYN*)pMsg; RC::eGUILD_RESULT rc = g_GuildManager.ChangeChaoState( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, pRecvMsg->m_byChaoState ); if( rc != RC::RC_GUILD_SUCCESS ) { SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_CHAOSTATE_SYN)] Fail, GuildGuid = %u, CharGuid = %d, ChaoState = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, pRecvMsg->m_byChaoState ); return; } MSG_GZ_GUILD_CHANGE_CHAOSTATE_BRD brdMsg; brdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, brdMsg.m_szCharName, MAX_CHARNAME_LENGTH ); brdMsg.m_byChaoState = pRecvMsg->m_byChaoState; g_DBProxyServer.SendToSessionType(GAME_SERVER, &brdMsg, sizeof(brdMsg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_ENTER_SERVER_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_ENTER_SERVER_SYN* pRecvMsg = (MSG_GZ_GUILD_ENTER_SERVER_SYN*)pMsg; //Invite³ª JoinÀ̳ª Á¶°ÇÀº ¶È°°´Ù. RC::eGUILD_RESULT rt = g_GuildManager.CanMoveServer( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_ENTER_SERVER_NAK nakMsg; nakMsg.m_byErrorCode = rt; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } // ÇØ´ç °ÔÀÓ¼­¹ö¿¡ ±æµå Á¤º¸¸¦ º¸³½´Ù. MSG_GZ_GUILD_ENTER_SERVER_ACK ackMsg; ackMsg.m_dwKey = pRecvMsg->m_dwKey; g_GuildManager.SerializeGameGuildInfo( pRecvMsg->m_GuildGuid, ackMsg.m_GameGuildInfo, SERIALIZE_LOAD ); g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, ackMsg.m_BaseMemberInfo ); pServerSession->SendPacket( &ackMsg, sizeof(ackMsg) ); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_PRE_LOGIN_CMD) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_PRE_LOGIN_CMD* pRecvMsg = (MSG_GZ_GUILD_PRE_LOGIN_CMD*)pMsg; Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_GuildGuid ); if( !pGuild ) return; GuildMember* pMember = pGuild->FindMember( pRecvMsg->m_CharGuid ); if( !pMember ) return; if( pMember->IsLogIn() == TRUE ) { SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_PRE_LOGIN_CMD)] Already Loin Char And Init GuildGuid = %u, CharGuid = %u", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); pMember->SetLogin( FALSE ); } } #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHUNTING_PVP_RESULT_CMD) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHUNTING_PVP_RESULT_CMD * pRecvMsg = (MSG_GZ_GUILD_CHUNTING_PVP_RESULT_CMD *)pMsg; MSG_DZ_GUILD_CHUNTING_PVP_RESULT_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); RC::eGUILD_RESULT rt = g_GuildManager.ChuntingPVPResult( pRecvMsg->m_WinGuildGuid, pRecvMsg->m_LoseGuildGuid, pRecvMsg->m_DisGuildGuid ); if( rt == RC::RC_GUILD_SUCCESS ) { Guild *pWinGuild = g_GuildManager.FindGuild(pRecvMsg->m_WinGuildGuid); if( pWinGuild ) { msg.m_GuildGuid = pRecvMsg->m_WinGuildGuid; msg.m_PVPInfo = *pWinGuild->GetChuntingPVPInfo(); Handler_Guild_GuildToDbp::OnDZ_GUILD_CHUNTING_PVP_RESULT_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } if( pRecvMsg->m_DisGuildGuid ) msg.m_GuildGuid = pRecvMsg->m_DisGuildGuid; else msg.m_GuildGuid = pRecvMsg->m_LoseGuildGuid; Guild *pLoseGuild = g_GuildManager.FindGuild(msg.m_GuildGuid); if( pLoseGuild ) { msg.m_PVPInfo = *pLoseGuild->GetChuntingPVPInfo(); Handler_Guild_GuildToDbp::OnDZ_GUILD_CHUNTING_PVP_RESULT_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } } } #endif // ±æµå Á÷Ã¥ º¯°æ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_DUTY_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHANGE_DUTY_SYN *pRecvMsg = (MSG_GZ_GUILD_CHANGE_DUTY_SYN *)pMsg; GuildMember* pTargerMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pTargerMember ) { //Ŭ¶óÀ̾ðÆ®ÇÑÅ× ±×·± Ÿ°Ù¸â¹ö ¾ø´Ù°í NAKº¸³½´Ù. MSG_GZ_GUILD_CHANGE_DUTY_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = RC::RC_GUILD_NOT_GUILD_MEMBER; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } // 1. ¿©±â¼­ ±æµåÀÇ ±ÇÇÑÀ» üũÇÑ´Ù. RC::eGUILD_RESULT rt = g_GuildManager.CanChangeDuty( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pTargerMember->GetCharGuid(), (eGUILD_DUTY)pRecvMsg->m_byDuty ); //¸ðµç °ÍÀº DB¿¡¼­ ¼º°ø ACK¸¦ ¹Þ°í ÁøÇàÇÑ´Ù. if(rt != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_CHANGE_DUTY_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); SUNLOG( eFULL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_DUTY_SYN)] Fail, [GUILDGUID:%d][OPERGUID:%d][Target:%s][ChangeDuty:%d] rt = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, pRecvMsg->m_byDuty, rt ); return; } //DB·Î Àü¼Û MSG_DZ_GUILD_CHANGE_DUTY_SYN sndMSG; sndMSG.m_dwKey = pRecvMsg->m_dwKey; sndMSG.m_dwSessionIndex = pServerSession->GetSessionIndex(); sndMSG.m_GuildGuid = pRecvMsg->m_GuildGuid; sndMSG.m_OperGuid = pRecvMsg->m_OperCharGuid; sndMSG.m_TargetGuid = pTargerMember->GetCharGuid(); sndMSG.m_eNewDuty = (eGUILD_DUTY)pRecvMsg->m_byDuty; sndMSG.m_eOldDuty = pTargerMember->GetDuty(); Handler_Guild_GuildToDbp::OnDZ_GUILD_CHANGE_DUTY_SYN( g_DBHandler.GetSharedSession(), &sndMSG, sizeof(sndMSG)); //{ // MSG_GZ_GUILD_CHANGE_DUTY_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_DUTY_SYN)] Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } //±æµå À§ÀÓ ±ÇÇÑ ¸ñ·Ï ¿äû Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RIGHT_DELEGATION_LIST_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_RIGHT_DELEGATION_LIST_SYN* pRecvMsg = (MSG_GZ_GUILD_RIGHT_DELEGATION_LIST_SYN*)pMsg; MSG_GZ_GUILD_RIGHT_DELEGATION_LIST_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; //1. ±æµå°¡ ÀÖ´ÂÁö üũ Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_GuildGuid ); if( !pGuild ) { nakMSG.m_byErrorCode = RC::RC_GUILD_NOT_EXIST_GUILD; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } //2. ¸®½ºÆ® ¿äûÀÚ°¡ ¸®½ºÆ®¸¦ ¿äÃ»ÇØµµ µÇ´Â »ç¶÷ÀÎÁö üũÇÑ´Ù. if( !g_GuildManager.CheckRight( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, eGUILD_RIGHTS_VIEW_RIGHT ) ) { nakMSG.m_byErrorCode = RC::RC_GUILD_HAVE_NOT_RIGHT; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } //3. ±ÇÇÑÀ§ÀÓ´ë»óÀÌ À§ÀÓ´ë»óÀÌ µÇ´ÂÁö üũ. RC::eGUILD_RESULT rc = g_GuildManager.IsDelegateChar( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( rc != RC::RC_GUILD_SUCCESS ) { nakMSG.m_byErrorCode = rc; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } //4. À§ÀÓÇÒ¼ö ÀÖ´Â ±ÇÇÑ ¸®½ºÆ®¸¦ ºÒ·¯¿Â´Ù. ºÒ·¯¿Ã¶§´Â ÇöÀç ÇØ´ç À¯ÀúÀÇ À§ÀÓµÈ ±ÇÇѱîÁö °°ÀÌ °¡Á®¿Â´Ù. MSG_GZ_GUILD_RIGHT_DELEGATION_LIST_ACK Ack; Ack.m_dwKey = pRecvMsg->m_dwKey; Ack.m_GuildGuid = pRecvMsg->m_GuildGuid; g_GuildManager.GetDelegateRight( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName, Ack.m_DelegateRight ); strncpy( Ack.m_szTargetCharName, pRecvMsg->m_szTargetCharName, MAX_CHARNAME_LENGTH ); pServerSession->SendPacket( &Ack, sizeof(Ack) ); } //±æµå ±ÇÇÑ À§ÀÓ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RIGHT_DELEGATION_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_RIGHT_DELEGATION_SYN* pRecvMsg = (MSG_GZ_GUILD_RIGHT_DELEGATION_SYN*)pMsg; RC::eGUILD_RESULT rc = g_GuildManager.CanRightDelegate( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, pRecvMsg->m_DelegateRight ); if( rc != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_RIGHT_DELEGATION_NAK nakMSG; nakMSG.m_byErrorCode = RC::RC_GUILD_INVALID_DELEGATE_RIGHT; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } GuildMember* pTargetMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pTargetMember ) return; //ÀÖÀ»¼ö ¾ø´Ù.... //5. DB¿¡ º¸³½´Ù. MSG_DZ_GUILD_RIGHT_DELEGATION_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_TargetGuid = pTargetMember->GetCharGuid(); CopyMemory( synMsg.m_DelegateRight, pRecvMsg->m_DelegateRight, sizeof(synMsg.m_DelegateRight) ); Handler_Guild_GuildToDbp::OnDZ_GUILD_RIGHT_DELEGATION_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_RIGHT_DELEGATION_NAK nakMSG; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // return; //} } //±æµåÀå º¯°æ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_MASTER_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHANGE_MASTER_SYN* pRecvMsg = (MSG_GZ_GUILD_CHANGE_MASTER_SYN*)pMsg; RC::eGUILD_RESULT rc = g_GuildManager.CanChangeMaster( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName ); if( rc != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_CHANGE_MASTER_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rc; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } GuildMember* pTargetMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pTargetMember ) return; //5. DB¿¡ º¸³½´Ù. MSG_DZ_GUILD_CHANGE_MASTER_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; synMsg.m_TargetCharGuid = pTargetMember->GetCharGuid(); Handler_Guild_GuildToDbp::OnDZ_GUILD_CHANGE_MASTER_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_CHANGE_MASTER_NAK nakMSG; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // return; //} } //±æµå ±º´Ü »ý¼º Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CREATE_CORPS_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CREATE_CORPS_SYN *pRecvMsg = (MSG_GZ_GUILD_CREATE_CORPS_SYN *)pMsg; BYTE byCorpsNum = 0; RC::eGUILD_RESULT rt = g_GuildManager.CanCreateCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_CREATE_CORPS_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } //À§¿¡¼­ ¸â¹ö¿¡ ´ëÇÑ °ËÁõÀ» ³¡³»°í ¿Â´Ù. GuildMember* pMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pMember ) return; MSG_DZ_GUILD_CREATE_CORPS_SYN synMSG; synMSG.m_dwKey = pRecvMsg->m_dwKey; synMSG.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMSG.m_GuildGuid = pRecvMsg->m_GuildGuid; synMSG.m_TargetCharGuid = pMember->GetCharGuid(); synMSG.m_byCorpsNum = byCorpsNum; Handler_Guild_GuildToDbp::OnDZ_GUILD_CREATE_CORPS_SYN( g_DBHandler.GetSharedSession(), &synMSG, sizeof(synMSG)); //{ // MSG_GZ_GUILD_CREATE_CORPS_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_CREATE_CORPS_FAILED; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "DZ_GUILD_CREATE_CORPS_SYN ERROR - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_CORPS_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_DESTROY_CORPS_SYN* pRecvMsg = (MSG_GZ_GUILD_DESTROY_CORPS_SYN *)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanDestoryCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_DESTROY_CORPS_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); SUNLOG( eFULL_LOG, "[GZ_GUILD_DESTROY_CORPS_SYN] ERROR, GuildGuid = %d, OperGuid = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_byCorpsNum ); return; } MSG_DZ_GUILD_DESTROY_CORPS_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_byCorpsNum = pRecvMsg->m_byCorpsNum; synMsg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_DESTROY_CORPS_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_DESTROY_CORPS_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[MSG_GZ_GUILD_DESTROY_CORPS_SYN] ERROR - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_EMPTY_COMMANDER_INFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_EMPTY_COMMANDER_INFO_SYN* pRecvMsg = (MSG_GZ_GUILD_EMPTY_COMMANDER_INFO_SYN*)pMsg; //ºñ¾îÀÖ´Â ±º´ÜÁ¤º¸¸¦ º¸°Ú´Ù´Â°ÍÀº °á±¹ Á÷Ã¥º¯°æÀ» Çϰڴٴ ¾ê±â´Ù. µû¶ó¼­ Á÷Ã¥º¯°æ ±ÇÇÑÀ» º»´Ù. BOOL bRight = g_GuildManager.CheckRight( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, eGUILD_RIGHTS_CHANGE_DUTY ); if( !bRight ) { MSG_GZ_GUILD_EMPTY_COMMANDER_INFO_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = RC::RC_GUILD_HAVE_NOT_RIGHT; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } //±ÇÇÑÀÌ ÀÖÀ¸¸é ÇöÀç ºñ¾î ÀÖ´Â ±º´Ü Á¤º¸¸¦ °¡Áö°í ¿Â´Ù. MSG_GZ_GUILD_EMPTY_COMMANDER_INFO_ACK AckMsg; AckMsg.m_dwKey = pRecvMsg->m_dwKey; AckMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; AckMsg.m_byEmptyCommanderCount = g_GuildManager.GetEmptyCommanderInfo( pRecvMsg->m_GuildGuid, AckMsg.m_byCorpsNum ); pServerSession->SendPacket( &AckMsg, AckMsg.GetSize() ); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_COMMANDER_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHANGE_COMMANDER_SYN* pRecvMsg = (MSG_GZ_GUILD_CHANGE_COMMANDER_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanChangeCommander( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, pRecvMsg->m_byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_CHANGE_COMMANDER_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } GuildMember* pMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pMember ) //À§¿¡¼­ °Ë»çÇßÀ¸¹Ç·Î ¾øÀ»¼ö ¾ø´Ù. return; MSG_DZ_GUILD_CHANGE_COMMANDER_SYN synMSG; synMSG.m_dwKey = pRecvMsg->m_dwKey; synMSG.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMSG.m_GuildGuid = pRecvMsg->m_GuildGuid; synMSG.m_TargetCharGuid = pMember->GetCharGuid(); synMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum; Handler_Guild_GuildToDbp::OnDZ_GUILD_CHANGE_COMMANDER_SYN( g_DBHandler.GetSharedSession(), &synMSG, sizeof(synMSG)); //{ // MSG_GZ_GUILD_CHANGE_COMMANDER_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_COMMANDER_SYN)] - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_CORPS_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHANGE_CORPS_SYN* pRecvMsg = (MSG_GZ_GUILD_CHANGE_CORPS_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanChangeCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, pRecvMsg->m_byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_CHANGE_CORPS_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } GuildMember* pTargetMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pTargetMember ) return; MSG_DZ_GUILD_CHANGE_CORPS_SYN synMSG; synMSG.m_dwKey = pRecvMsg->m_dwKey; synMSG.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMSG.m_GuildGuid = pRecvMsg->m_GuildGuid; synMSG.m_bySourceCorpsNum = pTargetMember->GetCorpsNumber(); synMSG.m_byTargetCorpsNum = pRecvMsg->m_byCorpsNum; synMSG.m_CharGuid = pTargetMember->GetCharGuid(); Handler_Guild_GuildToDbp::OnDZ_GUILD_CHANGE_CORPS_SYN( g_DBHandler.GetSharedSession(), &synMSG, sizeof(synMSG)); //{ // MSG_GZ_GUILD_CHANGE_COMMANDER_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHANGE_COMMANDER_SYN)] - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CREATE_REAR_CAMP_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CREATE_REAR_CAMP_SYN* pRecvMsg = (MSG_GZ_GUILD_CREATE_REAR_CAMP_SYN*)pMsg; BYTE byCorpsNum = 0; RC::eGUILD_RESULT rt = g_GuildManager.CanCreateRearCamp( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_szTargetCharName, byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_CREATE_REAR_CAMP_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); return; } GuildMember* pTargetMember = g_GuildManager.FindGuildMemberByName( pRecvMsg->m_GuildGuid, pRecvMsg->m_szTargetCharName ); if( !pTargetMember ) return; MSG_DZ_GUILD_CREATE_REAR_CAMP_SYN synMSG; synMSG.m_dwKey = pRecvMsg->m_dwKey; synMSG.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMSG.m_GuildGuid = pRecvMsg->m_GuildGuid; synMSG.m_TargetCharGuid = pTargetMember->GetCharGuid(); synMSG.m_byCorpsNum = byCorpsNum; Handler_Guild_GuildToDbp::OnDZ_GUILD_CREATE_REAR_CAMP_SYN( g_DBHandler.GetSharedSession(), &synMSG, sizeof(synMSG)); //{ // MSG_GZ_GUILD_CREATE_REAR_CAMP_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CREATE_REAR_CAMP_SYN)] - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_REAR_CAMP_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_DESTROY_REAR_CAMP_SYN* pRecvMsg = (MSG_GZ_GUILD_DESTROY_REAR_CAMP_SYN *)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanDestroyRearCamp( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_byCorpsNum ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_DESTROY_REAR_CAMP_NAK nakMSG; nakMSG.m_dwKey = pRecvMsg->m_dwKey; nakMSG.m_byErrorCode = rt; pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); SUNLOG( eFULL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_REAR_CAMP_SYN)] ERROR, GuildGuid = %d, OperGuid = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_byCorpsNum ); return; } MSG_DZ_GUILD_DESTROY_REAR_CAMP_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_byCorpsNum = pRecvMsg->m_byCorpsNum; synMsg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_DESTROY_REAR_CAMP_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_DESTROY_REAR_CAMP_NAK nakMSG; // nakMSG.m_dwKey = pRecvMsg->m_dwKey; // nakMSG.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket(&nakMSG, sizeof(nakMSG)); // SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_DESTROY_REAR_CAMP_SYN)] ERROR - Can't send Packet![GuildGuid:%u]\n", pRecvMsg->m_GuildGuid ); // return; //} } //±æµå ÃÊ´ë. Handler_Guild_GameToGuild_IMPL(GZ_GUILD_INVITE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_INVITE_SYN* recv_msg = (MSG_GZ_GUILD_INVITE_SYN*)pMsg; RC::eGUILD_RESULT result_code = g_GuildManager.CanInviteGuild(recv_msg->m_GuildGuid, recv_msg->m_OperCharGuid, recv_msg->m_TargetCharGuid, recv_msg->m_Level); if (result_code != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_INVITE_NAK nak_msg; nak_msg.m_dwKey = recv_msg->m_dwKey; nak_msg.m_byErrorCode = result_code; pServerSession->SendPacket(&nak_msg, sizeof(nak_msg)); SUNLOG( eFULL_LOG, __FUNCTION__" : Error : guild guid : %d, request : %u, target : %u, result : %d", recv_msg->m_GuildGuid, recv_msg->m_OperCharGuid, recv_msg->m_TargetCharGuid, result_code ); return; } MSG_GZ_GUILD_INVITE_ACK ack_msg; ack_msg.m_dwKey = recv_msg->m_dwKey; ack_msg.m_TargetUserKey = recv_msg->m_TargetUserKey; pServerSession->SendPacket(&ack_msg, sizeof(ack_msg)); } //±æµå ¸â¹ö ·Î±×ÀÎ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_LOGIN_CHAR_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_LOGIN_CHAR_SYN* pRecvMsg = (MSG_GZ_GUILD_LOGIN_CHAR_SYN*)pMsg; //Invite³ª JoinÀ̳ª Á¶°ÇÀº ¶È°°´Ù. RC::eGUILD_RESULT rt = g_GuildManager.CanLogin( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt == RC::RC_GUILD_NOT_EXIST_GUILD ) { // ÇöÀç ±æµå¼­¹ö¿¡ ±æµå°¡ Á¸Àç ÇÏÁö ¾ÊÀ¸¸é.. DB¿¡ ±æµå Á¤º¸¸¦ ¿äûÇÑ´Ù. MSG_DZ_GUILD_SELECT_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = 0; // (WAVERIX) (090903) (CHANGES) ...-.-;... synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_bySelectType = 1; //1Àº ·Î±×Àνà SELECT¸¦ ¶æÇÑ´Ù. synMsg.m_LoginCharGuid = pRecvMsg->m_CharGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_SELECT_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_LOGIN_CHAR_NAK nakMsg; // nakMsg.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} // CHANGES: f110627.2L, fixed the invalid acknowledgement answer // that this status is pended. return; } else if( rt == RC::RC_GUILD_SUCCESS ) { // ±æµå Á¤º¸°¡ Á¸ÀçÇϰí, ¸â¹ö°¡ ±æµå ¸â¹öÀÌ´Ù. ¸®Åϰª üũ ÇÏÁö ¾Ê°í ¹Ù·Î ·Î±×ÀÎ ½ÃŲ´Ù. g_GuildManager.Login( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); MSG_GZ_GUILD_LOGIN_CHAR_BRD brdMsg; brdMsg.m_dwKey = pRecvMsg->m_dwKey; g_GuildManager.SerializeGuildInfo( pRecvMsg->m_GuildGuid, brdMsg.m_GuildInfo, SERIALIZE_LOAD ); g_GuildManager.SerializeCorpsInfo( pRecvMsg->m_GuildGuid, brdMsg.m_CorpsTotalInfo, SERIALIZE_LOAD ); g_GuildManager.GetGuildMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, brdMsg.m_MemberInfo ); g_DBProxyServer.SendToSessionType(GAME_SERVER, &brdMsg, sizeof(brdMsg)); MSG_WZ_GUILD_LOGIN_CHAR_CMD cmdMsg; g_GuildManager.GetWorldGuildInfo( pRecvMsg->m_GuildGuid, cmdMsg.m_WorldGuildInfo ); g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, cmdMsg.m_BaseMemberInfo ); g_DBProxyServer.SendToWorldServer(&cmdMsg, sizeof(cmdMsg)); return; } else if( rt == RC::RC_GUILD_ALREADY_LOGIN_MEMBER ) return; //³ª¸ÓÁö ÄÉÀ̽º´Â ½ÇÆÐ ÄÉÀ̽º´Ù. MSG_GZ_GUILD_LOGIN_CHAR_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; // (WAVERIX) (090903) (BUG-FIX) ...-.-+... nakMsg.m_byErrorCode = rt; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); } //±æµå ¸â¹ö ·Î±×¾Æ¿ô Handler_Guild_GameToGuild_IMPL(GZ_GUILD_LOGOUT_CHAR_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_LOGOUT_CHAR_SYN* pRecvMsg = (MSG_GZ_GUILD_LOGOUT_CHAR_SYN*)pMsg; //1. ±æµå¼­¹öÀÇ ÇØ´ç À¯ÀúÀÇ Á¤º¸¸¦ ·Î±×¾Æ¿ôÀ¸·Î º¯°æÇÑ´Ù. RC::eGUILD_RESULT rc = g_GuildManager.Logout( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); // ±æµå¼­¹ö°¡ ij¸¯ÅÍ Á¢¼ÓÀÌÈÄ ¶ß°Ô µÇ¸é, ±æµå¼­¹ö¿¡´Â ÇöÀç ij¸¯ÅÍ¿¡ ´ëÇÑ ±æµå Á¤º¸°¡ ¾ø´Ù.( °°Àº ±æµå¿øÀÌ Á¢¼ÓÇÏÁö ¾Ê´Â ÀÌ»ó... ) // µû¶ó¼­ °ÔÀÓ¼­¹ö¿¡¼­´Â ±æµåGUID°¡ À־ ·Î±×¾Æ¿ô ÆÐŶÀ» º¸³»°í, ±æµå ¼­¹ö¿¡¼­´Â ÇØ´ç ±æµå°¡ ¾ø´Ù°í ÇÒ °ÍÀÌ´Ù. if( rc == RC::RC_GUILD_NOT_EXIST_GUILD ) return; if( rc != RC::RC_GUILD_SUCCESS ) { SUNLOG( eCRITICAL_LOG, "Handler_Guild_GameToGuild_IMPL(GZ_GUILD_LOGOUT_CHAR_SYN) Fail, GuildGuid = %u, CharGuid = %u, rc = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, rc ); return; } //2. °ÔÀÓ¼­¹ö·Î º¸³½´Ù. MSG_GZ_GUILD_LOGOUT_CHAR_BRD brdMsg; brdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; brdMsg.m_CharGuid = pRecvMsg->m_CharGuid; g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, brdMsg.m_szCharName, MAX_CHARNAME_LENGTH ); g_DBProxyServer.SendToSessionType(GAME_SERVER, &brdMsg, sizeof(brdMsg)); //3. ¿ùµå¼­¹ö·Î º¸³½´Ù. MSG_WZ_GUILD_LOGOUT_CHAR_CMD cmdMsg; cmdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; cmdMsg.m_CharGuid = pRecvMsg->m_CharGuid; g_DBProxyServer.SendToWorldServer(&cmdMsg, sizeof(cmdMsg)); } //±æµå ¸â¹ö ·¹º§¾÷ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHAR_LEVELUP_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_CHAR_LEVELUP_SYN* pRecvMsg = (MSG_GZ_GUILD_CHAR_LEVELUP_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.LevelUpMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, pRecvMsg->m_Level ); #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION #ifdef _NA_008807_20160512_GUILD_SYSTEM_EXTENNSION_BUG_FIX // ¾Æ·¡ÀÇ ÇÔ¼ö¸¦ ÄÝÇÏ´Â Àǹ̰¡ ¾ø¾î »«´Ù... #else g_GuildManager.UpdateGuildJoinRequestCharacter( pRecvMsg->m_CharGuid, pRecvMsg->m_Level ); #endif //(_NA_008807_20160512_GUILD_SYSTEM_EXTENNSION_BUG_FIX) #endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION // °á°ú°¡ ·¹º§¾÷¿¡ ÀÇÇÑ ±æµå Å»ÅðÀ̸é.. if( rt == RC::RC_GUILD_KICK_GUILD_BY_LEVELUP ) { RC::eGUILD_RESULT rt = g_GuildManager.CanLeaveGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_WITHDRAW_NAK msgNAK; msgNAK.m_dwKey = pRecvMsg->m_dwKey; msgNAK.m_byErrorCode = rt; pServerSession->SendPacket( &msgNAK, sizeof(msgNAK) ); return; } MSG_DZ_GUILD_WITHDRAW_SYN msgSYN; msgSYN.m_dwKey = pRecvMsg->m_dwKey; msgSYN.m_dwSessionIndex = pServerSession->GetSessionIndex(); msgSYN.m_GuildGuid = pRecvMsg->m_GuildGuid; msgSYN.m_CharGuid = pRecvMsg->m_CharGuid; msgSYN.m_byPenaltyType = 3; // ·¹º§¾÷¿¡ ÀÇÇÑ Å»Åð. Handler_Guild_GuildToDbp::OnDZ_GUILD_WITHDRAW_SYN( g_DBHandler.GetSharedSession(), &msgSYN, sizeof(msgSYN)); //{ // MSG_GZ_GUILD_WITHDRAW_NAK msgNAK; // msgNAK.m_dwKey = pRecvMsg->m_dwKey; // msgNAK.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &msgNAK, sizeof(msgNAK) ); //} return; } if( rt != RC::RC_GUILD_SUCCESS ) { SUNLOG( eCRITICAL_LOG, "[Handler_Guild_GameToGuild_IMPL(GZ_GUILD_CHAR_LEVELUP_SYN)] Fail, GuildGuid = %u, CharGuid = %u, Level = %u, rt = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, pRecvMsg->m_Level, rt ); return; } MSG_GZ_GUILD_CHAR_LEVELUP_BRD brdMsg; brdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, brdMsg.m_szCharName, MAX_CHARNAME_LENGTH ); brdMsg.m_Level = pRecvMsg->m_Level; pServerSession->SendPacket( &brdMsg, sizeof(brdMsg) ); } Handler_Guild_GameToGuild_IMPL( GZ_GUILD_TOTALINFO_REQ_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_TOTALINFO_REQ_SYN* pRecvMsg = (MSG_GZ_GUILD_TOTALINFO_REQ_SYN*)pMsg; RC::eGUILD_RESULT rt = g_GuildManager.CanRequestTotalInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid ); if( rt != RC::RC_GUILD_SUCCESS ) { MSG_GZ_GUILD_TOTALINFO_REQ_NAK msgNAK; msgNAK.m_dwKey = pRecvMsg->m_dwKey; msgNAK.m_byErrorCode = rt; pServerSession->SendPacket( &msgNAK, sizeof(msgNAK) ); return; } MSG_GZ_GUILD_TOTALINFO_REQ_ACK ackMsg; ackMsg.m_dwKey = pRecvMsg->m_dwKey; g_GuildManager.SerializeGuildInfo( pRecvMsg->m_GuildGuid, ackMsg.m_GuildInfo, SERIALIZE_LOAD ); g_GuildManager.SerializeCorpsInfo( pRecvMsg->m_GuildGuid, ackMsg.m_CropsTotalInfo, SERIALIZE_LOAD ); g_GuildManager.SerializeMemberTotalInfo( pRecvMsg->m_GuildGuid, ackMsg.m_MemberTotalInfo, SERIALIZE_LOAD ); #ifdef _NA004034_20120102_GUILD_POINT_SYSTEM g_GuildManager.GetGuildInfoExtra(pRecvMsg->m_GuildGuid, ackMsg.guild_info_extra_); #endif //_NA004034_20120102_GUILD_POINT_SYSTEM #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION g_GuildManager.GetGuildJoinRequestTotalInfo(pRecvMsg->m_GuildGuid, ackMsg.m_GuildJoinRequestTotalInfo); #endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION pServerSession->SendPacket( &ackMsg, ackMsg.GetSize() ); } //GM¸í·É¾î ±æµåÆ÷ÀÎÆ® ¼¼ÆÃ Handler_Guild_GameToGuild_IMPL(GZ_GUILD_GM_GUILD_POINT_SYN ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_GM_GUILD_POINT_SYN* pRecvMsg = (MSG_GZ_GUILD_GM_GUILD_POINT_SYN*)pMsg; Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_GuildGuid ); if( !pGuild ) { //¸¸ÀÏ ±æµå ¼­¹ö¿¡ Á¤º¸°¡ ¾øÀ¸¸é, ÀÌ»óÇÑ À¯ÀúÀ̰ųª Agent¼­¹ö·Î ·Î±×ÀÎ ÇÏÁö ¾ÊÀº À¯ÀúÀÌ´Ù. MSG_GZ_GUILD_GM_GUILD_POINT_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; nakMsg.m_byErrorCode = RC::RC_GUILD_NOT_EXIST_GUILD; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } GuildMember* pMember = pGuild->FindMember( pRecvMsg->m_CharGuid ); if( !pMember ) { MSG_GZ_GUILD_GM_GUILD_POINT_NAK nakMsg; nakMsg.m_dwKey = pRecvMsg->m_dwKey; nakMsg.m_byErrorCode = RC::RC_GUILD_NOT_GUILD_MEMBER; pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); return; } MSG_DZ_GUILD_GM_GUILD_POINT_SYN synMsg; synMsg.m_dwKey = pRecvMsg->m_dwKey; synMsg.m_dwSessionIndex = pServerSession->GetSessionIndex(); synMsg.m_GuildGuid = pRecvMsg->m_GuildGuid; synMsg.m_UP = pRecvMsg->m_UP; synMsg.m_GP = pRecvMsg->m_GP; Handler_Guild_GuildToDbp::OnDZ_GUILD_GM_GUILD_POINT_SYN( g_DBHandler.GetSharedSession(), &synMsg, sizeof(synMsg)); //{ // MSG_GZ_GUILD_GM_GUILD_POINT_NAK nakMsg; // nakMsg.m_dwKey = pRecvMsg->m_dwKey; // nakMsg.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RELATION_INFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_RELATION_INFO_SYN* pRecvMsg = (MSG_GZ_GUILD_RELATION_INFO_SYN*)pMsg; MSG_DZ_GUILD_RELATION_INFO_SYN msg; msg.m_dwKey = pMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); msg.m_GuildGuid = pRecvMsg->m_GuildGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_RELATION_INFO_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //{ // //MSG_GZ_GUILD_ADD_INFO_NAK nakMsg; // //nakMsg.m_dwKey = pRecvMsg->m_dwKey; // //strncpy( nakMsg.m_szTargetCharName, pRecvMsg->m_tszCharName, MAX_CHARNAME_LENGTH ); // //nakMsg.m_byErrorCode = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; // //pServerSession->SendPacket( &nakMsg, sizeof(nakMsg) ); // return; //} //MSG_GZ_GUILD_RELATION_INFO_BRD SendToGameServer; //SendToGameServer.m_dwKey = pRecvMsg->m_dwKey; //SendToGameServer.m_AddInfo.m_GuildGuid = pRecvMsg->m_GuildGuid; //LoadRelationInfo(&SendToGameServer.m_AddInfo); //SendToGameServer.m_byRelCnt = SendToGameServer.m_AddInfo.m_byRelationGuildCnt; //pServerSession->SendPacket( &SendToGameServer, SendToGameServer.GetSize()); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_JOIN_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_JOIN_SYN * recv_msg = (MSG_GZ_GUILD_JOIN_SYN *)pMsg; eGUILD_DUTY Duty = eGUILD_DUTY_NONE; BYTE corps_number = 0; RC::eGUILD_RESULT result_code = g_GuildManager.CanJoinGuild(recv_msg->m_GuildGuid, recv_msg->m_OperCharGuid, recv_msg->m_TargetCharGuid, recv_msg->m_Level, Duty, corps_number); if (result_code != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_JOIN_NAK nak_msg; nak_msg.m_dwKey = recv_msg->m_dwKey; strncpy(nak_msg.m_szTargetCharName, recv_msg->m_tszCharName, _countof(nak_msg.m_szTargetCharName)); nak_msg.m_szTargetCharName[_countof(nak_msg.m_szTargetCharName) - 1] = '\0'; strncpy( nak_msg.m_szTargetCharName, recv_msg->m_tszCharName, MAX_CHARNAME_LENGTH ); nak_msg.m_byErrorCode = result_code; pServerSession->SendPacket( &nak_msg, sizeof(nak_msg) ); return; } MSG_DZ_GUILD_JOIN_SYN syn_msg; syn_msg.m_dwKey = recv_msg->m_dwKey; syn_msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); syn_msg.m_GuildGuid = recv_msg->m_GuildGuid; syn_msg.m_OperCharGuid = recv_msg->m_OperCharGuid; syn_msg.m_TargetCharGuid = recv_msg->m_TargetCharGuid; strncpy(syn_msg.m_tszCharName, recv_msg->m_tszCharName, _countof(syn_msg.m_tszCharName)); syn_msg.m_tszCharName[_countof(syn_msg.m_tszCharName) - 1] = '\0'; syn_msg.m_byClass = recv_msg->m_byClass; syn_msg.m_Level = recv_msg->m_Level; syn_msg.m_Duty = Duty; syn_msg.m_byCorpsNum = corps_number; Handler_Guild_GuildToDbp::OnDZ_GUILD_JOIN_SYN(g_DBHandler.GetSharedSession(), &syn_msg, sizeof(syn_msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_BOTH_RELATION_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_GZ_GUILD_BOTH_RELATION_SYN, pRecvMsg, pMsg); CHARGUID RightMemberIndex = 0; GUILDGUID response_guild_index = 0; RC::eGUILD_RESULT result = GuildSmallContentEntry::RelationSystem::CanDoRelationChange( pRecvMsg->m_GuildGuid, pRecvMsg->m_RequestPlayerIndex); if(result == RC::RC_GUILD_SUCCESS) { response_guild_index = g_GuildManager.GetGuildGuidByGuildName(pRecvMsg->m_tszRelationGuildName); if(0 != response_guild_index) { // (lst1024)(090402) ±æµå »èÁ¦ ´ë±â »óÅÂ¸é µ¿¸Í ½Åû ÇÒ ¼ö ¾ø´Ù. Guild* pGuild = g_GuildManager.FindGuild(response_guild_index); if( !pGuild ) result = RC::RC_GUILD_NOT_EXIST_GUILD; else { if (pRecvMsg->m_eRelationType == eGUILD_RELATION_ALLIENCE && pGuild->CheckGuildDeleteState() == eGUILD_DELCHK_DESTROY_WAIT) { result = RC::RC_GUILD_DELCHK_DESTROY_WAIT; } else { // ¿äû ¹ÞÀº ±æµå¿¡¼­ ±ÇÇÑÀ» °¡Áø ±æµå ¸â¹ö ã±â RightMemberIndex = g_GuildManager.GetGuildMasterByGuildName(pRecvMsg->m_tszRelationGuildName); if(0 == RightMemberIndex) //±æµå ¸¶½ºÅͰ¡ ¾øÀ» °æ¿ì { result = RC::RC_GUILD_CURRENT_NONE_MASTER; // ¼­ºê ¸¶½ºÅÍ ±ÇÇÑ Á¶»ç RightMemberIndex = g_GuildManager.FindRightMember(response_guild_index, eGUILD_DUTY_SUBMASTER); if(0 != RightMemberIndex) { result = GuildSmallContentEntry::RelationSystem::CanDoRelationChange( response_guild_index, RightMemberIndex); if(result !=RC::RC_GUILD_SUCCESS) { // ±º»ç ±ÇÇÑ Á¶»ç RightMemberIndex = g_GuildManager.FindRightMember(response_guild_index, eGUILD_DUTY_STRATEGIST); if(0 != RightMemberIndex) { result = GuildSmallContentEntry::RelationSystem::CanDoRelationChange( response_guild_index, RightMemberIndex); } } } } } } } else { result = RC::RC_GUILD_CURRENT_NONE_MASTER; } } //. ±ÇÇÑÀ» °¡Áø ¸â¹ö°¡ ÀÖÀ¸¸é~ if(RC::RC_GUILD_SUCCESS == result) { result = GuildSmallContentEntry::RelationSystem::CanDoRelationShip( pRecvMsg->m_GuildGuid, response_guild_index, pRecvMsg->m_eRelationType ); if(RC::RC_GUILD_SUCCESS == result) { MSG_GZ_GUILD_BOTH_RELATION_ACK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_eRelationType = pRecvMsg->m_eRelationType; msg.m_RequestGuildGuid = pRecvMsg->m_GuildGuid; msg.m_ResponseGuildGuid = response_guild_index; msg.m_ResponsePlayerIndex = RightMemberIndex; msg.m_RequestPlayerIndex = pRecvMsg->m_RequestPlayerIndex; pServerSession->SendPacket(&msg, sizeof(msg)); return; } } MSG_GZ_GUILD_RELATION_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); return; } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RELATION_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_GZ_GUILD_RELATION_SYN, pRecvMsg, pMsg); //¿äûÀÚÀÇ ±ÇÇÑ Á¶»ç. // (lst1024)(090408) ±æµå ±ÇÇÑ Ã¼Å©½Ã Äɸ¯ÅÍGUID »ç¿ë if( !g_GuildManager.CheckRight( pRecvMsg->m_RequestGuildGuid, pRecvMsg->m_RequestCharGuid, eGUILD_RIGHTS_RELATION ) ) { MSG_GZ_GUILD_RELATION_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = RC::RC_GUILD_HAVE_NOT_RIGHT;; pServerSession->SendPacket(&msg, sizeof(msg)); return; } Guild* pResponseGuild = NULL; if(pRecvMsg->m_ResponseGuildGuid) { pResponseGuild = g_GuildManager.FindGuild(pRecvMsg->m_ResponseGuildGuid); } else { pResponseGuild = g_GuildManager.FindGuildName(pRecvMsg->m_tszRelationGuildName); } RC::eGUILD_RESULT result = RC::RC_GUILD_SUCCESS; if(pResponseGuild) { GUILDGUID request_guild_index = pRecvMsg->m_RequestGuildGuid; GUILDGUID response_guild_index = pResponseGuild->GetGuildGuid(); result = GuildSmallContentEntry::RelationSystem::CanDoRelationShip( request_guild_index, response_guild_index, pRecvMsg->m_eRelationType); if(RC::RC_GUILD_SUCCESS == result) { MSG_DZ_GUILD_RELATION_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; /* AnswerPlayer À¯Àú Ű */ msg.m_eRelationType = pRecvMsg->m_eRelationType; msg.m_RequestGuildGuid = pRecvMsg->m_RequestGuildGuid; msg.m_RequestUserKey = pRecvMsg->m_RequestUserKey; /* RequestPlayer À¯Àú Ű */ msg.m_ResponseGuildGuid = pRecvMsg->m_ResponseGuildGuid; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); util::GUILDNAMECOPY(msg.m_ResponseGuildName, pRecvMsg->m_tszRelationGuildName); Handler_Guild_GuildToDbp::OnDZ_GUILD_RELATION_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); return; //result = RC::RC_GUILD_DISCONNECTED_GUILD_SERVER; } } if (!pResponseGuild && pRecvMsg->m_eRelationType != eGUILD_RELATION_ALLIENCE && pRecvMsg->m_eRelationType != eGUILD_RELATION_CANCEL_BOTH_HOSTILITY) { MSG_DZ_GUILD_RELATION_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; /* AnswerPlayer À¯Àú Ű */ msg.m_eRelationType = pRecvMsg->m_eRelationType; msg.m_RequestGuildGuid = pRecvMsg->m_RequestGuildGuid; msg.m_RequestUserKey = pRecvMsg->m_RequestUserKey; /* RequestPlayer À¯Àú Ű */ msg.m_ResponseGuildGuid = pRecvMsg->m_ResponseGuildGuid; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); util::GUILDNAMECOPY(msg.m_ResponseGuildName, pRecvMsg->m_tszRelationGuildName); Handler_Guild_GuildToDbp::OnDZ_GUILD_RELATION_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); return; //result = RC::RC_GUILD_DISCONNECTED_GUILD_SERVER; } MSG_GZ_GUILD_RELATION_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RELATION_BOTH_AGAINST_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_GZ_GUILD_RELATION_BOTH_AGAINST_SYN, pRecvMsg, pMsg); GUILDGUID requestGuildGuid = pRecvMsg->m_GuildGuid; GUILDGUID responseGuildGuid = pRecvMsg->m_RelGuildGuid; CHARGUID requestPlayerGuid = pRecvMsg->m_MasterCharGuid; RC::eGUILD_RESULT result = GuildSmallContentEntry::RelationSystem::CanDoRelationChange( requestGuildGuid, requestPlayerGuid); if(result != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_RELATION_BOTH_AGAINST_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); return; } result = GuildSmallContentEntry::RelationSystem::CanDoRelationBothHostility( requestGuildGuid, requestPlayerGuid); MSG_DZ_GUILD_RELATION_BOTH_AGAINST_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_GuildGuid = requestGuildGuid; msg.m_RelGuildGuid = responseGuildGuid; msg.m_MasterCharGuid = requestPlayerGuid; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); ZeroMemory(msg.m_tszRelGuildName, sizeof(msg.m_tszRelGuildName)); Handler_Guild_GuildToDbp::OnDZ_GUILD_RELATION_BOTH_AGAINST_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //{ // MSG_GZ_GUILD_RELATION_BOTH_AGAINST_NAK msg; // msg.m_dwKey = pRecvMsg->m_dwKey; // msg.m_byErrorCode = RC::RC_GUILD_DISCONNECTED_GUILD_SERVER; // pServerSession->SendPacket(&msg, sizeof(msg)); // return; //} } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RELATION_DELETE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_GZ_GUILD_RELATION_DELETE_SYN, pRecvMsg, pMsg); eGUILD_RELATION eType = pRecvMsg->m_eType; GUILDGUID requestGuildGuid = pRecvMsg->m_GuildGuid; GUILDGUID responseGuildGuid = pRecvMsg->m_RelGuildGuid; CHARGUID requestPlayerGuid = pRecvMsg->m_RequestPlayerIndex; RC::eGUILD_RESULT result = GuildSmallContentEntry::RelationSystem::CanDoRelationChange( requestGuildGuid, requestPlayerGuid); if(result != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_RELATION_DELETE_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); return; } result = GuildSmallContentEntry::RelationSystem::CanDoRelationDelete( requestGuildGuid, responseGuildGuid, pRecvMsg->m_eType); if(RC::RC_GUILD_SUCCESS == result) { MSG_DZ_GUILD_RELATION_DELETE_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_eType = eType; msg.m_GuildGuid = requestGuildGuid; msg.m_RelGuildGuid = responseGuildGuid; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); Handler_Guild_GuildToDbp::OnDZ_GUILD_RELATION_DELETE_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); return; //result = RC::RC_GUILD_FAILED_BY_NOT_CONNECT_SERVER; } MSG_GZ_GUILD_RELATION_DELETE_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RECOVERY_GUILD_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_RECOVERY_GUILD_SYN* pRecvMsg = static_cast(pMsg); RC::eGUILD_RESULT result = GuildSmallContentEntry::GuildPenalty::CanRecoveryGuild(pRecvMsg->m_GuildGuid); if(RC::RC_GUILD_SUCCESS == result) { MSG_DZ_GUILD_RECOVERY_GUILD_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); // (WAVERIX) (090903) (CHANGES) ...-.-;... msg.m_CharGuid = pRecvMsg->m_CharGuid; msg.m_GuildGuid = pRecvMsg->m_GuildGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_RECOVERY_GUILD_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); return; //result = RC::RC_GUILD_RECOVERY_FAILED; } MSG_GZ_GUILD_RECOVERY_GUILD_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_CharGuid = pRecvMsg->m_CharGuid; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_GUILDMARK_REGISTER_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_GUILDMARK_REGISTER_SYN* pRecvMsg = static_cast(pMsg); GuildSmallContentEntry::GuildMark::GuildMarkInfo tempInfo; tempInfo.guild_Index = pRecvMsg->m_GuildIndex; tempInfo.pattern_index = pRecvMsg->m_PatternIndex; tempInfo.background_index = pRecvMsg->m_BackGroundIndex; tempInfo.request_player_index = pRecvMsg->m_RequestPlayerIndex; RC::eGUILD_RESULT result = GuildSmallContentEntry::GuildMark::CanModify(tempInfo); if(RC::RC_GUILD_SUCCESS != result) { DWORD userKey = pRecvMsg->m_dwKey; GuildSmallContentEntry::GuildMark::ResultCastToGameServer( static_cast(pServerSession), result, userKey); return; } MSG_DZ_GUILD_GUILDMARK_REGISTER_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); // (WAVERIX) (090903) (BUG-FIX) ...-.-;... msg.m_GuildIndex = tempInfo.guild_Index; msg.m_PatternIndex = tempInfo.pattern_index; msg.m_BackGroundIndex = tempInfo.background_index; msg.m_RequestPlayerIndex = tempInfo.request_player_index; msg.m_SlotIdx = pRecvMsg->m_SlotIdx; msg.m_SlotPos = pRecvMsg->m_SlotPos; Handler_Guild_GuildToDbp::OnDZ_GUILD_GUILDMARK_REGISTER_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //MessageOut(eDEV_LOG, "RegisterCastToDBProxy Error"); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_GUILDMARK_DELETE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_GUILDMARK_DELETE_SYN* pRecvMsg = static_cast(pMsg); GuildSmallContentEntry::GuildMark::GuildMarkInfo tempInfo; tempInfo.guild_Index = pRecvMsg->m_GuildIndex; tempInfo.pattern_index = pRecvMsg->m_PatternIndex; tempInfo.background_index = pRecvMsg->m_BackGroundIndex; tempInfo.request_player_index = pRecvMsg->m_RequestPlayerIndex; RC::eGUILD_RESULT result = GuildSmallContentEntry::GuildMark::CanModify(tempInfo); if(RC::RC_GUILD_SUCCESS != result) { GuildSmallContentEntry::GuildMark::ResultCastToGameServer( static_cast(pServerSession), result, pRecvMsg->m_dwKey); return; } MSG_DZ_GUILD_GUILDMARK_DELETE_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); // (WAVERIX) (090903) (BUG-FIX) ...-.-;... msg.m_GuildIndex = tempInfo.guild_Index; msg.m_PatternIndex = tempInfo.pattern_index; msg.m_BackGroundIndex = tempInfo.background_index; msg.m_RequestPlayerIndex = tempInfo.request_player_index; Handler_Guild_GuildToDbp::OnDZ_GUILD_GUILDMARK_DELETE_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //MessageOut(eDEV_LOG, "RegisterCastToDBProxy Error"); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_WAREHOUSE_OPEN_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); PACKET_PTR_CONVERT(MSG_GZ_GUILD_WAREHOUSE_OPEN_SYN,pRecvMsg, pMsg); if (!g_GuildManager.CheckRight(pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, eGUILD_RIGHTS_WAREHOUSE_SAVE)) { MSG_GZ_GUILD_WAREHOUSE_OPEN_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_bErrorCode = RC::RC_GUILD_WAREHOUSE_UNABLE_CURR_GRADE; pServerSession->SendPacket(&msg, sizeof(msg)); return; } MSG_DZ_GUILD_WAREHOUSE_OPEN_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); // (WAVERIX) (090903) (CHANGES) ...-.-;... msg.m_GuildGuid = pRecvMsg->m_GuildGuid; msg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; Handler_Guild_GuildToDbp::OnDZ_GUILD_WAREHOUSE_OPEN_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //SUNLOG(eDEV_LOG, "RegisterCastToDBProxy Error(%d)", pRecvMsg->m_GuildGuid); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_WAREHOUSE_CLOSE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_WAREHOUSE_CLOSE_SYN* pRecvMsg = static_cast(pMsg); // (WAVERIX) (090903) (NOTE) ¾Æ¹«·¡µµ ±æµå´Â ±×³É º¸±â¿¡µµ ¹®Á¦°¡ ¸¹À» °Í °°´Ù. // µµÀúÈ÷ Á¤»óÀûÀÎ ÄÚµå¶ó »ý°¢µÇÁö ¾Ê´Â´Ù. } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_NAME_CHANGE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); MSG_GZ_GUILD_NAME_CHANGE_SYN* pRecvMsg = (MSG_GZ_GUILD_NAME_CHANGE_SYN*)pMsg; RC::eGUILD_RESULT result = g_GuildManager.CanChangeGuildName( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid ); if(RC::RC_GUILD_SUCCESS != result) { MSG_GZ_GUILD_NAME_CHANGE_NAK msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_TargetPos = pRecvMsg->m_TargetPos; msg.m_byErrorCode = result; pServerSession->SendPacket(&msg, sizeof(msg)); return; } //.// MSG_DZ_GUILD_NAME_CHANGE_SYN msg; msg.m_dwKey = pRecvMsg->m_dwKey; msg.m_TargetPos = pRecvMsg->m_TargetPos; msg.m_GuildGuid = pRecvMsg->m_GuildGuid; msg.m_OperCharGuid = pRecvMsg->m_OperCharGuid; msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); memcpy( msg.m_tszGuildName, pRecvMsg->m_tszGuildName, MAX_GUILDNAME_LENGTH*sizeof(TCHAR) ); msg.m_tszGuildName[MAX_GUILDNAME_LENGTH] = '\0'; Handler_Guild_GuildToDbp::OnDZ_GUILD_NAME_CHANGE_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); //{ // MSG_GZ_GUILD_NAME_CHANGE_NAK msg; // msg.m_dwKey = pRecvMsg->m_dwKey; // msg.m_TargetPos = pRecvMsg->m_TargetPos; // msg.m_byErrorCode = RC::RC_GUILD_DISCONNECTED_DBP_SERVER; // pServerSession->SendPacket(&msg, sizeof(msg)); // SUNLOG(eDEV_LOG, "RegisterCastToDBProxy Error(%d)", pRecvMsg->m_GuildGuid); //} } #ifdef _NA_003923_20120130_GUILD_RENEWAL Handler_Guild_GameToGuild_IMPL(GZ_GUILD_IN_GAME_GUILD_LOG_LIST_REQ) { const MSG_GZ_GUILD_IN_GAME_GUILD_LOG_LIST_REQ* recv_msg = static_cast(pMsg); Guild* guild = g_GuildManager.FindGuild(recv_msg->request_guild_guid_); if (guild == NULL) { SUNLOG( eCRITICAL_LOG, __FUNCTION__" : Not found guild : guild guid = %d", recv_msg->request_guild_guid_ ); return; } guild->GetGuildInGameLog()->SendInGameLogToPlayer(recv_msg->request_char_guid_); } #endif//_NA_003923_20120130_GUILD_RENEWAL #ifdef _NA_004034_20120102_GUILD_INTRODUCTION Handler_Guild_GameToGuild_IMPL(GZ_GUILD_INTRODUCTION_SAVE_SYN) { const MSG_GZ_GUILD_INTRODUCTION_SAVE_SYN* packet = \ static_cast(pMsg); Guild* guild = g_GuildManager.FindGuild(packet->guild_guid); if(!guild) return; GuildMember* master = guild->FindMaster(); if(!master || (master->GetCharGuid() != packet->char_guid)) { MSG_GZ_GUILD_INTRODUCTION_SAVE_ACK msg; msg.m_dwKey = packet->m_dwKey; msg.result_ = RC::RC_GUILD_FAILED; memset(msg.introduction_strings_, 0, sizeof(msg.introduction_strings_)); pServerSession->SendPacket(&msg, sizeof(msg)); return; } if (guild) { guild->SetGuildIntroduction(packet->guild_introductions_.introduction_strings_); } ;{ const CHAR* introduction = guild->GetGuildIntroduction(); #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION MSG_GZ_GUILD_INTRODUCTION_SAVE_ACK msg; msg.guild_guid = packet->guild_guid; msg.m_dwKey = packet->m_dwKey; msg.result_ = RC::RC_GUILD_SUCCESS; memset(msg.introduction_strings_, 0, sizeof(msg.introduction_strings_)); strncpy(msg.introduction_strings_, introduction, MAX_GUILD_INTRODUCTION_LENGTH); g_DBProxyServer.SendToSessionType(GAME_SERVER, &msg, sizeof(msg)); #else //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION MSG_GZ_GUILD_INTRODUCTION_SAVE_ACK msg; msg.m_dwKey = packet->m_dwKey; msg.result_ = RC::RC_GUILD_SUCCESS; memset(msg.introduction_strings_, 0, sizeof(msg.introduction_strings_)); strncpy(msg.introduction_strings_, introduction, MAX_GUILD_INTRODUCTION_LENGTH); pServerSession->SendPacket(&msg, sizeof(msg)); #endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION }; MSG_DZ_GUILD_INTRODUCTION_SAVE_SYN dz_msg; dz_msg.init(); dz_msg.char_guid = packet->char_guid; dz_msg.guild_guid = packet->guild_guid; memcpy(&dz_msg.guild_introductions_, &packet->guild_introductions_, \ sizeof(packet->guild_introductions_)); g_DBProxyServer.SendToDBPServer(&dz_msg, sizeof(dz_msg)); } #endif //_NA_004034_20120102_GUILD_INTRODUCTION #ifdef _NA_007330_20140620_GUILD_SYSTEM_EXTENSION Handler_Guild_GameToGuild_IMPL(GZ_GUILD_JOIN_REQUEST_SYN) { const MSG_GZ_GUILD_JOIN_REQUEST_SYN* packet = \ static_cast(pMsg); GUILDGUID guild_guid = packet->request_info.m_guild_guid; CHARGUID char_guid = packet->request_info.m_char_guid; Guild* guild = g_GuildManager.FindGuild(guild_guid); if(guild == NULL) { MSG_GZ_GUILD_JOIN_REQUEST_ACK msg; msg.request_info.m_char_guid = char_guid; msg.request_info.m_guild_guid = guild_guid; msg.result_ = RC::RC_GUILD_JOIN_REQUEST_INVALID_GUILD; pServerSession->SendPacket(&msg, sizeof(msg)); return; } //ij¸¯ÅÍÀÇ ÇØ´ç±æµå °¡ÀÔ¿äû »óŸ¦ °¡Á®¿Â´Ù RC::eGUILD_RESULT result = g_GuildManager.CanGuildJoinRequest(char_guid, guild_guid); if (result != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_JOIN_REQUEST_ACK msg; msg.request_info.m_char_guid = char_guid; msg.request_info.m_guild_guid = guild_guid; msg.result_ = result; pServerSession->SendPacket(&msg, sizeof(msg)); return; } //±æµå °¡ÀÔ ¿äû ·Î±×¸¦ ³²±ä´Ù GUILDLOG->LogGuildJoinRequest(guild, char_guid, packet->request_info.m_char_name); MSG_DZ_GUILD_JOIN_REQUEST_INSERT_SYN msg; msg.request_info = packet->request_info; Handler_Guild_GuildToDbp::OnDZ_GUILD_JOIN_REQUEST_INSERT_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_JOIN_REQUEST_REJECT_SYN) { const MSG_GZ_GUILD_JOIN_REQUEST_REJECT_SYN* packet = \ static_cast(pMsg); GUILDGUID guild_guid = packet->guild_guid; CHARGUID target_guid = packet->target_guid; Guild* guild = g_GuildManager.FindGuild(guild_guid); if(guild == NULL) { MSG_GZ_GUILD_JOIN_REQUEST_REJECT_ACK msg; msg.Init(); msg.m_dwKey = packet->char_guid; msg.result = RC::RC_GUILD_JOIN_REQUEST_INVALID_GUILD; pServerSession->SendPacket(&msg, sizeof(msg)); return; } if (packet->reject_type == eGUILD_JOIN_REJECT_TYPE_NORMAL) { if (g_GuildManager.CheckRight(packet->guild_guid, packet->char_guid, eGUILD_RIGHTS_JOIN ) == false) { MSG_GZ_GUILD_JOIN_REQUEST_REJECT_ACK msg; msg.Init(); msg.m_dwKey = packet->char_guid; util::GUILDNAMECOPY(msg.guild_name, guild->GetGuildName()); msg.result = RC::RC_GUILD_DONT_HAVE_RIGHTS_STATE; pServerSession->SendPacket(&msg, sizeof(msg)); return; } } //ij¸¯ÅÍÀÇ ÇØ´ç±æµå °¡ÀÔ¿äû »óŸ¦ °¡Á®¿Â´Ù RC::eGUILD_RESULT result = g_GuildManager.CanGuildJoinRequest(target_guid, guild_guid); if (result != RC::RC_GUILD_JOIN_REQUEST_ALREADY_EXIST) { MSG_GZ_GUILD_JOIN_REQUEST_REJECT_ACK msg; msg.Init(); msg.m_dwKey = packet->char_guid; util::GUILDNAMECOPY(msg.guild_name, guild->GetGuildName()); msg.result = RC::RC_GUILD_DONT_HAVE_RIGHTS_STATE; pServerSession->SendPacket(&msg, sizeof(msg)); return; } MSG_DZ_GUILD_JOIN_REQUEST_DELETE_SYN msg; msg.guild_guid = packet->guild_guid; msg.char_guid = packet->char_guid; msg.target_guid = packet->target_guid; msg.reject_type = packet->reject_type; Handler_Guild_GuildToDbp::OnDZ_GUILD_JOIN_REQUEST_DELETE_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_RELOAD_SYN) { const MSG_GZ_GUILD_RELOAD_SYN* packet = \ static_cast(pMsg); //±æµå¿¡ °¡ÀÔµÈ Ä³¸¯ÅÍÀÎÁö È®ÀÎ GUILDGUID guild_guid = g_GuildManager.FindCharGuildGuid(packet->char_guid); if (guild_guid != 0) { MSG_GZ_GUILD_RELOAD_ACK msg; msg.guild_guid = guild_guid; msg.m_dwKey = packet->m_dwKey; g_DBProxyServer.SendToSessionType(GAME_SERVER, &msg, sizeof(msg)); } } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_FACILITY_UPGRADE_SYN) { const MSG_GZ_GUILD_FACILITY_UPGRADE_SYN* packet = \ static_cast(pMsg); FLEVEL add_level = 1; const RC::eGUILD_RESULT result = g_GuildManager.CanUpdateGuildFacility(packet->facility_code, add_level, packet->guild_guid); if (result != RC::RC_GUILD_SUCCESS) { MSG_GZ_GUILD_FACILITY_UPGRADE_ACK msg; msg.char_guid = packet->char_guid; msg.facility_code = packet->facility_code; msg.m_dwKey = packet->m_dwKey; msg.result = result; g_DBProxyServer.SendToSessionType(GAME_SERVER, &msg, sizeof(msg)); return; } // ±ÇÇÑüũ . if (!g_GuildManager.CheckRight(packet->guild_guid, packet->char_guid, eGUILD_RIGHTS_GUILD_EQUIPMENT )) { MSG_GZ_GUILD_FACILITY_UPGRADE_ACK msg; msg.facility_code = packet->facility_code; msg.char_guid = packet->char_guid; msg.m_dwKey = packet->m_dwKey; msg.result = RC::RC_GUILD_HAVE_NOT_RIGHT; g_DBProxyServer.SendToSessionType(GAME_SERVER, &msg, sizeof(msg)); return; } MSG_DZ_GUILD_FACILITY_UPDATE_SYN syn_msg; syn_msg.char_guid = packet->char_guid; syn_msg.guild_guid = packet->guild_guid; syn_msg.facility_code = packet->facility_code; syn_msg.add_level = add_level; const GUILD_FACILITY_INFO* info = g_GuildManager.GetGuildFacility(packet->facility_code, packet->guild_guid); if (info == NULL) { syn_msg.current_level = 0; } else { syn_msg.current_level = info->level; } Handler_Guild_GuildToDbp::OnDZ_GUILD_FACILITY_UPDATE_SYN( g_DBHandler.GetSharedSession(), &syn_msg, sizeof(syn_msg)); } Handler_Guild_GameToGuild_IMPL(GZ_GUILD_FACILITY_SELECT_SYN) { const MSG_GZ_GUILD_FACILITY_SELECT_SYN* packet = \ static_cast(pMsg); MSG_DZ_GUILD_FACILITY_SELECT_SYN msg; msg.guild_guid = packet->guild_guid; Handler_Guild_GuildToDbp::OnDZ_GUILD_FACILITY_SELECT_SYN( g_DBHandler.GetSharedSession(), &msg, sizeof(msg)); } #endif //_NA_007330_20140620_GUILD_SYSTEM_EXTENSION //Áö¿ª Á¡·ÉÀü ±âº» Á¤º¸ ¼ÂÆÃ °ü·Ã ÀÛ¾÷ Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_INFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_INFO_SYN* recv_msg = static_cast(pMsg); //±âº» Á¤º¸ ·Îµå°¡ ¼º°øÇÑ »óÅÂÀÌ¸é °ÔÀÓ ¼­¹ö¿¡ ÀÀ´äÇØ ÁØ´Ù if (DominationManager* domination_manager = DominationManager::Instance()) { if (domination_manager->IsCompleteLoading() == false) { return; }; domination_manager->SendAreaInfo( static_cast(pServerSession), recv_msg->m_MapCode); WAVERIX_WRAPPER((WAVERIX_LC_CALL2("waverix_log_trace_domination", _T("|["__FUNCTION__"]|{mapcode}="), recv_msg->m_MapCode))); #ifdef _NA_007128_20140326_MONDSCHIEN_DOMINATION domination_manager->SendDominationContinentLordInfo(recv_msg->m_MapCode); #endif //_NA_007128_20140326_MONDSCHIEN_DOMINATION }; } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_AUCTION_INFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_AUCTION_INFO_SYN* pRecvMsg = static_cast(pMsg); //°æ¸Å Á¤º¸ ·Îµå°¡ ¼º°øÇÑ »óÅÂÀÌ¸é °ÔÀÓ ¼­¹ö¿¡ ÀÀ´äÇØ ÁØ´Ù if (DominationManager* domination_manager = DominationManager::Instance()) { if (domination_manager->IsCompleteLoading() == false) { return; }; domination_manager->SendAuctions( static_cast(pServerSession), pRecvMsg->m_MapCode); WAVERIX_WRAPPER((WAVERIX_LC_CALL2("waverix_log_trace_domination", _T("|["__FUNCTION__"]|{mapcode}="), pRecvMsg->m_MapCode))); }; } //DB·Î ±âº» Á¤º¸ Update¿äûÀ» ÇÑ´Ù. Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_UPDATE_INFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_UPDATE_INFO_SYN* pRecvMsg = static_cast(pMsg); MSG_DZ_DOMINATION_UPDATE_INFO_SYN sendMsg; sendMsg.m_eSetType = pRecvMsg->m_eSetType; sendMsg.m_DominationInfo = pRecvMsg->m_DominationInfo; switch(pRecvMsg->m_eSetType) { case DOMINATION_GM_OFFENCE_GUILD_SET: case DOMINATION_GM_DEFENCE_GUILD_SET: { DOMINATION_BASIC_GUILD_INFO* guild_info = NULL; if (pRecvMsg->m_eSetType == DOMINATION_GM_OFFENCE_GUILD_SET) guild_info = &sendMsg.m_DominationInfo.m_disGuildInfo; else guild_info = &sendMsg.m_DominationInfo.m_inGuildInfo; Guild* pGuild = g_GuildManager.FindGuildName(guild_info->m_tszGuildName); if (!pGuild) return; guild_info->m_GuildGuid = pGuild->GetGuildGuid(); pGuild->AcquireGuildMark(guild_info->m_BackGroundIndex, guild_info->m_PatternIndex); GuildMember* master = pGuild->FindMaster(); guild_info->m_GuildMasterGuid = master->GetCharGuid(); _tcsncpy(guild_info->m_tszGuildMaster, master->GetCharName(), MAX_CHARNAME_LENGTH); guild_info->m_tszGuildMaster[MAX_CHARNAME_LENGTH] = '\0'; sendMsg.m_eSetType = DOMINATION_INIT; } break; } Handler_Guild_GuildToDbp::OnDZ_DOMINATION_UPDATE_INFO_SYN(g_DBHandler.GetSharedSession(), &sendMsg, sizeof(sendMsg)); } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_ACCEP_HEIM_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_ACCEP_HEIM_SYN* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_ACCEP_HEIM_SYN send_msg; #ifdef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY send_msg.m_TokenPos = recv_msg->m_TokenPos; send_msg.number_of_betting_item = recv_msg->number_of_betting_item; #endif//_CH_20100420_CHANGE_DOMINATION_APPLY_WAY send_msg.m_dwKey = recv_msg->m_dwKey; send_msg.m_DominationActionInfo = recv_msg->m_DominationActionInfo; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_ACCEP_HEIM_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_INIT_ACTIONINFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_INIT_ACTIONINFO_SYN* pRecvMsg = static_cast(pMsg); MSG_DZ_DOMINATION_INIT_AUCTIONINFO_SYN sendMsg; sendMsg.m_MapCode = pRecvMsg->m_MapCode; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_INIT_AUCTIONINFO_SYN( g_DBHandler.GetSharedSession(), &sendMsg, sizeof(sendMsg)); } //ÇÏÀÓÀ» µ¹·ÁÁÙ ±æµå ¸¶½ºÅÍÀÇ Guid¸®½ºÆ®¸¦ ÀÛ¼ºÇÏ¿© WorldServer·Î º¸³½´Ù. Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_RETURNHIME_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_RETURNHIME_SYN* pRecvMsg = static_cast(pMsg); DOMINATION_RETURNMONEY_INFO ReturnInfo[MAX_DOMINATION_AUCTION]; ZeroMemory( ReturnInfo, sizeof(ReturnInfo) ); const DOMINATION_INFO& dominationInfo = pRecvMsg->m_DominationInfo; INT countData = 0; //°æ¸Å¿¡ ´ç÷ µÇÁö ¾ÊÀº ±æµå ¸®½ºÆ® ÀÛ¼º DominationManager::Instance()->SetListForReturnHeim( dominationInfo.m_FieldCode, ReturnInfo, _countof(ReturnInfo), countData ); #ifndef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY //¸¶Áö¸·¿¡ Áö¿ª Á¡·É ±æµå ¸¶½ºÅÍÀ̸§°ú ±Ý¾×À» ³Ö´Â´Ù.(Áö¿ª Á¡·ÉÀü °æ¸Å º¸»ó ÇÏÀÓ) { ReturnInfo[countData].m_TenderCost = dominationInfo.m_BestCost; ReturnInfo[countData].m_CostType = SYSMEMO_DOMINATION_REWARD_MONEY; memcpy( ReturnInfo[countData].m_tszMaster, dominationInfo.m_inGuildInfo.m_tszGuildMaster, sizeof(TCHAR)*MAX_CHARNAME_LENGTH ); ReturnInfo[countData].m_tszMaster[MAX_CHARNAME_LENGTH] = '\0'; ++countData; } #endif//_CH_20100420_CHANGE_DOMINATION_APPLY_WAY //WorldServer¿¡ ÇÏÀÓ ÂÊÁö¸¦ µ¹¸®µµ·Ï ¿äû MSG_WZ_GUILD_DOMINATION_RETURNHIME_CMD sendMsg; sendMsg.m_MapCode = dominationInfo.m_FieldCode; memcpy( sendMsg.m_tszGuild, dominationInfo.m_disGuildInfo.m_tszGuildName, sizeof(TCHAR)*MAX_GUILDNAME_LENGTH ); sendMsg.m_tszGuild[MAX_GUILDNAME_LENGTH] = '\0'; memcpy( sendMsg.m_ReturnInfo, ReturnInfo, sizeof(sendMsg.m_ReturnInfo) ); sendMsg.m_DataCount = countData; g_DBProxyServer.SendToWorldServer(&sendMsg, sendMsg.GetSize()); //GameServer¿¡ ¿Ï·á ÀÀ´äÀ» ÇÑ´Ù. MSG_GZ_DOMINATION_RETURNHIME_ACK ackMsg; ackMsg.m_MapCode = dominationInfo.m_FieldCode; pServerSession->SendPacket(&ackMsg, sizeof(ackMsg)); } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_BATTING_HEIM_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_BATTING_HEIM_SYN* pRecvMsg = static_cast(pMsg); MSG_GZ_DOMINATION_BATTING_HEIM_ACK sendMsg; Guild* pGuild = g_GuildManager.FindGuild( pRecvMsg->m_guildGuid ); if( pGuild == NULL ) { sendMsg.m_ResultCode = RC::DOMINATION_RESULT_NOT_GUILDMEMBER; } else if( pGuild->CheckGuildDeleteState() == eGUILD_DELCHK_DESTROY_WAIT ) { sendMsg.m_ResultCode = RC::DOMINATION_RESULT_GUILDSTAT_DESTROYWAIT; } else { //ÇöÀç ±æµå´Â °æ¸Å ½ÅûÀ» ÇØµµ µÇ´Â ±æµåÀÌ´Ù.(ÇØ»ê ½Åû°Ç¿¡ À־) sendMsg.m_ResultCode = RC::DOMINATION_RESULT_SUCCESS; } sendMsg.m_dwKey = pRecvMsg->m_dwKey; #ifdef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY sendMsg.m_mapCode = pRecvMsg->m_mapCode; #endif #ifdef _NA_000000_20130429_DOMINATION_PENALTY GuildSmallContentEntry::GuildPenalty::PenaltyTime current_Time = 0; util::GetDateTime_YYYYMMDDHHMMSS(current_Time); if (pGuild->GetPenaltyTime() >= current_Time) { sendMsg.m_ResultCode = RC::DOMINATION_RESULT_PENALTY_TIME; sendMsg.penalty_time = pGuild->GetPenaltyTime(); } #endif //_NA_000000_20130429_DOMINATION_PENALTY pServerSession->SendPacket( &sendMsg, sizeof(sendMsg) ); } //_NA_20100604_BETTER_DOMINATION_MANAGER Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_UPDATE_GUILDINFO_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_UPDATE_GUILDINFO_SYN* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_UPDATE_GUILDINFO_SYN send_msg; { send_msg.guild_guid_ = recv_msg->guild_guid_; send_msg.domination_join_count_ = recv_msg->domination_join_count_; send_msg.domination_defense_count_ = recv_msg->domination_defense_count_; send_msg.domination_hunting_count_ = recv_msg->domination_hunting_count_; } Handler_Guild_GuildToDbp::OnDZ_DOMINATION_UPDATE_GUILDINFO_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } //_NA_20100913_GUILD_WAREHOUSE_GM_COMMAND // GM ¸í·É¿¡ ÀÇÇÑ ±æµå â°í °­Á¦ ´Ý±â Handler_Guild_GameToGuild_IMPL(GZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD* msg = static_cast(pMsg); Guild* guild = g_GuildManager.FindGuildName(msg->guild_name); if (guild == NULL) { SUNLOG(eFULL_LOG, "[GZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD] Guild name '%s' not found!", msg->guild_name); return; } // DBProxy¿Í °ÔÀÓ ¼­¹öµé·Î Àü´ÞÇÑ´Ù. // µÑ Áß °¡´ÉÇÑ °÷¿¡¼­ ¼º°øÇϱ⸦ ±â´ëÇϹǷΠŸÀÌ¹Ö °í·Á³ª ÀÀ´ä ´ë±â ¾øÀÌ ¹Ù·Î ¾ç¹æÇâÀ¸·Î »Ñ¸°´Ù. // DBProxy·Î °­Á¦ ´Ý±â ¸í·ÉÀ» Àü´ÞÇϰí MSG_DZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD cmd; cmd.gm_player_key = msg->gm_player_key; cmd.guild_guid = guild->GetGuildGuid(); Handler_Guild_GuildToDbp::OnDZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_CMD( g_DBHandler.GetSharedSession(), &cmd, sizeof(cmd)); // °ÔÀÓ ¼­¹öµé¿¡ °øÁöÇÑ´Ù. MSG_GZ_GUILD_GM_WAREHOUSE_FORCE_CLOSE_BRD brd; brd.gm_player_key = msg->gm_player_key; brd.guild_guid = guild->GetGuildGuid(); g_DBProxyServer.SendToSessionType(GAME_SERVER, &brd, sizeof(brd)); } //gamelulu_dev_not : Á¡·ÉÀü Á¤º¸ ÀúÀå ±âº» ±¸Á¶°¡ Game <-> Guild <-> DBP ÀÌ´Ù. //ÇÏÁö¸¸ ´ëºÎºÐÀº Game->DBP->Guild->Game ÀÇ ±¸Á¶·Î½á ÇØ°áÀÌ °¡´ÉÇÏ´Ù. //_NA_20110216_INCREASE_DOMINATION_DEFFENSEWALL_POINT Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_ADD_DEFFENSEWALL_POINT_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_ADD_DEFFENSEWALL_POINT_SYN* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_ADD_DEFFENSEWALL_POINT_SYN send_msg; send_msg.item_code_ = recv_msg->item_code_; send_msg.m_dwKey = recv_msg->m_dwKey; send_msg.domination_info_ = recv_msg->domination_info_; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_ADD_DEFFENSEWALL_POINT_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } //_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_MEMBER_JOIN_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_MEMBER_JOIN_SYN* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_MEMBER_JOIN_SYN send_msg; send_msg.map_code_ = recv_msg->map_code_; send_msg.member_info_ = recv_msg->member_info_; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_MEMBER_JOIN_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_MEMBER_LEAVE_SYN) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_MEMBER_LEAVE_SYN* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_MEMBER_LEAVE_SYN send_msg; send_msg.map_code_ = recv_msg->map_code_; send_msg.member_guid_ = recv_msg->member_guid_; send_msg.requester_guid = recv_msg->requester_guid; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_MEMBER_LEAVE_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_MEMBERLIST_REQ) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_MEMBERLIST_REQ* recv_msg = static_cast(pMsg); if (DominationManager* domination_manager = DominationManager::Instance()) { if (domination_manager->IsCompleteLoading() == false) { return; }; domination_manager->SendMembers( static_cast(pServerSession), recv_msg->map_code_); WAVERIX_WRAPPER((WAVERIX_LC_CALL2("waverix_log_trace_domination", _T("|["__FUNCTION__"]|{mapcode}="), recv_msg->map_code_))); }; } Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_MEMBERLIST_INIT_CMD) { __TOUCHED((pServerSession, pMsg, wSize));WAVERIX_GUILD_DEBUGGING(); const MSG_GZ_DOMINATION_MEMBERLIST_INIT_CMD* recv_msg = static_cast(pMsg); MSG_DZ_DOMINATION_MEMBERLIST_INIT_SYN send_msg; Handler_Guild_GuildToDbp::OnDZ_DOMINATION_MEMBERLIST_INIT_SYN( g_DBHandler.GetSharedSession(), &send_msg, sizeof(send_msg)); } #ifdef _NA004034_20120102_GUILD_POINT_SYSTEM Handler_Guild_GameToGuild_IMPL(GZ_GUILDPOINTSYSTEM) { __TOUCHED((pServerSession, pMsg, wSize)); const MSG_GZ_GUILDPOINTSYSTEM* packet = \ static_cast(pMsg); switch(packet->packet_type) { case GZ_GUILDPOINT_CHANGE_CMD: { OnGZ_GUILDPOINT_CHANGE_CMD(pServerSession, pMsg, wSize); } break; default: break; } } Handler_Guild_GameToGuild_IMPL(GZ_GUILDPOINT_CHANGE_CMD) { const MSG_GZ_GUILDPOINT_CHANGE_CMD* packet = \ static_cast(pMsg); DWORD guid = packet->guildpoint.guid_; DWORD uuid = packet->guildpoint.uuid_; DWORD code = packet->guildpoint.code_; DWORD point = packet->guildpoint.point_; if(code == CURRENCY_INFO_DONATION_GUILDCOIN) { g_GuildManager.ProcessGuildCoinChange(guid, uuid, code, point); //Write guild game log Guild* guild = g_GuildManager.FindGuild(guid); if (guild == NULL) { SUNLOG(eCRITICAL_LOG, __FUNCTION__" : Not found guild : guid = %d", guid); return; } GuildMember* guild_member = guild->FindMember(uuid); if (guild_member == NULL) { SUNLOG(eCRITICAL_LOG, __FUNCTION__ \ " : Not found guild member : guid = %d, member_guid = %d", guid, uuid); return; } guild->GetGuildInGameLog()->WriteGuildLog( GuildGivePoint, guid, guild_member->GetCharName(), point ); } } #endif //_NA004034_20120102_GUILD_POINT_SYSTEM #ifdef _NA_000000_20130429_DOMINATION_PENALTY Handler_Guild_GameToGuild_IMPL(GZ_DOMINATION_PENALTY_CMD) { const MSG_GZ_DOMINATION_PENALTY_CMD* packet = \ static_cast(pMsg); DWORD guild_guid = packet->guild_guid; Guild* guild = g_GuildManager.FindGuild(guild_guid); if (guild) { CTime penalty_time = packet->penalty_time; MAPCODE map_code = packet->map_code; WORD member_count = packet->member_count; guild->SetPenaltyTime(util::GetDateTime_YYYYMMDDHHMMSS(penalty_time.GetTime())); MSG_DZ_DOMINATION_PENALTY_CMD msg; msg.guild_guid = guild_guid; msg.penalty_time = penalty_time; g_DBProxyServer.SendToDBPServer(&msg, sizeof(msg)); guild->GetGuildInGameLog()->WriteGuildLog( \ GuildPenaltyTime, guild_guid, NULL, map_code, penalty_time.GetTime(), member_count); } } #endif //_NA_000000_20130429_DOMINATION_PENALTY #ifdef _NA_008334_20150608_SONNENSCHEIN Handler_Guild_GameToGuild_IMPL(GZ_GUILD_SONNENSCHEIN_UPDATE_SYN) { MSG_GZ_GUILD_SONNENSCHEIN_UPDATE_SYN* syn_msg = \ static_cast(pMsg); MSG_DZ_GUILD_SONNENSCHEIN_UPDATE_SYN dz_syn_msg; dz_syn_msg.m_dwKey = syn_msg->m_dwKey; dz_syn_msg.m_dwSessionIndex = pServerSession->GetSessionIndex(); dz_syn_msg.guild_guid = syn_msg->guild_guid; dz_syn_msg.sonnenschein_phase = syn_msg->sonnenschein_phase; Handler_Guild_GuildToDbp::OnDZ_GUILD_SONNENSCHEIN_UPDATE_SYN(g_DBHandler.GetSharedSession(), &dz_syn_msg, sizeof(dz_syn_msg)); } #endif //_NA_008334_20150608_SONNENSCHEIN