#include "WorldServerPch.hxx" #include "./Handler_DW.h" #include // #include "./PacketHandler.h" #include "WorldServer.h" //#include "Sessions/ServerSessionInWorld.h" //#include "Channel/WorldChannelManager.h" //#include "Channel/WorldChannel.h" #include "Objects/WorldUserManager.h" #include "Objects/WorldUser.h" //#include "Services/ChattingService.h" //#include "Services/Lotto/Lotto.h" //#include "Services/Group/GroupManager.h" #include "Services/Guild/WorldGuildManager.h" //#include "Services/Friends/FriendMap.h" //#include "Services/Friends/FriendInvitation.h" //================================================================================================== namespace ns_world { namespace handlers { ; }}; //end of namespace //================================================================================================== //================================================================================================== //================================================================================================== #undef HANDLER_NODE_INFO #define HANDLER_NODE_INFO(_category_, _protocol_, _phase_) \ void ns_world::handlers::Handler_DW::On##_protocol_(\ ns_world::ServerSessionInWorld* const server_session, \ const MSG_BASE* const msg_base, const uint16_t msg_size) #define WAVERIX_WORLD_HANDLER_DEBUGGING() \ WAVERIX_WRAPPER((WAVERIX_LC_CALL4("waverix_log_trace_dw", \ __FUNCTION__, server_session, msg_base, msg_size))) #if SUN_CODE_SAMPLE // to support visual assistx intelli-sense ns_world::ServerSessionInWorld* server_session; MSG_BASE* msg_base; uint16_t msg_size; #endif //================================================================================================== //================================================================================================== //================================================================================================== HANDLER_NODE_INFO(DW_GUILD, DW_DOMINATION_FINDMONEY_ACK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_DW_DOMINATION_FINDMONEY_ACK* recv_msg = \ static_cast(msg_base); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); const DWORD receiver_char_guid = recv_msg->m_RecvCharGuid; ns_world::WorldUser* user = user_manager->FindUserByCharGuid(receiver_char_guid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found character(CharGuid=%u)|"), receiver_char_guid); return; }; //º¸»ó ¹ÞÁö ¸øÇÏ´Â ÀÌÀ¯¿¡ ´ëÇÑ ·Î±× °­È­ if (recv_msg->m_Result != 0) { SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"][WorldUser:%u]DB Query Result Fail", recv_msg->m_RecvCharGuid); return; } else if (recv_msg->m_RecvCharGuid != recv_msg->m_DBCharGuid) { SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Guid Not Match[DB:%u]!=[REQ:%u]", recv_msg->m_DBCharGuid, recv_msg->m_RecvCharGuid); return; } else if (recv_msg->m_CostType != recv_msg->m_DBCostType) { SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"][WorldUser:%u]Money Type Not Same[DB:%d]!=[REQ:%d]", recv_msg->m_RecvCharGuid, recv_msg->m_DBCostType, recv_msg->m_CostType); return; } else if (recv_msg->m_RequestMapCode != recv_msg->m_DBMapCode) { SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"][WorldUser:%u]MapCode Not Match[DB:%u]!=[REQ:%u]", recv_msg->m_RecvCharGuid, recv_msg->m_DBMapCode, recv_msg->m_RequestMapCode); return; } if (user->EnabledSendMessage() == false) { SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]No AgentServer"); return; }; MSG_AW_USER_DOMINATION_RETURNHIEM_CMD msg_cmd; msg_cmd.m_CharGuid = recv_msg->m_DBCharGuid; msg_cmd.m_Type = recv_msg->m_CostType; msg_cmd.m_TenderCost = recv_msg->m_TenderCost; user->SendPacket(&msg_cmd, sizeof(msg_cmd)); SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]%d Type(return:9,reward:10)%d Heim Give to WorldUser[%d]", msg_cmd.m_Type, msg_cmd.m_TenderCost, msg_cmd.m_CharGuid); } HANDLER_NODE_INFO(DW_GUILD, DW_GUILD_WAREHOUSE_LOGLIST_ANS, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_DW_GUILD_WAREHOUSE_LOGLIST_ANS* recv_msg = \ static_cast(msg_base); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); const DWORD requester_char_guid = recv_msg->m_ReqCharGuid; ns_world::WorldUser* user = user_manager->FindUserByCharGuid(requester_char_guid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found character(CharGuid=%u)|"), requester_char_guid); return; }; MSG_CW_GUILD_WAREHOUSE_LOGLIST_ANS msg_ack; msg_ack.m_byLogCount = recv_msg->m_byLogCount; msg_ack.m_byCurrentPage = recv_msg->m_byCurrentPage; msg_ack.m_byLogPageCount = recv_msg->m_byLogPageCount; BOOST_STATIC_ASSERT(sizeof(msg_ack.m_LogList) == sizeof(recv_msg->m_LogList) && _countof(msg_ack.m_LogList) == _countof(recv_msg->m_LogList) && sizeof(msg_ack.m_LogList[0]) == sizeof(recv_msg->m_LogList[0])); if (FlowControl::FCAssert(_countof(msg_ack.m_LogList) >= msg_ack.m_byLogCount) == false) { msg_ack.m_byLogCount = _countof(msg_ack.m_LogList); }; CopyMemory(msg_ack.m_LogList, recv_msg->m_LogList, \ sizeof(msg_ack.m_LogList[0]) * msg_ack.m_byLogCount); user->SendPacket(&msg_ack, msg_ack.GetSize()); //if (msg_ack.m_byMemoPage >= msg_ack.m_byMemoPageCnt) //{ // user->SetMemoTransaction(false); //} #ifdef _DEBUG SUNLOG(eDEV_LOG, "DW_GUILD_WAREHOUSE_LOGLIST_ANS[%s][%u][Memo:%u][Page:%u/%u]", user->GetCharName(), user->GetCharGuid(), msg_ack.m_byLogCount, msg_ack.m_byCurrentPage, msg_ack.m_byLogPageCount); #endif } HANDLER_NODE_INFO(DW_GUILD, DW_GUILD_WAREHOUSE_LOGLIST_NAK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_DW_GUILD_WAREHOUSE_LOGLIST_NAK* recv_msg = \ static_cast(msg_base); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); const DWORD requester_char_guid = recv_msg->m_ReqCharGuid; ns_world::WorldUser* user = user_manager->FindUserByCharGuid(requester_char_guid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found character(CharGuid=%u)|"), requester_char_guid); return; }; //user->SetMemoTransaction(false); MSG_CW_GUILD_WAREHOUSE_LOGLIST_NAK msg_nak; msg_nak.m_byErrorCode = recv_msg->m_byErrorCode; user->SendPacket(&msg_nak, sizeof(msg_nak)); #ifdef _DEBUG SUNLOG(eDEV_LOG, "DW_MEMO_LIST_NAK[%s][%u]", user->GetCharName(), user->GetCharGuid()); #endif } HANDLER_NODE_INFO(DW_GUILD, DW_GUILD_SELECT_NOTICE_ACK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_DW_GUILD_SELECT_NOTICE_ACK* recv_msg = \ static_cast(msg_base); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); const DWORD requester_char_guid = recv_msg->m_OperCharGuid; ns_world::WorldUser* user = user_manager->FindUserByCharGuid(requester_char_guid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found character(CharGuid=%u)|"), requester_char_guid); return; }; ns_world::WorldGuild* const guild = \ ns_world::WorldGuildManager::Instance()->FindGuild(recv_msg->m_GuildGuid); if (guild == NULL) { MSG_CW_GUILD_WAREHOUSE_LOGLIST_NAK msg_nak; msg_nak.m_byErrorCode = RC::RC_GUILD_INVALID_STATE; user->SendPacket(&msg_nak, sizeof(msg_nak)); }; // success guild->SetGuildNotice(recv_msg->m_szGuildNotice); MSG_CW_GUILD_SELECT_NOTICE_ACK msg_ack; msg_ack.m_NoticeType = recv_msg->m_GuildNoticeType; strncpy(msg_ack.m_ptszNotice, guild->GetGuildNotice(), _countof(msg_ack.m_ptszNotice)); msg_ack.m_ptszNotice[_countof(msg_ack.m_ptszNotice) - 1] = '\0'; msg_ack.m_wNoticeLen = static_cast(strlen(msg_ack.m_ptszNotice)); user->SendPacket(&msg_ack, sizeof(msg_ack)); // TODO: check message size } #if SUN_CODE_BACKUP // NOTE: f110818.1L, not handled protocol HANDLER_NODE_INFO(DW_GUILD, DW_GUILD_SELECT_NOTICE_NAK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_DW_GUILD_SELECT_NOTICE_NAK* recv_msg = \ static_cast(msg_base); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); const DWORD requester_char_guid = recv_msg->m_OperCharGuid; ns_world::WorldUser* user = user_manager->FindUserByCharGuid(requester_char_guid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found character(CharGuid=%u)|"), requester_char_guid); return; }; // nothing to do... /* WorldUser *user = ns_world::WorldUserManager::Instance()->FindUserByCharGuid(recv_msg->m_OperCharGuid); if (user == NULL) { SUNLOG(eDEV_LOG, "OnDW_GUILD_SELECT_NOTICE_NAK Error - No WorldUser[%u]", recv_msg->m_OperCharGuid); return; } MSG_CW_GUILD_WAREHOUSE_LOGLIST_NAK nakMsg; nakMsg.m_byErrorCode = RC::RC_GUILD_INVALID_STATE; user->SendPacket((BYTE*)&nakMsg, sizeof(nakMsg));*/ } #endif //SUN_CODE_BACKUP //================================================================================================== //================================================================================================== //================================================================================================== //HANDLER_NODE_INFO(WZ_GUILD, SERVERCOMMON_HEARTBEAT, PHASE_SERVICE) //{ //} HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_DESTROY_GUILD_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_DESTROY_GUILD_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->DestroyGuild(recv_msg->m_GuildGuid); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_JOIN_GUILD_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_JOIN_GUILD_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); // ±æµå Á¤º¸ ÀÖ´ÂÁö °Ë»çÇÏ¿© ¾øÀ¸¸é º¹±¸ ¿äû ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found guild(%d)|"), recv_msg->m_GuildGuid); return; } //1. ns_world::WorldUser ±æµå ¼¼ÆÃ. ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_Info.m_CharGuid); if (user == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=can't found char_guid(%d) in guild(%d)|"), recv_msg->m_GuildGuid, recv_msg->m_Info.m_CharGuid); return; } ns_world::ConnectedCharInfo char_info = user->GetConnectedCharInfo(); char_info.guild_guid = recv_msg->m_GuildGuid; user_manager->ChangeConnectedCharInfo(user, char_info); guild_manager->JoinGuild(recv_msg->m_GuildGuid, recv_msg->m_Info); // »õ·Î °¡ÀÔÇßÀ¸¸é ±æµå °øÁö¸¦ ³¯·ÁÁØ´Ù. MSG_CW_GUILD_NOTICE_CMD msg_cmd; msg_cmd.m_wNoticeLen = strlen(guild->GetGuildNotice()); //memset(msg_cmd.m_ptszNotice, 0, sizeof(TCHAR)*(MAX_GUILDNOTICE_LENGTH+1)); strncpy(msg_cmd.m_ptszNotice, guild->GetGuildNotice(), MAX_GUILDNOTICE_LENGTH); //msg_cmd.m_ptszNotice[MAX_GUILDNOTICE_LENGTH+1] = '\0'; //ÇØ´ç ±æµå¿øÇÑÅ׸¸ º¸³»µµ·Ï ÇÏÀÚ guild->SendAllMember(&msg_cmd, msg_cmd.GetSize()); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_WITHDRAW_GUILD_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_WITHDRAW_GUILD_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); // ÀÌ¹Ì °ÔÀÓ¼­¹ö¿¡¼­ Å»ÅðÇѰÍÀ» ¾Ë·ÁÁá´Ù. // µû¶ó¼­ ±æµå ¸â¹ö ±¸Á¶¸¸ À¯ÁöÇÑ´Ù. guild_manager->WithdrawGuild(recv_msg->m_GuildGuid, recv_msg->m_CharGuid); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_CharGuid); ns_world::ConnectedCharInfo char_info = user->GetConnectedCharInfo(); char_info.guild_guid = 0; user_manager->ChangeConnectedCharInfo(user, char_info); } // ±æµå °øÁö HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_NOTICE_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_NOTICE_CMD* recv_msg = \ static_cast(msg_base); // nothing to do } #ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP // NOTE: this contents removed by TAIWAN_VERSION dropping HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHUNTING_PVP_RESULT_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHUNTING_PVP_RESULT_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->SetChuntingPVPInfo(recv_msg->m_GuildGuid, recv_msg->m_PVPInfo); } #endif // //±æµå Á÷Ã¥ HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_DUTY_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_DUTY_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); bool changed_result = (guild_manager->ChangeMemberDuty(\ recv_msg->m_GuildGuid, recv_msg->m_TargetCharGuid, recv_msg->m_eGuildDuty) != false); if (changed_result == false) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=DB¿¡¼­´Â ¼º°øÀε¥, ¿ùµå¼­¹ö¿¡¼­ ½ÇÆÐ´Ù.. ¹®Á¦´Ù. ") _T("GUILDGUID= %u, CHARGUID = %u, DUTY =%d|"), recv_msg->m_GuildGuid, recv_msg->m_TargetCharGuid, recv_msg->m_eGuildDuty); } } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_MASTER_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_MASTER_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); //±æµåÀåÀÌ º¯°æµÇ¾úÀ¸¹Ç·Î, Á÷Ã¥ÀÌ ¹Ù²ï°ÅÇÏ°í ¶È°°ÀÌ Ã³¸®ÇÑ´Ù. //1. ÀÌÀü±æµåÀåÀ» Á¤¿¹º´À¸·Î ¹Ù²Û´Ù. guild_manager->ChangeMemberDuty( recv_msg->m_GuildGuid, recv_msg->m_OldMasterGuid, eGUILD_DUTY_REGULAR_SOLDIER ); //2. »õ·Î¿î ±æµåÀåÀ» ±æ¸¶·Î ¹Ù²Û´Ù. guild_manager->ChangeMemberDuty( recv_msg->m_GuildGuid, recv_msg->m_NewMasterGuid, eGUILD_DUTY_MASTER ); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_COMMANDER_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_COMMANDER_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); //±º´ÜÀåÀÌ º¯°æµÇ¾úÀ¸¸é, Á÷Ã¥ÀÌ º¯°æµÈ°Å´Ù. guild_manager->ChangeCommander(\ recv_msg->m_GuildGuid, recv_msg->m_TargetCharGuid, recv_msg->m_byCorpsNum); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_CORPS_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_CORPS_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); //±º´Üº¯°æ. guild_manager->ChangeCorps(\ recv_msg->m_GuildGuid, recv_msg->m_TargetCharGuid, recv_msg->m_byCorpsNum); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CREATE_REAR_CAMP_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CREATE_REAR_CAMP_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->CreateRearCamp(recv_msg->m_GuildGuid, recv_msg->m_byCorpsNum); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_DESTROY_REAR_CAMP_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_DESTROY_REAR_CAMP_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->DestroyRearCamp(recv_msg->m_GuildGuid, recv_msg->m_byCorpsNum); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CREATE_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CREATE_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); //±æµå»ý¼º. guild_manager->CreateGuild(recv_msg->m_WorldGuildInfo, recv_msg->m_BaseMemberInfo); // À̺κÐÀ» ÇÔ¼ö·Î »©°í ½ÍÁö¸¸, ns_world::WorldUserManager¿Í ns_world::WorldGuildManager¸¦ µÑ´Ù ÂüÁ¶ÇÑ´Ù. // µÉ ¼ö ÀÖÀ¸¸é Àü¿ªÀ¸·Î ¾²ÀÌ´Â °ÍÀº ¼­·Î ¿¬°ü½ÃŰÁö ¸»ÀÚ. // ±æ¸¶°¡ Á¢¼ÓÇØ ÀÖÀ¸¸é ±æ¸¶¿¡ ±æµåÁ¤º¸ ¼¼ÆÃÇÏÀÚ. ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = \ user_manager->FindUserByCharGuid(recv_msg->m_BaseMemberInfo.m_CharGuid); if (user == NULL) { SUNLOG(eMIDDLE_LOG, _T("|["__FUNCTION__"]|Msg=not online user[CharGuid:%u]|"), recv_msg->m_BaseMemberInfo.m_CharGuid); return; }; ns_world::ConnectedCharInfo char_info = user->GetConnectedCharInfo(); char_info.guild_guid = recv_msg->m_WorldGuildInfo.m_GuildGuid; user_manager->ChangeConnectedCharInfo(user, char_info); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_RESTORE_ACK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_RESTORE_ACK* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); //³»ºÎÀûÀ¸·Î ¿ùµå¼­¹ö¿¡ ¼¼ÆÃÇÑ´Ù. guild_manager->GuildRestore(recv_msg->m_WorldGuildInfo, recv_msg->m_BaseMemberInfo); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_LOGIN_CHAR_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_LOGIN_CHAR_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); const GUILDGUID guild_guid = recv_msg->m_WorldGuildInfo.m_GuildGuid; assert(guild_guid != 0); //³»ºÎÀûÀ¸·Î ¿ùµå¼­¹ö¿¡ ¼¼ÆÃÇÑ´Ù. guild_manager->LoginGuild(recv_msg->m_WorldGuildInfo, recv_msg->m_BaseMemberInfo); ns_world::WorldGuild* const guild = guild_manager->FindGuild(guild_guid); if (guild == NULL) { SUNLOG(eCRITICAL_LOG, _T("|["__FUNCTION__"]|Msg=cannot find guild(%d)|"), guild_guid); return; }; // ±æµå °øÁö º¸³»Áà¾ß ÇÑ´Ù. MSG_CW_GUILD_CHANGE_NOTICE_BRD msg_brd; ;{ util::StrArrayForGuildNotice& dest = msg_brd.m_ptszNotice; _tcsncpy(dest, guild->GetGuildNotice(), _countof(dest)); dest[_countof(dest) - 1] = _T('\0'); msg_brd.m_wNoticeLen = static_cast(::_tcslen(dest)); }; ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = \ user_manager->FindUserByCharGuid(recv_msg->m_BaseMemberInfo.m_CharGuid); user->SendPacket(&msg_brd, msg_brd.GetSize()); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_LOGOUT_CHAR_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_LOGOUT_CHAR_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); // ³»ºÎÀûÀ¸·Î ¿ùµå¼­¹ö¿¡ ¼¼ÆÃÇÑ´Ù. guild_manager->LogoutGuild(recv_msg->m_GuildGuid, recv_msg->m_CharGuid); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_KICK_PLAYER_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_KICK_PLAYER_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); // °­Åð½ÃŲ´Ù. guild_manager->KickMember(recv_msg->m_GuildGuid, recv_msg->m_KickCharGuid); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_KickCharGuid); ns_world::ConnectedCharInfo char_info = user->GetConnectedCharInfo(); char_info.guild_guid = 0; user_manager->ChangeConnectedCharInfo(user, char_info); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_MEMBER_INFO_REQ_ACK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_MEMBER_INFO_REQ_ACK* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->StoreBaseMemberInfo(recv_msg->m_GuildGuid, recv_msg->m_BaseMemberInfo); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_RECOVERY_GUILD_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_RECOVERY_GUILD_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild) { MSG_CW_GUILD_RECOVERY_GUILD_BRD msg_brd; msg_brd.m_GuildIndex = recv_msg->m_GuildGuid; guild->SendAllMember(&msg_brd, sizeof(msg_brd)); }; } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_DESTROY_WAIT_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_DESTROY_WAIT_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild) { //MSG_CW_GUILD_DESTROY_WAIT_CMD msg_brd; MSG_CW_GUILD_RECOVERY_GUILD_BRD msg_brd; // NOTE: f110915.1L, ?? msg_brd.m_GuildIndex = recv_msg->m_GuildGuid; guild->SendAllMember(&msg_brd, sizeof(msg_brd)); } } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_GUILDMARK_REGISTER_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_GUILDMARK_REGISTER_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild) { MSG_CW_GUILD_GUILDMARK_REGISTER_BRD msg_brd; msg_brd.m_GuildIndex= recv_msg->m_GuildGuid; msg_brd.m_PatternIndex = recv_msg->m_PatternIndex; msg_brd.m_BackGroundIndex = recv_msg->m_BackGroundIndex; guild->SendAllMember(&msg_brd, sizeof(msg_brd)); } } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_GUILDMARK_DELETE_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_GUILDMARK_DELETE_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild) { MSG_CW_GUILD_GUILDMARK_DELETE_BRD msg_brd; msg_brd.m_GuildIndex= recv_msg->m_GuildGuid; msg_brd.m_PatternIndex = recv_msg->m_PatternIndex; msg_brd.m_BackGroundIndex = recv_msg->m_BackGroundIndex; guild->SendAllMember(&msg_brd, sizeof(msg_brd)); } } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_NOTICE_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_NOTICE_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild == NULL) { return; }; guild->SetGuildNotice(recv_msg->m_szGuildNotice); MSG_CW_GUILD_CHANGE_NOTICE_BRD msg_brd; ;{ msg_brd.m_wNoticeLen = recv_msg->m_wNoticeLen; util::StrArrayForGuildNotice& dest = msg_brd.m_ptszNotice; strncpy(dest, guild->GetGuildNotice(), _countof(dest)); dest[_countof(dest) - 1] = _T('\0'); }; guild->SendAllMember(&msg_brd, msg_brd.GetSize()); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHANGE_NOTICE_NAK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHANGE_NOTICE_NAK* recv_msg = \ static_cast(msg_base); //ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_OperCharGuid); if (user) { MSG_CW_GUILD_CHANGE_NOTICE_NAK msg_nak; msg_nak.m_byErrorCode = recv_msg->m_byErrorCode; user->SendPacket(&msg_nak, sizeof(msg_nak)); } } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_NAME_CHANGE_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_NAME_CHANGE_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldGuild* guild = guild_manager->FindGuild(recv_msg->m_GuildGuid); if (guild) { guild->ChangeGuildName(recv_msg->m_tszGuildName); }; } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_DOMINATION_RETURNHIME_CMD, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_DOMINATION_RETURNHIME_CMD* recv_msg = \ static_cast(msg_base); ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); guild_manager->SendDominationHeimReturnMemo(recv_msg); } //_NA_0_20100527_ADD_CHAR_RELATION_MEMO HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_ACK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_ACK* recv_msg = \ static_cast(msg_base); //ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_dwKey); if (user == NULL) { return; }; MSG_DW_FRIEND_DETAIL_INFO_SYN msg_syn; msg_syn.m_dwKey = recv_msg->m_dwKey; msg_syn.m_dwToCharGuid = recv_msg->m_dwToCharGuid; ns_world::ServerSessionInWorld* dbproxy = \ ns_world::WorldServer::Instance()->GetGameDBProxy(); if (dbproxy == NULL) { MSG_CW_FRIEND_STATUS_NAK msg_nak; msg_nak.m_byErrorCode = RC::RC_FRIEND_FAIL; user->SendPacket(&msg_nak, sizeof(msg_nak)); return; } dbproxy->SendPacket(&msg_syn, sizeof(msg_syn)); } HANDLER_NODE_INFO(WZ_GUILD, WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_NAK, PHASE_SERVICE) { __TOUCHED((server_session, msg_base, msg_size));WAVERIX_WORLD_HANDLER_DEBUGGING(); const MSG_WZ_GUILD_CHECK_CONDITION_ACCESS_DETAIL_INFO_NAK* recv_msg = \ static_cast(msg_base); //ns_world::WorldGuildManager* const guild_manager = ns_world::WorldGuildManager::Instance(); ns_world::WorldUserManager* const user_manager = ns_world::WorldUserManager::Instance(); ns_world::WorldUser* user = user_manager->FindUserByCharGuid(recv_msg->m_dwKey); if (user == NULL) { return; }; MSG_CW_FRIEND_STATUS_NAK msg_nak; msg_nak.m_byErrorCode = recv_msg->m_byErrorCode; user->SendPacket(&msg_nak, sizeof(msg_nak)); }