CN1602 is the local client. KR is the official tree with unpacked Data, System, and Sound. Packed .wpk files stay off git.
1945 lines
76 KiB
C++
1945 lines
76 KiB
C++
#include "stdafx.h"
|
|
#include "Handler_FromDBProxyServer.h"
|
|
#include "PacketHandler.Shared.h"
|
|
|
|
#include <GuildServer.h>
|
|
|
|
#include <PacketStruct_DZ.h>
|
|
#include <PacketStruct_GZ.h>
|
|
#include <PacketStruct_WZ.h>
|
|
|
|
#include "DominationManager.h"
|
|
|
|
// GUILD
|
|
#include <Guild/GuildManager.h>
|
|
#include <Guild/Guild.h>
|
|
#include <Guild/GuildMember.h>
|
|
#include <Guild/GuildRelation.h>
|
|
#include <Guild/GuildSmallContentEntry.h>
|
|
|
|
|
|
#define ADD_HANDLER_INFO_EOR() { MAKEWORD(0, 0), PHASE_NOACTION, (PH_fnHandler)NULL }
|
|
#define ADD_HANDLER_INFO( c, p, accptablePHASE ) \
|
|
{ MAKEWORD(c, p), accptablePHASE, (PH_fnHandler)&Handler_FromDBProxyServer::On##p }
|
|
|
|
sPACKET_HANDLER_INFO* Handler_FromDBProxyServer::GetHandlerInfo()
|
|
{
|
|
static sPACKET_HANDLER_INFO s_pHandlerInfo[] =
|
|
{
|
|
//
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_SELECT_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_JOIN_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_WITHDRAW_ACK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_SELECT_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_JOIN_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_WITHDRAW_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_KICKPLAYER_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_KICKPLAYER_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_NOTICE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_NOTICE_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DONATE_UP_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DONATE_UP_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CONVERT_UP2GP_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CONVERT_UP2GP_NAK, PHASE_UNLIMITED ),
|
|
#if 0 // protocol removed from enum
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RANKUP_ACK, PHASE_UNLIMITED ),
|
|
#endif
|
|
#if 0 // protocol removed from enum
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RANKUP_NAK, PHASE_UNLIMITED ),
|
|
#endif
|
|
|
|
#ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHUNTING_PVP_RESULT_ACK, PHASE_UNLIMITED ),
|
|
#endif
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_INFO_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_INFO_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_DUTY_ACK, PHASE_UNLIMITED ), // 길드 직책
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_DUTY_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RIGHT_DELEGATION_ACK, PHASE_UNLIMITED ), // 길드 위임권한 변경
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RIGHT_DELEGATION_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_MASTER_ACK, PHASE_UNLIMITED ), // 길드 마스터 변경
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_MASTER_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_CORPS_ACK, PHASE_UNLIMITED ), // 길드 군단 생성
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_CORPS_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_CORPS_ACK, PHASE_UNLIMITED ), // 길드 군단 해산
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_CORPS_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_COMMANDER_ACK, PHASE_UNLIMITED ), // 길드 군단장 변경
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_COMMANDER_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_CORPS_ACK, PHASE_UNLIMITED ), // 길드 군단 이동
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CHANGE_CORPS_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_REAR_CAMP_ACK, PHASE_UNLIMITED ), // 길드 훈련캠프 생성
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_CREATE_REAR_CAMP_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_REAR_CAMP_ACK, PHASE_UNLIMITED ), // 길드 훈련캠프 해산
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_REAR_CAMP_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_LOGOUT_CHAR_CMD, PHASE_UNLIMITED ), // 길드 멤버 로그아웃
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GM_GUILD_POINT_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GM_GUILD_POINT_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_DELETE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_DELETE_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_BOTH_AGAINST_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RELATION_BOTH_AGAINST_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RECOVERY_GUILD_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_RECOVERY_GUILD_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_COMPLETE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_DESTROY_COMPLETE_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GUILDMARK_REGISTER_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GUILDMARK_REGISTER_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GUILDMARK_DELETE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_GUILDMARK_DELETE_NAK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_WAREHOUSE_OPEN_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_WAREHOUSE_OPEN_NAK, PHASE_UNLIMITED ),
|
|
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_NAME_CHANGE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_GUILD_NAME_CHANGE_NAK, PHASE_UNLIMITED ),
|
|
//{ _KR_001385_20091013_DOMINATION_BASICINFO_SETTING
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_INFO_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_AUCTION_INFO_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_UPDATE_INFO_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_ACCEP_HEIM_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_INIT_AUCTIONINFO_ACK, PHASE_UNLIMITED ),
|
|
//}
|
|
#ifdef _NA_20100604_BETTER_DOMINATION_MANAGER
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_UPDATE_GUILDINFO_ACK, PHASE_UNLIMITED ),
|
|
#endif
|
|
#ifdef _NA_20110216_INCREASE_DOMINATION_DEFFENSEWALL_POINT
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK, PHASE_UNLIMITED ),
|
|
#endif
|
|
#ifdef _NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_MEMBER_JOIN_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_MEMBER_LEAVE_ACK, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_MEMBERLIST_ANS, PHASE_UNLIMITED ),
|
|
ADD_HANDLER_INFO( DZ_GUILD, DZ_DOMINATION_MEMBERLIST_INIT_ACK, PHASE_UNLIMITED ),
|
|
|
|
#endif
|
|
ADD_HANDLER_INFO_EOR(),
|
|
};
|
|
|
|
return s_pHandlerInfo;
|
|
};
|
|
|
|
VOID Handler_FromDBProxyServer::RegisterHandler_ALL( PACKET_HANDLER_DELEGATOR pInstance )
|
|
{
|
|
pInstance->RegisterHandler_<GAME_DBPROXY>( GetHandlerInfo() );
|
|
pInstance->RegisterHandler_<GAME_DBPROXY>( PacketHandlerShared::GetHandlerInfo() );
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_ACK * pRecvMsg = (MSG_DZ_GUILD_CREATE_ACK *)pMsg;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.CreateGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_szGuildName, pRecvMsg->m_byCreateCorpsNum,
|
|
pRecvMsg->m_MasterCharGuid, pRecvMsg->m_szMasterName, pRecvMsg->m_MasterDuty, pRecvMsg->m_byMasterClass, pRecvMsg->m_MasterLevel, pRecvMsg->m_byChaoState,
|
|
pRecvMsg->m_nGuildPenaltyTime, pRecvMsg->m_nDestroyRequestTime, pRecvMsg->m_nMasterChangeTime );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_CREATE_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_ACK)] Fail!!, GuildGuid = %u, MasterName = %s",
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_szMasterName );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_GUILD_CREATE_ACK amsg;
|
|
amsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
g_GuildManager.SerializeGameGuildInfo( pRecvMsg->m_GuildGuid, amsg.m_GameGuildInfo, SERIALIZE_LOAD );
|
|
g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_MasterCharGuid, amsg.m_BaseMemberInfo );
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &amsg, sizeof( amsg ) );
|
|
|
|
MSG_WZ_GUILD_CREATE_CMD cmsg;
|
|
g_GuildManager.SerializeBaseGuildInfo( pRecvMsg->m_GuildGuid, cmsg.m_WorldGuildInfo, SERIALIZE_LOAD );
|
|
g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildGuid, pRecvMsg->m_MasterCharGuid, cmsg.m_BaseMemberInfo );
|
|
pGuildServer->ConnectSessions.SendToWorld( &cmsg, sizeof( cmsg ) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_ACK)
|
|
{
|
|
const MSG_DZ_GUILD_DESTROY_ACK* receive_msg = static_cast<MSG_DZ_GUILD_DESTROY_ACK*>(pMsg);
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산신청|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_ACK)|MSG_DZ_GUILD_DESTROY_ACK 받음|GuildGuid:%d, DestroyTime:%u|"),
|
|
receive_msg->m_GuildGuid,
|
|
receive_msg->m_dwDestroyTime);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
GuildSmallContentsEntry::GuildPenalty::SetGuildDeleteWaitMap(
|
|
receive_msg->m_GuildGuid, receive_msg->m_dwDestroyTime);
|
|
GuildSmallContentsEntry::RelationSystem::RemainRelationDestroy(receive_msg->m_GuildGuid);
|
|
|
|
GuildServer* guild_server = GuildServer::GetMainFrame();
|
|
|
|
MSG_GZ_GUILD_DESTROY_WAIT_BRD brd_msg;
|
|
brd_msg.m_dwKey = receive_msg->m_dwKey;
|
|
brd_msg.m_GuildGuid = receive_msg->m_GuildGuid;
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산신청|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_ACK)|MSG_GZ_GUILD_DESTROY_WAIT_BRD 보냄|Key:%u, GuildGuid:%d|"),
|
|
brd_msg.m_dwKey,
|
|
brd_msg.m_GuildGuid);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
guild_server->SendToAllGameServers(&brd_msg, sizeof(brd_msg));
|
|
|
|
MSG_WZ_GUILD_DESTROY_WAIT_CMD cmd_msg;
|
|
cmd_msg.m_dwKey = receive_msg->m_dwKey;
|
|
cmd_msg.m_GuildGuid = receive_msg->m_GuildGuid;
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산신청|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_ACK)|MSG_WZ_GUILD_DESTROY_WAIT_CMD 보냄|Key:%u, GuildGuid:%d|"),
|
|
cmd_msg.m_dwKey,
|
|
cmd_msg.m_GuildGuid);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
guild_server->ConnectSessions.SendToWorld(&cmd_msg, sizeof(cmd_msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_JOIN_ACK)
|
|
{
|
|
MSG_DZ_GUILD_JOIN_ACK* pRecvMsg = (MSG_DZ_GUILD_JOIN_ACK *)pMsg;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
|
|
// 0,0,0은 아직 길드에서 필요 하지 않으거 같아서 저렇게 넣었다.
|
|
// 사용되는 부분을 찾아야 한다.
|
|
RC::eGUILD_RESULT rt = g_GuildManager.JoinGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_CharGuid, pRecvMsg->m_tszCharName, pRecvMsg->m_Duty, pRecvMsg->m_byClass, pRecvMsg->m_Level, pRecvMsg->m_byChaoState );
|
|
if( rt != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_JOIN_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
strncpy(nakMsg.m_szTargetCharName, pRecvMsg->m_tszCharName,
|
|
_countof(nakMsg.m_szTargetCharName));
|
|
nakMsg.m_szTargetCharName[_countof(nakMsg.m_szTargetCharName) - 1] = '\0';
|
|
nakMsg.m_byErrorCode = rt;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
return;
|
|
}
|
|
|
|
GuildMember* pMember = g_GuildManager.FindGuildMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid );
|
|
if( !pMember ) return;
|
|
|
|
//게임서버로 보낸다.
|
|
MSG_GZ_GUILD_JOIN_BRD msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
pMember->SerializeMemberInfo( msg.m_MemberInfo, SERIALIZE_LOAD );
|
|
pGuildServer->SendToAllGameServers( &msg, sizeof(msg) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_JOIN_GUILD_CMD cmsg;
|
|
cmsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
pMember->SerializeBaseMemberInfo( cmsg.m_Info, SERIALIZE_LOAD );
|
|
pGuildServer->ConnectSessions.SendToWorld( &cmsg, sizeof(cmsg) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_WITHDRAW_ACK)
|
|
{
|
|
MSG_DZ_GUILD_WITHDRAW_ACK * pRecvMsg = (MSG_DZ_GUILD_WITHDRAW_ACK *)pMsg;
|
|
|
|
TCHAR szCharName[MAX_CHARNAME_LENGTH+1];
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, szCharName, MAX_CHARNAME_LENGTH );
|
|
szCharName[MAX_CHARNAME_LENGTH] = '\0';
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.LeaveGuild( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_WITHDRAW_ACK)] Fail, GuildGuid = %d, CharGuid = %d, rc = %d",
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid, rc );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_GUILD_WITHDRAW_BRD msgBRD;
|
|
msgBRD.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgBRD.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgBRD.m_CharGuid = pRecvMsg->m_CharGuid;
|
|
strncpy(msgBRD.m_szCharName, szCharName, _countof(msgBRD.m_szCharName));
|
|
msgBRD.m_szCharName[_countof(msgBRD.m_szCharName) - 1] = '\0';
|
|
msgBRD.m_MemberPenaltyTime = pRecvMsg->m_MemberPenaltyTime;
|
|
msgBRD.m_byPenaltyType = pRecvMsg->m_byPenaltyType;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &msgBRD, sizeof(msgBRD) );
|
|
|
|
// Send To WorldServer
|
|
MSG_WZ_GUILD_WITHDRAW_GUILD_CMD msgCMD;
|
|
msgCMD.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgCMD.m_CharGuid = pRecvMsg->m_CharGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld( &msgCMD, sizeof(msgCMD) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_SELECT_ACK)
|
|
{
|
|
MSG_DZ_GUILD_SELECT_ACK* pRecvMsg = (MSG_DZ_GUILD_SELECT_ACK*)pMsg;
|
|
|
|
//로그인시 SELECT 호출이면...
|
|
if( pRecvMsg->m_bySelectType == 1 )
|
|
{
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
|
|
// 로그인시 select ack가 왔다는 것은 길드 서버에 해당 길드 정보가 없다는 뜻이다. 길드서버에서 새로 만든다.
|
|
g_GuildManager.SerializeGuildInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_GuildInfo, SERIALIZE_STORE );
|
|
g_GuildManager.SerializeCorpsInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_CorpsTotalInfo, SERIALIZE_STORE );
|
|
g_GuildManager.SerializeServerMemberTotalInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_MemberTotalInfo, SERIALIZE_STORE );
|
|
g_GuildManager.Login( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_LoginCharGuid );
|
|
g_GuildManager.SetGuildNotice( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_szGuildNotice );
|
|
if (GuildSmallContentsEntry::GuildPenalty::IsGuildDestroyWaitState(
|
|
pRecvMsg->m_GuildInfo.m_GuildGuid)) {
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_GUILD_LOGIN_CHAR_BRD brdMsg;
|
|
brdMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
g_GuildManager.SerializeGuildInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, brdMsg.m_GuildInfo, SERIALIZE_LOAD );
|
|
g_GuildManager.SerializeCorpsInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, brdMsg.m_CorpsTotalInfo, SERIALIZE_LOAD );
|
|
g_GuildManager.GetGuildMemberInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_LoginCharGuid, brdMsg.m_MemberInfo );
|
|
pGuildServer->SendToAllGameServers( &brdMsg, sizeof(brdMsg) );
|
|
|
|
MSG_WZ_GUILD_LOGIN_CHAR_CMD cmd;
|
|
g_GuildManager.GetWorldGuildInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, cmd.m_WorldGuildInfo );
|
|
g_GuildManager.GetGuildBaseMemberInfo( pRecvMsg->m_GuildInfo.m_GuildGuid, pRecvMsg->m_LoginCharGuid, cmd.m_BaseMemberInfo );
|
|
pGuildServer->ConnectSessions.SendToWorld( &cmd, sizeof(cmd) );
|
|
}
|
|
else
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_SELECT_ACK)] 넌뭐냐? 아직 로그인시 빼곤 예외 상황 없다." );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_NAK * pRecvMsg = (MSG_DZ_GUILD_CREATE_NAK *)pMsg;
|
|
|
|
MSG_GZ_GUILD_CREATE_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_NAK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_NAK * pRecvMsg = (MSG_DZ_GUILD_DESTROY_NAK *)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_DESTROY_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_JOIN_NAK)
|
|
{
|
|
MSG_DZ_GUILD_JOIN_NAK * pRecvMsg = (MSG_DZ_GUILD_JOIN_NAK *)pMsg;
|
|
|
|
MSG_GZ_GUILD_JOIN_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
strncpy(msg.m_szTargetCharName, pRecvMsg->m_tszCharName, _countof(msg.m_szTargetCharName));
|
|
msg.m_szTargetCharName[_countof(msg.m_szTargetCharName) - 1] = '\0';
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_WITHDRAW_NAK)
|
|
{
|
|
MSG_DZ_GUILD_WITHDRAW_NAK * pRecvMsg = (MSG_DZ_GUILD_WITHDRAW_NAK *)pMsg;
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_SELECT_NAK)
|
|
{
|
|
MSG_DZ_GUILD_SELECT_NAK * pRecvMsg = (MSG_DZ_GUILD_SELECT_NAK *)pMsg;
|
|
}
|
|
|
|
// 강퇴 결과
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_KICKPLAYER_ACK)
|
|
{
|
|
MSG_DZ_GUILD_KICKPLAYER_ACK* pRecvMsg = (MSG_DZ_GUILD_KICKPLAYER_ACK*)pMsg;
|
|
|
|
TCHAR szCharName[MAX_CHARNAME_LENGTH+1];
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid, szCharName, MAX_CHARNAME_LENGTH );
|
|
szCharName[MAX_CHARNAME_LENGTH] = '\0';
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.KickMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_OperCharGuid, pRecvMsg->m_TargetCharGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_KICKPLAYER_ACK)] Fail, GuildGuid = %u, CharGuid = %u, Result = %d",
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid, rc );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_GUILD_KICKPLAYER_BRD brdACK;
|
|
brdACK.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdACK.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdACK.m_CharGuid = pRecvMsg->m_TargetCharGuid;
|
|
strncpy( brdACK.m_ptszCharName, szCharName, MAX_CHARNAME_LENGTH );
|
|
brdACK.m_ptszCharName[MAX_CHARNAME_LENGTH]='\0';
|
|
brdACK.m_GuildPenaltyTime = pRecvMsg->m_GuildPenaltyTime;
|
|
brdACK.m_MemberPenaltyTime = pRecvMsg->m_MemberPenaltyTime;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &brdACK, sizeof(brdACK) );
|
|
|
|
MSG_WZ_GUILD_KICK_PLAYER_CMD msgCMD;
|
|
msgCMD.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgCMD.m_KickCharGuid = pRecvMsg->m_TargetCharGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld(&msgCMD, sizeof(msgCMD));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_KICKPLAYER_NAK)
|
|
{
|
|
MSG_DZ_GUILD_KICKPLAYER_NAK* pRecvMsg = (MSG_DZ_GUILD_KICKPLAYER_NAK*)pMsg;
|
|
}
|
|
|
|
// 길드 공지 변경
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_NOTICE_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_CHANGE_NOTICE_ACK, pRecvMsg, pMsg);
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
g_GuildManager.SetGuildNotice( pRecvMsg->m_GuildGuid, pRecvMsg->m_tszGuildNotice );
|
|
|
|
MSG_WZ_GUILD_CHANGE_NOTICE_CMD msg;
|
|
msg.m_eNoticeType = eGUILD_NOTICE_GUILD;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_wNoticeLen = (WORD)_tcslen(pRecvMsg->m_tszGuildNotice);
|
|
strncpy(msg.m_szGuildNotice, pRecvMsg->m_tszGuildNotice, MAX_GUILDNOTICE_LENGTH );
|
|
msg.m_szGuildNotice[MAX_GUILDNOTICE_LENGTH] = '\0';
|
|
pGuildServer->ConnectSessions.SendToWorld(&msg, msg.GetSize());
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_NOTICE_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_CHANGE_NOTICE_NAK, pRecvMsg, pMsg);
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_WZ_GUILD_CHANGE_NOTICE_NAK msg;
|
|
//msg.m_OperCharGuid = pRecvMsg->m_OperCharGuid;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->ConnectSessions.SendToWorld(&msg, sizeof(msg));
|
|
}
|
|
|
|
////////////////
|
|
// 길드 포인트 관련
|
|
|
|
// UP 적립
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DONATE_UP_ACK)
|
|
{
|
|
MSG_DZ_GUILD_DONATE_UP_ACK *pRecvMsg = (MSG_DZ_GUILD_DONATE_UP_ACK*)pMsg;
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.DonateUP( pRecvMsg->m_GuildGuid, pRecvMsg->m_TotalUP, pRecvMsg->m_OperCharGuid, pRecvMsg->m_DonateUP );
|
|
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_DONATE_UP_ACK)] Error! GuildGuid = %u, UP = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_TotalUP );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_GUILD_DONATE_UP_BRD sendMsg;
|
|
sendMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
sendMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
sendMsg.m_TotalUP = pRecvMsg->m_TotalUP;
|
|
sendMsg.m_DonateUP = pRecvMsg->m_DonateUP;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &sendMsg, sizeof(sendMsg) );
|
|
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DONATE_UP_NAK)
|
|
{
|
|
MSG_DZ_GUILD_DONATE_UP_NAK *pRecvMsg = (MSG_DZ_GUILD_DONATE_UP_NAK*)pMsg;
|
|
|
|
MSG_GZ_GUILD_DONATE_UP_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
}
|
|
|
|
// UP->GP 변환
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CONVERT_UP2GP_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CONVERT_UP2GP_ACK *pRecvMsg = (MSG_DZ_GUILD_CONVERT_UP2GP_ACK*)pMsg;
|
|
|
|
g_GuildManager.SetPoint( pRecvMsg->m_GuildGuid, pRecvMsg->m_TotalGP, pRecvMsg->m_RemainUP );
|
|
|
|
MSG_GZ_GUILD_CONVERT_UP2GP_BRD sendMsg;
|
|
sendMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
sendMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
sendMsg.m_RemainUP = pRecvMsg->m_RemainUP;
|
|
sendMsg.m_TotalGP = pRecvMsg->m_TotalGP;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &sendMsg, sizeof(sendMsg) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CONVERT_UP2GP_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CONVERT_UP2GP_NAK *pRecvMsg = (MSG_DZ_GUILD_CONVERT_UP2GP_NAK*)pMsg;
|
|
MSG_GZ_GUILD_CONVERT_UP2GP_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
}
|
|
|
|
#if 0 // protocol removed from eGZ/eDZ enums
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RANKUP_ACK)
|
|
{
|
|
MSG_DZ_GUILD_RANKUP_ACK *pRecvMsg = (MSG_DZ_GUILD_RANKUP_ACK*)pMsg;
|
|
|
|
g_GuildManager.RankUpGuild( pRecvMsg->m_GuildGuid );
|
|
|
|
MSG_GZ_GUILD_RANKUP_BRD sendMsg;
|
|
sendMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
sendMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
sendMsg.m_byLevel = (BYTE)pRecvMsg->m_NowLevel;
|
|
sendMsg.m_RemainGP = pRecvMsg->m_RemainGP;
|
|
sendMsg.m_RemainUP = pRecvMsg->m_RemainUP;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &sendMsg, sizeof(sendMsg) );
|
|
}
|
|
|
|
|
|
#endif
|
|
#if 0 // protocol removed from eGZ/eDZ enums
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RANKUP_NAK)
|
|
{
|
|
MSG_DZ_GUILD_RANKUP_NAK *pRecvMsg = (MSG_DZ_GUILD_RANKUP_NAK*)pMsg;
|
|
|
|
g_GuildManager.SetGuildTransaction( pRecvMsg->m_GuildGuid, GUILD_TRANS_RANKUP_END );
|
|
|
|
MSG_GZ_GUILD_RANKUP_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
|
|
DISPMSG( "DZ_GUILD_RANKUP_NAK[GuildGuid:%u][UserKey:%u]\n", pRecvMsg->m_GuildGuid, pRecvMsg->m_dwKey );
|
|
}
|
|
|
|
#endif
|
|
#ifdef __NA_000000_20070528_TAIWAN_GUILD_PVP
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHUNTING_PVP_RESULT_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CHUNTING_PVP_RESULT_ACK * pRecvMsg = (MSG_DZ_GUILD_CHUNTING_PVP_RESULT_ACK *)pMsg;
|
|
|
|
MSG_GZ_GUILD_CHUNTING_PVP_RESULT_BRD msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_PVPInfo = pRecvMsg->m_PVPInfo;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &msg, sizeof(msg) );
|
|
|
|
// Send To WorldServer
|
|
MSG_WZ_GUILD_CHUNTING_PVP_RESULT_CMD cmsg;
|
|
cmsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
cmsg.m_PVPInfo = pRecvMsg->m_PVPInfo;
|
|
pGuildServer->ConnectSessions.SendToWorld( &cmsg, sizeof(cmsg) );
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
//길드 직책 ack
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_DUTY_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_DUTY_ACK *pRecvMsg = (MSG_DZ_GUILD_CHANGE_DUTY_ACK *)pMsg;
|
|
|
|
if( !g_GuildManager.ChangeMemberDuty( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid, pRecvMsg->m_eTargetChangeDuty ) )
|
|
{
|
|
//실패했다.. NAK는 보내지 말고 실패 로그는 내부에서 찍는다.
|
|
return;
|
|
}
|
|
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_CHANGE_DUTY_BRD gsMSG;
|
|
gsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
gsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid, gsMSG.m_szTargetCharName, MAX_CHARNAME_LENGTH );
|
|
gsMSG.m_byDuty = pRecvMsg->m_eTargetChangeDuty;
|
|
|
|
//모든 게임서버가 모든 길드원의 정보를 모두 가지고 있는가?
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &gsMSG, sizeof(gsMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_CHANGE_DUTY_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_TargetCharGuid = pRecvMsg->m_TargetCharGuid;
|
|
wsMSG.m_eGuildDuty = pRecvMsg->m_eTargetChangeDuty;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
|
|
//트랜잭션 종료
|
|
g_GuildManager.SetGuildTransaction( pRecvMsg->m_GuildGuid, GUILD_TRANS_CHANGE_DUTY_END );
|
|
}
|
|
|
|
//길드 직책 nak
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_DUTY_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_DUTY_NAK *pRecvMsg = (MSG_DZ_GUILD_CHANGE_DUTY_NAK *)pMsg;
|
|
|
|
MSG_GZ_GUILD_CHANGE_DUTY_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = RC::RC_GUILD_CHANGE_MEMBER_DUTY_FAILED;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &nakMsg, sizeof(MSG_GZ_GUILD_CHANGE_DUTY_NAK) );
|
|
|
|
//트랜잭션 종료
|
|
g_GuildManager.SetGuildTransaction( pRecvMsg->m_GuildGuid, GUILD_TRANS_CHANGE_DUTY_END );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RIGHT_DELEGATION_ACK)
|
|
{
|
|
MSG_DZ_GUILD_RIGHT_DELEGATION_ACK* pRecvMsg = (MSG_DZ_GUILD_RIGHT_DELEGATION_ACK*)pMsg;
|
|
|
|
g_GuildManager.ChangeDelegateRight( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetGuid, pRecvMsg->m_DelegateRight );
|
|
|
|
//위임된 권한은 지시자와 당자사만 알고 있으면 된다.
|
|
MSG_GZ_GUILD_RIGHT_DELEGATION_BRD gsMsg;
|
|
gsMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
gsMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetGuid, gsMsg.m_szTargetCharName, MAX_CHARNAME_LENGTH );
|
|
CopyMemory( gsMsg.m_DelegateRight, pRecvMsg->m_DelegateRight, sizeof(gsMsg.m_DelegateRight) );
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &gsMsg, sizeof(gsMsg) );
|
|
}
|
|
|
|
//길드 직책 nak
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RIGHT_DELEGATION_NAK)
|
|
{
|
|
MSG_DZ_GUILD_RIGHT_DELEGATION_NAK* pRecvMsg = (MSG_DZ_GUILD_RIGHT_DELEGATION_NAK*)pMsg;
|
|
|
|
MSG_GZ_GUILD_RIGHT_DELEGATION_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = RC::RC_GUILD_CHANGE_MEMBER_RIGHT_FAILED;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers( &nakMsg, sizeof(MSG_GZ_GUILD_RIGHT_DELEGATION_NAK) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_MASTER_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_MASTER_ACK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_MASTER_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
if( !g_GuildManager.ChangeMaster( pRecvMsg->m_GuildGuid, pRecvMsg->m_OldMasterCharGuid, pRecvMsg->m_NewMasterCharGuid, pRecvMsg->m_nMasterChangeTime ) )
|
|
{
|
|
// 여기로 오면 안된다.. 로그는 위 함수 안에서 남긴다.
|
|
return;
|
|
}
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_CHANGE_MASTER_BRD gsMSG;
|
|
gsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
gsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
gsMSG.m_OldMasterCharGuid = pRecvMsg->m_OldMasterCharGuid;
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_OldMasterCharGuid, gsMSG.m_szOldMasterCharName, MAX_CHARNAME_LENGTH );
|
|
gsMSG.m_NewMasterCharGuid = pRecvMsg->m_NewMasterCharGuid;
|
|
g_GuildManager.GetCharName( pRecvMsg->m_GuildGuid, pRecvMsg->m_NewMasterCharGuid, gsMSG.m_szNewMasterCharName, MAX_CHARNAME_LENGTH );
|
|
pGuildServer->SendToAllGameServers( &gsMSG, sizeof(gsMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_CHANGE_MASTER_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_OldMasterGuid = pRecvMsg->m_OldMasterCharGuid;
|
|
wsMSG.m_NewMasterGuid = pRecvMsg->m_NewMasterCharGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
}
|
|
|
|
//길드 직책 nak
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_MASTER_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_MASTER_NAK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_MASTER_NAK *)pMsg;
|
|
|
|
MSG_GZ_GUILD_CHANGE_MASTER_NAK nakMsg;
|
|
nakMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMsg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
|
|
}
|
|
|
|
// 길드 군단 생성
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_CORPS_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_CORPS_ACK* pRecvMsg = (MSG_DZ_GUILD_CREATE_CORPS_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
//현재
|
|
RC::eGUILD_RESULT rc = g_GuildManager.CreateCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_TargetCharGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_CREATE_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_CREATE_CORPS_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum );
|
|
return;
|
|
}
|
|
|
|
GuildMember* pCommander = g_GuildManager.FindGuildMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid );
|
|
if( !pCommander ) return;
|
|
|
|
//GAME서버로 보낸다. ==> 게임서버에서는 바로 유저에게 통과시킨다.
|
|
MSG_GZ_GUILD_CREATE_CORPS_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
strncpy(brdMSG.m_szTargetCharName, pCommander->GetCharName(),
|
|
_countof(brdMSG.m_szTargetCharName));
|
|
brdMSG.m_szTargetCharName[_countof(brdMSG.m_szTargetCharName) - 1] = '\0';
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_CORPS_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_CORPS_NAK* pRecvMsg = (MSG_DZ_GUILD_CREATE_CORPS_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_CREATE_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드 군단 해산
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_CORPS_ACK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_CORPS_ACK* pRecvMsg = (MSG_DZ_GUILD_DESTROY_CORPS_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
//현재
|
|
RC::eGUILD_RESULT rc = g_GuildManager.DestoryCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_OperCharGuid );
|
|
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_DESTROY_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_DESTROY_CORPS_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum );
|
|
return;
|
|
}
|
|
|
|
//GAME서버로 보낸다. ==> 게임서버에는 보낼 필요가 없을거 같다.
|
|
MSG_GZ_GUILD_DESTROY_CORPS_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_CORPS_NAK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_CORPS_NAK* pRecvMsg = (MSG_DZ_GUILD_DESTROY_CORPS_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_DESTROY_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드 군단장 변경
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_COMMANDER_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_COMMANDER_ACK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_COMMANDER_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.ChangeCommander( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_TargetGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_CHANGE_COMMANDER_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_CHANGE_COMMANDER_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d, CharGuid = %u, rc = %d",
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_TargetGuid, rc );
|
|
return;
|
|
}
|
|
|
|
GuildMember* pMember = g_GuildManager.FindGuildMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetGuid );
|
|
if( !pMember ) return;
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_CHANGE_COMMANDER_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
strncpy(brdMSG.m_szTargetCharName, pMember->GetCharName(), _countof(brdMSG.m_szTargetCharName));
|
|
brdMSG.m_szTargetCharName[_countof(brdMSG.m_szTargetCharName) - 1] = '\0';
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_CHANGE_COMMANDER_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
wsMSG.m_TargetCharGuid = pRecvMsg->m_TargetGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_COMMANDER_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_COMMANDER_NAK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_COMMANDER_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_CHANGE_COMMANDER_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드 군단 이동
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_CORPS_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_CORPS_ACK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_CORPS_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
//현재
|
|
RC::eGUILD_RESULT rc = g_GuildManager.ChangeCorps( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetGuid, pRecvMsg->m_byCorpsNum );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_CHANGE_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_CHANGE_CORPS_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum );
|
|
return;
|
|
}
|
|
|
|
GuildMember* pMember = g_GuildManager.FindGuildMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetGuid );
|
|
if( !pMember ) return;
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_CHANGE_CORPS_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_TargetCharGuid = pRecvMsg->m_TargetGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
strncpy(brdMSG.m_szTargetCharName, pMember->GetCharName(), _countof(brdMSG.m_szTargetCharName));
|
|
brdMSG.m_szTargetCharName[_countof(brdMSG.m_szTargetCharName) - 1] = '\0';
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_CHANGE_CORPS_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
wsMSG.m_TargetCharGuid = pRecvMsg->m_TargetGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CHANGE_CORPS_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CHANGE_CORPS_NAK* pRecvMsg = (MSG_DZ_GUILD_CHANGE_CORPS_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_CHANGE_CORPS_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드 훈련캠프 생성
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_REAR_CAMP_ACK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_REAR_CAMP_ACK* pRecvMsg = (MSG_DZ_GUILD_CREATE_REAR_CAMP_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.CreateRearCamp( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_TargetCharGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_CREATE_REAR_CAMP_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_CREATE_REAR_CAMP_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum );
|
|
return;
|
|
}
|
|
|
|
GuildMember* pMember = g_GuildManager.FindGuildMember( pRecvMsg->m_GuildGuid, pRecvMsg->m_TargetCharGuid );
|
|
if( !pMember ) return;
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_CREATE_REAR_CAMP_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
strncpy(brdMSG.m_szTargetCharName, pMember->GetCharName(), _countof(brdMSG.m_szTargetCharName));
|
|
brdMSG.m_szTargetCharName[_countof(brdMSG.m_szTargetCharName) - 1] = '\0';
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_CREATE_REAR_CAMP_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_CREATE_REAR_CAMP_NAK)
|
|
{
|
|
MSG_DZ_GUILD_CREATE_REAR_CAMP_NAK* pRecvMsg = (MSG_DZ_GUILD_CREATE_REAR_CAMP_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_CREATE_REAR_CAMP_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드 훈련캠프 해산
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_REAR_CAMP_ACK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_REAR_CAMP_ACK* pRecvMsg = (MSG_DZ_GUILD_DESTROY_REAR_CAMP_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
RC::eGUILD_RESULT rc = g_GuildManager.DestroyRearCamp( pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum, pRecvMsg->m_OperCharGuid );
|
|
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
MSG_GZ_GUILD_DESTROY_REAR_CAMP_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = rc;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
SUNLOG( eCRITICAL_LOG, "[DZ_GUILD_DESTROY_REAR_CAMP_ACK] DB Success But GuildServer Fail, Guild = %u, CorpsNum = %d", pRecvMsg->m_GuildGuid, pRecvMsg->m_byCorpsNum );
|
|
return;
|
|
}
|
|
|
|
//GAME서버로 보낸다.
|
|
MSG_GZ_GUILD_DESTROY_REAR_CAMP_BRD brdMSG;
|
|
brdMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
brdMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
pGuildServer->SendToAllGameServers( &brdMSG, sizeof(brdMSG) );
|
|
|
|
//월드서버로 보낸다.
|
|
MSG_WZ_GUILD_DESTROY_REAR_CAMP_CMD wsMSG;
|
|
wsMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
wsMSG.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
wsMSG.m_byCorpsNum = pRecvMsg->m_byCorpsNum;
|
|
pGuildServer->ConnectSessions.SendToWorld( &wsMSG, sizeof(wsMSG) );
|
|
}
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_REAR_CAMP_NAK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_REAR_CAMP_NAK* pRecvMsg = (MSG_DZ_GUILD_DESTROY_REAR_CAMP_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
MSG_GZ_GUILD_DESTROY_REAR_CAMP_NAK nakMSG;
|
|
nakMSG.m_dwKey = pRecvMsg->m_dwKey;
|
|
nakMSG.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMSG, sizeof(nakMSG) );
|
|
}
|
|
|
|
// 길드멤버 로그아웃
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_LOGOUT_CHAR_CMD)
|
|
{
|
|
MSG_DZ_GUILD_LOGOUT_CHAR_CMD* pRecvMsg = (MSG_DZ_GUILD_LOGOUT_CHAR_CMD*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
//1. 길드서버의 해당 유저의 정보를 로그아웃으로 변경한다.
|
|
RC::eGUILD_RESULT rc = g_GuildManager.Logout( pRecvMsg->m_GuildGuid, pRecvMsg->m_CharGuid );
|
|
if( rc != RC::RC_GUILD_SUCCESS )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "Handler_FromDBProxyServer_IMPL(DZ_GUILD_LOGOUT_CHAR_CMD) 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 );
|
|
pGuildServer->SendToAllGameServers( &brdMsg, sizeof(brdMsg) );
|
|
|
|
//3. 월드서버로 보낸다.
|
|
MSG_WZ_GUILD_LOGOUT_CHAR_CMD cmdMsg;
|
|
cmdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
cmdMsg.m_CharGuid = pRecvMsg->m_CharGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld( &cmdMsg, sizeof(cmdMsg) );
|
|
}
|
|
|
|
// GM명령어 길드포인트
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GM_GUILD_POINT_ACK)
|
|
{
|
|
MSG_DZ_GUILD_GM_GUILD_POINT_ACK* pRecvMsg = (MSG_DZ_GUILD_GM_GUILD_POINT_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( !pGuildServer ) return;
|
|
|
|
//1. 길드서버의 해당 유저의 정보를 로그아웃으로 변경한다.
|
|
BOOL bRet = g_GuildManager.SetPoint( pRecvMsg->m_GuildGuid, pRecvMsg->m_GP, pRecvMsg->m_UP );
|
|
if( !bRet )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "Handler_FromDBProxyServer_IMPL(DZ_GUILD_GM_GUILD_POINT_ACK) Fail, GuildGuid = %u, GP = %d, UP = %d",
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_GP, pRecvMsg->m_UP );
|
|
return;
|
|
}
|
|
|
|
//2. 게임서버로 보낸다.
|
|
MSG_GZ_GUILD_GM_GUILD_POINT_BRD brdMsg;
|
|
brdMsg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
brdMsg.m_UP = pRecvMsg->m_UP;
|
|
brdMsg.m_GP = pRecvMsg->m_GP;
|
|
pGuildServer->SendToAllGameServers( &brdMsg, sizeof(brdMsg) );
|
|
}
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GM_GUILD_POINT_NAK)
|
|
{
|
|
MSG_DZ_GUILD_GM_GUILD_POINT_NAK* pRecvMsg = (MSG_DZ_GUILD_GM_GUILD_POINT_NAK*)pMsg;
|
|
|
|
MSG_GZ_GUILD_GM_GUILD_POINT_NAK nakMsg;
|
|
nakMsg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
GuildServer::GetMainFrame()->SendToSession( pRecvMsg->m_dwSessionIndex, &nakMsg, sizeof(nakMsg) );
|
|
}
|
|
|
|
// 군단 정보 요청 실패.
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_SELECT_CORPS_NAK)
|
|
{
|
|
MSG_DZ_GUILD_SELECT_CORPS_NAK* pRecvMsg = (MSG_DZ_GUILD_SELECT_CORPS_NAK*)pMsg;
|
|
SUNLOG( eCRITICAL_LOG, "[Handler_FromDBProxyServer_IMPL(DZ_GUILD_SELECT_CORPS_NAK)] GuildGuid = %u", pRecvMsg->m_GuildGuid );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_ACK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
if(RC:: RC_GUILD_SUCCESS == GuildSmallContentsEntry::RelationSystem::AddRelation(
|
|
pRecvMsg->m_GuildGuid, pRecvMsg->m_RelationGuildGuid,
|
|
pRecvMsg->m_eRelationType, pRecvMsg->m_tszRELGuildName))
|
|
{
|
|
|
|
MSG_GZ_GUILD_RELATION_BRD msgToGameServer;
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_eRelationType = pRecvMsg->m_eRelationType;
|
|
msgToGameServer.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgToGameServer.m_RelationGuildGuid = pRecvMsg->m_RelationGuildGuid;
|
|
util::GUILDNAMECOPY(msgToGameServer.m_tszRelationGuildName, pRecvMsg->m_tszRELGuildName);
|
|
|
|
Guild* pRequestGuild = g_GuildManager.FindGuild(pRecvMsg->m_GuildGuid);
|
|
if(pRequestGuild) {
|
|
util::GUILDNAMECOPY(msgToGameServer.m_tszRequestGuildName, pRequestGuild->GetGuildName());
|
|
}
|
|
|
|
pGuildServer->SendToAllGameServers(&msgToGameServer, sizeof(msgToGameServer));
|
|
}
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_NAK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_RELATION_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToAllGameServers(&msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_DELETE_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_DELETE_ACK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
if(RC:: RC_GUILD_SUCCESS == GuildSmallContentsEntry::RelationSystem::RemoveRelation(
|
|
pRecvMsg->m_GuildGuid,
|
|
pRecvMsg->m_RelGuildGuid, pRecvMsg->m_eType))
|
|
{
|
|
MSG_GZ_GUILD_RELATION_DELETE_BRD msgToGameServer;
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_eType= pRecvMsg->m_eType;
|
|
msgToGameServer.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgToGameServer.m_RelGuildGuid = pRecvMsg->m_RelGuildGuid;
|
|
pGuildServer->SendToAllGameServers(&msgToGameServer, sizeof(msgToGameServer));
|
|
}
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_DELETE_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_DELETE_NAK , pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_RELATION_DELETE_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_eType = pRecvMsg->m_eType;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_RelGuildGuid = pRecvMsg->m_RelGuildGuid;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToAllGameServers(&msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_BOTH_AGAINST_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_BOTH_AGAINST_ACK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
if(RC:: RC_GUILD_SUCCESS == GuildSmallContentsEntry::RelationSystem::AddRelation(
|
|
pRecvMsg->m_GuildGuid,
|
|
pRecvMsg->m_RelGuildGuid, pRecvMsg->m_eRelType))
|
|
{
|
|
MSG_GZ_GUILD_RELATION_BOTH_AGAINST_BRD msgToGameServer;
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msgToGameServer.m_RelGuildGuid = pRecvMsg->m_RelGuildGuid;
|
|
pGuildServer->SendToAllGameServers(&msgToGameServer, sizeof(msgToGameServer));
|
|
}
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_BOTH_AGAINST_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_BOTH_AGAINST_NAK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_RELATION_BOTH_AGAINST_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_RelGuildGuid = pRecvMsg->m_RelGuildGuid;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToAllGameServers(&msg, sizeof(msg));
|
|
}
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_INFO_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_INFO_ACK, pRecvMsg, pMsg);
|
|
GuildSmallContentsEntry::RelationSystem::SaveRelationInfo(&pRecvMsg ->m_AddInfo);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_RELATION_INFO_BRD SendToGameServer;
|
|
SendToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
SendToGameServer.m_AddInfo.m_GuildGuid = pRecvMsg->m_AddInfo.m_GuildGuid;
|
|
SendToGameServer.m_byRelCnt = pRecvMsg->m_AddInfo.m_byRelationGuildCnt;
|
|
GuildSmallContentsEntry::RelationSystem::LoadRelationInfo(&SendToGameServer.m_AddInfo);
|
|
pGuildServer->SendToAllGameServers(&SendToGameServer, SendToGameServer.GetSize());
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RELATION_INFO_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_RELATION_INFO_NAK, pRecvMsg, pMsg);
|
|
|
|
MSG_DZ_GUILD_RELATION_INFO_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
GuildServer::GetMainFrame()->SendToAllGameServers(&msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RECOVERY_GUILD_ACK)
|
|
{
|
|
MSG_DZ_GUILD_RECOVERY_GUILD_ACK *pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_RECOVERY_GUILD_ACK*>(pMsg);
|
|
|
|
if(!GuildSmallContentsEntry::GuildPenalty::GuildRecovery(
|
|
pRecvMsg->m_CharGuid, pRecvMsg->m_GuildGuid))
|
|
return; //TODO : 로그를 남기자.
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_RECOVERY_GUILD_BRD msgBRD;
|
|
msgBRD.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgBRD.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
pGuildServer->SendToAllGameServers(&msgBRD, sizeof(msgBRD));
|
|
|
|
MSG_WZ_GUILD_RECOVERY_GUILD_CMD msgCMD;
|
|
msgCMD.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgCMD.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
pGuildServer->ConnectSessions.SendToWorld(&msgCMD, sizeof(msgCMD));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_RECOVERY_GUILD_NAK)
|
|
{
|
|
MSG_DZ_GUILD_RECOVERY_GUILD_NAK *pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_RECOVERY_GUILD_NAK*>(pMsg);
|
|
|
|
MSG_GZ_GUILD_RECOVERY_GUILD_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_CharGuid = pRecvMsg->m_CharGuid;
|
|
msg.m_byErrorCode = RC::RC_GUILD_RECOVERY_FAILED;
|
|
|
|
GuildServer *pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToAllGameServers(&msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_COMPLETE_ACK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_COMPLETE_ACK* receive_msg = static_cast<MSG_DZ_GUILD_DESTROY_COMPLETE_ACK*>(pMsg);
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산완료|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_COMPLETE_ACK)|MSG_DZ_GUILD_DESTROY_COMPLETE_ACK 받음|GuildGuid:%d, MasterCharGuid:%d|"),
|
|
receive_msg->m_GuildGuid,
|
|
receive_msg->m_MasterCharGuid);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
g_GuildManager.DestroyGuild(receive_msg->m_GuildGuid);
|
|
|
|
MSG_GZ_GUILD_DESTROY_BRD brd_msg;
|
|
//(shogen)(20090819)
|
|
//brd_msg.m_dwKey = receive_msg->m_dwKey;
|
|
brd_msg.m_dwKey = receive_msg->m_MasterCharGuid;
|
|
brd_msg.m_GuildGuid = receive_msg->m_GuildGuid;
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산완료|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_COMPLETE_ACK)|MSG_GZ_GUILD_DESTROY_BRD 보냄|GuildGuid:%d, MasterCharGuid:%u|"),
|
|
brd_msg.m_GuildGuid,
|
|
brd_msg.m_dwKey);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
GuildServer* guild_server = GuildServer::GetMainFrame();
|
|
guild_server->SendToAllGameServers(&brd_msg, sizeof(brd_msg));
|
|
|
|
// Send To WorldServer
|
|
MSG_WZ_GUILD_DESTROY_GUILD_CMD cmd_msg;
|
|
cmd_msg.m_GuildGuid = receive_msg->m_GuildGuid;
|
|
|
|
#ifdef _USING_GUILD_DESTROY_LOGGING
|
|
SUNLOG(eCRITICAL_LOG,
|
|
_T("|길드해산완료|Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_COMPLETE_ACK)|MSG_WZ_GUILD_DESTROY_GUILD_CMD 보냄|GuildGuid:%d|"), cmd_msg.m_GuildGuid);
|
|
#endif // _USING_GUILD_DESTROY_LOGGING
|
|
|
|
guild_server->ConnectSessions.SendToWorld(&cmd_msg, sizeof(cmd_msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_DESTROY_COMPLETE_NAK)
|
|
{
|
|
MSG_DZ_GUILD_DESTROY_COMPLETE_NAK* pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_DESTROY_COMPLETE_NAK*>(pMsg);
|
|
|
|
MSG_GZ_GUILD_DESTROY_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GUILDMARK_REGISTER_ACK)
|
|
{
|
|
MSG_DZ_GUILD_GUILDMARK_REGISTER_ACK *pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_GUILDMARK_REGISTER_ACK*>(pMsg);
|
|
|
|
/* 서버 마크 등록 */
|
|
GuildSmallContentsEntry::GuildMark::GuildMarkInfo info;
|
|
info.guild_Index = pRecvMsg->m_GuildIndex;
|
|
info.pattern_index = pRecvMsg->m_PatternIndex;
|
|
info.background_index = pRecvMsg->m_BackGroundIndex;
|
|
GuildSmallContentsEntry::GuildMark::RegisterMark(info);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
|
|
MSG_GZ_GUILD_GUILDMARK_REGISTER_BRD msgToGameServer;
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_SlotIdx = pRecvMsg->m_SlotIdx;
|
|
msgToGameServer.m_SlotPos = pRecvMsg->m_SlotPos;
|
|
msgToGameServer.m_GuildIndex = pRecvMsg->m_GuildIndex;
|
|
msgToGameServer.m_PatternIndex = pRecvMsg->m_PatternIndex;
|
|
msgToGameServer.m_BackGroundIndex = pRecvMsg->m_BackGroundIndex;
|
|
pGuildServer->SendToAllGameServers( &msgToGameServer, sizeof(msgToGameServer) );
|
|
|
|
MSG_WZ_GUILD_GUILDMARK_REGISTER_CMD msgToWorld;
|
|
msgToWorld.m_GuildGuid = pRecvMsg->m_GuildIndex;
|
|
msgToWorld.m_PatternIndex = pRecvMsg->m_PatternIndex;
|
|
msgToWorld.m_BackGroundIndex = pRecvMsg->m_BackGroundIndex;
|
|
pGuildServer->ConnectSessions.SendToWorld( &msgToWorld, sizeof(msgToWorld) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GUILDMARK_REGISTER_NAK)
|
|
{
|
|
MSG_DZ_GUILD_GUILDMARK_REGISTER_NAK *pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_GUILDMARK_REGISTER_NAK*>(pMsg);
|
|
|
|
MSG_GZ_GUILD_GUILDMARK_REGISTER_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_Result = pRecvMsg->m_Result;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GUILDMARK_DELETE_ACK)
|
|
{
|
|
MSG_DZ_GUILD_GUILDMARK_DELETE_ACK *pRecvMsg =
|
|
static_cast<MSG_DZ_GUILD_GUILDMARK_DELETE_ACK*>(pMsg);
|
|
|
|
/* 서버 마크 삭제 */
|
|
GuildSmallContentsEntry::GuildMark::GuildMarkInfo info;
|
|
info.guild_Index = pRecvMsg->m_GuildIndex;
|
|
info.pattern_index = pRecvMsg->m_PatternIndex;
|
|
info.background_index = pRecvMsg->m_BackGroundIndex;
|
|
GuildSmallContentsEntry::GuildMark::DeleteMark(info);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
MSG_GZ_GUILD_GUILDMARK_DELETE_BRD msgToGameServer;
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_GuildIndex = pRecvMsg->m_GuildIndex;
|
|
msgToGameServer.m_PatternIndex = pRecvMsg->m_PatternIndex;
|
|
msgToGameServer.m_BackGroundIndex = pRecvMsg->m_BackGroundIndex;
|
|
pGuildServer->SendToAllGameServers( &msgToGameServer, sizeof(msgToGameServer) );
|
|
|
|
MSG_WZ_GUILD_GUILDMARK_DELETE_CMD msgToWorld;
|
|
msgToWorld.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToWorld.m_GuildGuid = pRecvMsg->m_GuildIndex;
|
|
msgToWorld.m_PatternIndex = pRecvMsg->m_PatternIndex;
|
|
msgToWorld.m_BackGroundIndex = pRecvMsg->m_BackGroundIndex;
|
|
pGuildServer->ConnectSessions.SendToWorld( &msgToWorld, sizeof(msgToWorld) );
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_GUILDMARK_DELETE_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_GUILDMARK_DELETE_NAK , pRecvMsg, pMsg);
|
|
|
|
MSG_GZ_GUILD_GUILDMARK_DELETE_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_Result = pRecvMsg->m_Result;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_WAREHOUSE_OPEN_ACK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_WAREHOUSE_OPEN_ACK, pRecvMsg, pMsg);
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
// (f100527.3L)
|
|
if (sizeof(*pRecvMsg) < static_cast<ulong>(pRecvMsg->GetSize())) {
|
|
SUNLOG(eCRITICAL_LOG, _T("[%s]|Required='<=%d'|Inputed=%u|Msg=corrupted packet received|"),
|
|
__FUNCTION__, sizeof(*pRecvMsg), pRecvMsg->GetSize());
|
|
return;
|
|
}
|
|
|
|
GUILDGUID GuildGuid = pRecvMsg->m_GuildGuid;
|
|
CHARGUID OperCharGuid = pRecvMsg->m_OperCharGuid;
|
|
MONEY WarehouseMoney = pRecvMsg->m_WarehouseMoney;
|
|
|
|
BYTE SlotTabNum = pRecvMsg->m_SlotTabNum;
|
|
BOOL IsRight = g_GuildManager.CheckRight(GuildGuid, OperCharGuid, eGUILD_RIGHTS_WAREHOUSE_OUT);
|
|
|
|
// (f100527.3L)
|
|
const int guild_warehouse_stream_size = pRecvMsg->m_ItemInfo.GetSize();
|
|
//int size = sizeof(_GUILDWAREHOUSE_TOTAL_INFO) -
|
|
// (_GUILDWAREHOUSE_TOTAL_INFO::MAX_SLOT_NUM - pRecvMsg->m_ItemInfo.m_Count) *
|
|
// sizeof(_GUILDWAREHOUSE_TOTAL_INFO::SLOT_TYPE);
|
|
|
|
MSG_GZ_GUILD_WAREHOUSE_OPEN_BRD msgToGameServer;
|
|
if (guild_warehouse_stream_size == 0) { //compile debug
|
|
util::AssertCompileTimeVariableTypeEqual(msgToGameServer.m_ItemInfo, pRecvMsg->m_ItemInfo);
|
|
}
|
|
msgToGameServer.m_dwKey = pRecvMsg->m_dwKey;
|
|
msgToGameServer.m_GuildGuid = GuildGuid;
|
|
msgToGameServer.m_WarehouseRight = IsRight;
|
|
msgToGameServer.m_SlotTabNum = SlotTabNum;
|
|
msgToGameServer.m_OperCharGuid = OperCharGuid;
|
|
msgToGameServer.m_WarehouseMoney = WarehouseMoney;
|
|
CopyMemory(&msgToGameServer.m_ItemInfo, &pRecvMsg->m_ItemInfo, guild_warehouse_stream_size);
|
|
pGuildServer->SendToAllGameServers(&msgToGameServer, msgToGameServer.GetSize());
|
|
//pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msgToGameServer, msgToGameServer.GetSize());
|
|
|
|
//MSG_WZ_GUILD_WAREHOUSE_OPEN_CMD msgToWorld;
|
|
//msgToWorld.m_GuildGuid = GuildGuid;
|
|
//msgToWorld.m_OpenUserKey = OperCharGuid;
|
|
//pGuildServer->ConnectSessions.SendToWorld(&msgToWorld, sizeof(msgToWorld));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_WAREHOUSE_OPEN_NAK)
|
|
{
|
|
PACKET_PTR_CONVERT(MSG_DZ_GUILD_WAREHOUSE_OPEN_NAK, pRecvMsg, pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
MSG_GZ_GUILD_WAREHOUSE_OPEN_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_GuildGuid = pRecvMsg->m_GuildGuid;
|
|
msg.m_bErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToAllGameServers(&msg, sizeof(msg));
|
|
//pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
//pGuildServer->SendToSession()
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_NAME_CHANGE_ACK)
|
|
{
|
|
MSG_DZ_GUILD_NAME_CHANGE_ACK* pRecvMsg = (MSG_DZ_GUILD_NAME_CHANGE_ACK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
GUILDGUID GuildGuid = pRecvMsg->m_GuildGuid;
|
|
|
|
//{__NA001254_20090109_RTTG_FUNC_ADD
|
|
if( pRecvMsg->m_TargetPos == INVALID_POSTYPE_VALUE &&
|
|
pRecvMsg->m_OperCharGuid == 0 )//INVALID_CHARGUID )
|
|
{
|
|
// RTTG명령이 성공 했음을 알린다.
|
|
MSG_MZ_GUILD_NAME_CHANGE_ACK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
//}
|
|
if( pRecvMsg->m_TargetPos != INVALID_POSTYPE_VALUE &&
|
|
pRecvMsg->m_OperCharGuid != 0 )// INVALID_CHARGUID )
|
|
{
|
|
Guild* pGuild = g_GuildManager.FindGuild(GuildGuid);
|
|
const TCHAR* guild_name = (pGuild != NULL ? pGuild->GetGuildName() : "[Unknown]");
|
|
|
|
// 아이템 사용이 성공 했음을 알린다.
|
|
MSG_GZ_GUILD_NAME_CHANGE_ACK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_TargetPos = pRecvMsg->m_TargetPos;
|
|
//_NA_0_20100901_GUILD_NAME_CHANGE_ITEM_LOG
|
|
util::GUILDNAMECOPY(msg.m_tszCurrentGuildName, guild_name);
|
|
util::GUILDNAMECOPY(msg.m_tszchangeGuildName, pRecvMsg->m_tszGuildName);
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
// 현재 길드 서버의 길드명을 바꾼다.
|
|
g_GuildManager.ChangeGuildName(GuildGuid, pRecvMsg->m_tszGuildName);
|
|
|
|
// 연결된 모든 게임 서버에 길드명이 바뀌었음을 알린다.
|
|
MSG_GZ_GUILD_NAME_CHANGE_BRD msgBRD;
|
|
msgBRD.m_GuildGuid = GuildGuid;
|
|
util::GUILDNAMECOPY(msgBRD.m_tszGuildName, pRecvMsg->m_tszGuildName);
|
|
pGuildServer->SendToAllGameServers(&msgBRD, sizeof(msgBRD));
|
|
|
|
//월드 서버에 변경을 알린다.
|
|
MSG_WZ_GUILD_NAME_CHANGE_CMD Wmsg;
|
|
Wmsg.m_GuildGuid = GuildGuid;
|
|
util::GUILDNAMECOPY(Wmsg.m_tszGuildName, pRecvMsg->m_tszGuildName);
|
|
pGuildServer->ConnectSessions.SendToWorld(&Wmsg, sizeof(Wmsg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_GUILD_NAME_CHANGE_NAK)
|
|
{
|
|
MSG_DZ_GUILD_NAME_CHANGE_NAK* pRecvMsg = (MSG_DZ_GUILD_NAME_CHANGE_NAK*)pMsg;
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if(!pGuildServer) return;
|
|
|
|
//{__NA001254_20090109_RTTG_FUNC_ADD
|
|
if( pRecvMsg->m_TargetPos == INVALID_POSTYPE_VALUE &&
|
|
pRecvMsg->m_OperCharGuid == 0 )//INVALID_CHARGUID )
|
|
{
|
|
MSG_MZ_GUILD_NAME_CHANGE_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
return;
|
|
}
|
|
//}
|
|
MSG_GZ_GUILD_NAME_CHANGE_NAK msg;
|
|
msg.m_dwKey = pRecvMsg->m_dwKey;
|
|
msg.m_TargetPos = pRecvMsg->m_TargetPos;
|
|
msg.m_byErrorCode = pRecvMsg->m_byErrorCode;
|
|
pGuildServer->SendToSession(pRecvMsg->m_dwSessionIndex, &msg, sizeof(msg));
|
|
}
|
|
|
|
/************************************************************************/
|
|
/* 지역 점령전 시스템 작업 */
|
|
/************************************************************************/
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_INFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_INFO_ACK* recv_msg = static_cast<MSG_DZ_DOMINATION_INFO_ACK*>(pMsg);
|
|
|
|
DominationManager* domination_manager = DominationManager::Instance();
|
|
|
|
if (recv_msg->m_RsultCode == RC::DOMINATION_RESULT_FAIL)
|
|
{
|
|
domination_manager->SetLoadDominationInfo(false);
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Domintion info request fail");
|
|
return;
|
|
}
|
|
|
|
const BYTE number_of_records = recv_msg->m_NumRecords;
|
|
if (number_of_records > _countof(recv_msg->m_DominationInfo))
|
|
{
|
|
assert(!"Data num is incorrect");
|
|
SUNLOG(eCRITICAL_LOG, __FUNCTION__":Data num is incorrect : %d]",recv_msg->m_NumRecords);
|
|
return;
|
|
}
|
|
|
|
for (int i = 0; i < number_of_records; ++i)
|
|
{
|
|
const DOMINATION_INFO& curInfo = recv_msg->m_DominationInfo[i];
|
|
domination_manager->InsertDominationInfo(curInfo );
|
|
}
|
|
|
|
//load success
|
|
domination_manager->SetLoadDominationInfo(true);
|
|
SUNLOG(eCRITICAL_LOG, "Domination info load success : %d",number_of_records);
|
|
}
|
|
|
|
#ifdef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_AUCTION_INFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_AUCTION_INFO_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_AUCTION_INFO_ACK*>(pMsg);
|
|
|
|
DominationManager* domination_manager = DominationManager::Instance();
|
|
|
|
if (recv_msg->m_RsultCode == RC::DOMINATION_RESULT_FAIL)
|
|
{
|
|
domination_manager->SetLoadDominationAuctionInfo( FALSE );
|
|
|
|
SUNLOG( eCRITICAL_LOG, __FUNCTION__":Result fail" );
|
|
return;
|
|
}
|
|
|
|
//전달된 데이터의 레코드수 만큼의 데이터를 저장한다.
|
|
const BYTE data_count = recv_msg->m_DataCount;
|
|
|
|
if (data_count > _countof(recv_msg->m_DominationActionDBInfo))
|
|
{
|
|
assert(!"Over auction list");
|
|
SUNLOG(eCRITICAL_LOG, __FUNCTION__":Over auction list : %d, %d", recv_msg->m_MapCode, data_count);
|
|
return;
|
|
}
|
|
|
|
domination_manager->SetCheckActionInfo(recv_msg->m_MapCode);
|
|
|
|
for (int i = 0; i < data_count; ++i)
|
|
{
|
|
const DominationAuctionInfo& info = recv_msg->m_DominationActionDBInfo[i];
|
|
domination_manager->InsertActionInfo(info.m_ActionInfo.m_FieldCode, info);
|
|
}
|
|
SUNLOG(eCRITICAL_LOG,"Insert auction info : %d, %d", recv_msg->m_MapCode, data_count);
|
|
}
|
|
#else//_CH_20100420_CHANGE_DOMINATION_APPLY_WAY
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_AUCTION_INFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_AUCTION_INFO_ACK* pRecvMsg =
|
|
static_cast<MSG_DZ_DOMINATION_AUCTION_INFO_ACK*>(pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( pGuildServer == NULL )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Not Found pGuildServer\n" );
|
|
return;
|
|
}
|
|
|
|
if( pRecvMsg->m_RsultCode == RC::DOMINATION_RESULT_FAIL )
|
|
{
|
|
DominationManager::Instance()->SetLoadDominationAuctionInfo( FALSE );
|
|
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Result Fail\n" );
|
|
return;
|
|
}
|
|
|
|
//전달된 데이터의 레코드수 만큼의 데이터를 저장한다.
|
|
const BYTE number_of_data = pRecvMsg->NumRecords;
|
|
|
|
//절달된 패킷 내용이 최대 경매 리스트 갯수를 넘게 된다면 실패
|
|
if (number_of_data > _countof(pRecvMsg->m_DominationActionDBInfo))
|
|
{
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Over Action List");
|
|
return;
|
|
}
|
|
|
|
MAPCODE mapCode = pRecvMsg->m_MapCode;
|
|
DominationManager::Instance()->SetCheckActionInfo(mapCode);
|
|
|
|
for (int i = 0; i < number_of_data; ++i)
|
|
{
|
|
const DominationAuctionInfo& CurInfo = pRecvMsg->m_DominationActionDBInfo[i];
|
|
DominationManager::Instance()->InsertActionInfo(CurInfo.m_ActionInfo.m_FieldCode, CurInfo);
|
|
}
|
|
SUNLOG(eCRITICAL_LOG,"Insert auction info : %d , %d", mapCode, number_of_data);
|
|
}
|
|
#endif//_CH_20100420_CHANGE_DOMINATION_APPLY_WAY
|
|
|
|
//_KR_001385_20091105_DOMINATION_UPDATEDOMINATIONINFO
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_UPDATE_INFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_UPDATE_INFO_ACK* pRecvMsg = static_cast<MSG_DZ_DOMINATION_UPDATE_INFO_ACK*>(pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( pGuildServer == NULL )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Not Found pGuildServer" );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_DOMINATION_UPDATE_INFO_ACK sendMsg;
|
|
|
|
if( pRecvMsg->m_RsultCode == RC::DOMINATION_RESULT_FAIL )
|
|
{
|
|
sendMsg.m_ResultCode = pRecvMsg->m_RsultCode;
|
|
sendMsg.m_DominationInfo = pRecvMsg->m_DominationInfo;
|
|
pGuildServer->SendToAllGameServers(&sendMsg, sizeof(sendMsg));
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Data Update Result is Fail" );
|
|
|
|
return;
|
|
}
|
|
|
|
const DOMINATION_INFO& dominationInfo = pRecvMsg->m_DominationInfo;
|
|
|
|
DOMINATION_INFO* pInfo = DominationManager::Instance()->FindDominationInfo( pRecvMsg->m_DominationInfo.m_FieldCode );
|
|
|
|
if( pInfo )
|
|
{
|
|
switch ( pRecvMsg->m_eSetType )
|
|
{
|
|
case DOMINATION_DEFFENSEWALL_SET:
|
|
case DOMINATION_INIT:
|
|
case DOMINATION_INFO_SET:
|
|
(*pInfo) = pRecvMsg->m_DominationInfo;
|
|
break;
|
|
|
|
case DOMINATION_SUCCESS_DEFENCE:
|
|
pInfo->m_disGuildInfo.m_GuildGuid = 0;
|
|
break;
|
|
|
|
case DOMINATION_SUCCESS_OFFENCE:
|
|
pInfo->m_inGuildInfo = pRecvMsg->m_DominationInfo.m_disGuildInfo;
|
|
pInfo->m_disGuildInfo.m_GuildGuid = 0;
|
|
break;
|
|
|
|
case DOMINATION_DISGUILD_SET:
|
|
//현재 경매 정보에서 공격길드로 선정된 경매 리스트를 삭제 한다.
|
|
DominationManager::Instance()->DeleteActionList(dominationInfo.m_FieldCode,
|
|
dominationInfo.m_disGuildInfo.m_GuildGuid );
|
|
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//데이터가 존재 하지 않으면 새로 만들어 준다.
|
|
DominationManager::Instance()->InsertDominationInfo( dominationInfo );
|
|
}
|
|
|
|
sendMsg.m_ResultCode = pRecvMsg->m_RsultCode;
|
|
sendMsg.m_DominationInfo = pRecvMsg->m_DominationInfo;
|
|
sendMsg.m_eSetType = pRecvMsg->m_eSetType;
|
|
pGuildServer->SendToAllGameServers(&sendMsg, sizeof(sendMsg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_ACCEP_HEIM_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_ACCEP_HEIM_ACK* pRecvMsg = static_cast<MSG_DZ_DOMINATION_ACCEP_HEIM_ACK*>(pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( pGuildServer == NULL )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Not Found pGuildServer\n" );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_DOMINATION_ACCEP_HEIM_ACK sendMsg;
|
|
|
|
if( pRecvMsg->m_ResultCode != RC::DOMINATION_RESULT_SUCCESS )
|
|
{
|
|
sendMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
sendMsg.m_ResultCode = pRecvMsg->m_ResultCode;
|
|
sendMsg.m_DominationActionInfo = pRecvMsg->m_DominationActionInfo;
|
|
#ifdef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY
|
|
sendMsg.m_TokenPos = pRecvMsg->m_TokenPos;
|
|
sendMsg.number_of_betting_item = pRecvMsg->number_of_betting_item;
|
|
#endif
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Result Fail\n" );
|
|
}
|
|
else if( pRecvMsg->m_ResultCode == RC::DOMINATION_RESULT_SUCCESS )
|
|
{
|
|
const DominationAuctionInfo& curActionInfo = pRecvMsg->m_DominationActionInfo;
|
|
DominationManager::Instance()->InsertActionInfo(curActionInfo.m_ActionInfo.m_FieldCode, curActionInfo);
|
|
|
|
sendMsg.m_dwKey = pRecvMsg->m_dwKey;
|
|
sendMsg.m_ResultCode = pRecvMsg->m_ResultCode;
|
|
sendMsg.m_DominationActionInfo = pRecvMsg->m_DominationActionInfo;
|
|
#ifdef _CH_20100420_CHANGE_DOMINATION_APPLY_WAY
|
|
sendMsg.m_TokenPos = pRecvMsg->m_TokenPos;
|
|
sendMsg.number_of_betting_item = pRecvMsg->number_of_betting_item;
|
|
#endif
|
|
SUNLOG( eFULL_LOG, "["__FUNCTION__"]Update Success[Map:%d][Heim:%d]\n",
|
|
pRecvMsg->m_DominationActionInfo.m_ActionInfo.m_FieldCode, pRecvMsg->m_DominationActionInfo.m_ActionInfo.m_TenderCost );
|
|
}
|
|
|
|
pGuildServer->SendToAllGameServers(&sendMsg, sizeof(sendMsg));
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_INIT_AUCTIONINFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_INIT_AUCTIONINFO_ACK* pRecvMsg = static_cast<MSG_DZ_DOMINATION_INIT_AUCTIONINFO_ACK*>(pMsg);
|
|
|
|
GuildServer* pGuildServer = GuildServer::GetMainFrame();
|
|
if( pGuildServer == NULL )
|
|
{
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Not Found pGuildServer\n" );
|
|
return;
|
|
}
|
|
|
|
MSG_GZ_DOMINATION_INIT_ACTIONINFO_ACK sendMsg;
|
|
|
|
if( pRecvMsg->m_ResultCode != RC::DOMINATION_RESULT_SUCCESS )
|
|
{
|
|
sendMsg.m_ResultCode = pRecvMsg->m_ResultCode;
|
|
SUNLOG( eCRITICAL_LOG, "["__FUNCTION__"]Result Fail\n" );
|
|
}
|
|
else if( pRecvMsg->m_ResultCode == RC::DOMINATION_RESULT_SUCCESS )
|
|
{
|
|
sendMsg.m_ResultCode = pRecvMsg->m_ResultCode;
|
|
DominationManager::Instance()->ClearDominationActionInfo( pRecvMsg->m_MapCode );
|
|
SUNLOG( eFULL_LOG, "["__FUNCTION__"]ActionInfo Init Success~!!\n" );
|
|
}
|
|
|
|
sendMsg.m_MapCode = pRecvMsg->m_MapCode;
|
|
pGuildServer->SendToAllGameServers(&sendMsg, sizeof(sendMsg));
|
|
}
|
|
|
|
#ifdef _NA_20100604_BETTER_DOMINATION_MANAGER
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_UPDATE_GUILDINFO_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_UPDATE_GUILDINFO_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_UPDATE_GUILDINFO_ACK*>(pMsg);
|
|
|
|
GuildServer* guild_server = GuildServer::GetMainFrame();
|
|
if (guild_server == NULL)
|
|
{
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Not Found pGuildServer");
|
|
return;
|
|
}
|
|
|
|
//--DB 저장 실패
|
|
if (recv_msg->db_result_ == MSG_DZ_DOMINATION_UPDATE_GUILDINFO_ACK::DB_RESULT_FAIL)
|
|
{
|
|
MSG_GZ_DOMINATION_UPDATE_GUILDINFO_ACK nak_msg;
|
|
{
|
|
nak_msg.db_result_ = MSG_DZ_DOMINATION_UPDATE_GUILDINFO_ACK::DB_RESULT_FAIL;
|
|
nak_msg.guild_guid_ = recv_msg->guild_guid_;
|
|
nak_msg.domination_join_count_ = 0;
|
|
nak_msg.domination_defense_count_ = 0;
|
|
nak_msg.domination_hunting_count_ = 0;
|
|
}
|
|
guild_server->SendToAllGameServers(&nak_msg, sizeof(nak_msg));
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]DB Store Fail");
|
|
return;
|
|
}
|
|
|
|
//--길드 정보내 점령전 정보 셋팅
|
|
Guild* request_guild = g_GuildManager.FindGuild(recv_msg->guild_guid_);
|
|
if (request_guild == NULL) return;
|
|
request_guild->SetDominationJointCount(recv_msg->domination_join_count_);
|
|
request_guild->SetDominationDefenseCount(recv_msg->domination_defense_count_);
|
|
request_guild->SetDominationHuntingCount(recv_msg->domination_hunting_count_);
|
|
|
|
MSG_GZ_DOMINATION_UPDATE_GUILDINFO_ACK send_msg;
|
|
{
|
|
send_msg.db_result_ = MSG_DZ_DOMINATION_UPDATE_GUILDINFO_ACK::DB_RESULT_SUCCESS;
|
|
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_;
|
|
}
|
|
guild_server->SendToAllGameServers(&send_msg, sizeof(send_msg));
|
|
}
|
|
#endif
|
|
|
|
#ifdef _NA_20110216_INCREASE_DOMINATION_DEFFENSEWALL_POINT
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK*>(pMsg);
|
|
|
|
GuildServer* const guild_server = GuildServer::GetMainFrame();
|
|
|
|
if (recv_msg->result_value_ == false)
|
|
{
|
|
MSG_GZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK nak_msg;
|
|
nak_msg.db_result_ = recv_msg->result_value_;
|
|
nak_msg.domination_info_ = recv_msg->domination_info_;
|
|
nak_msg.item_code = recv_msg->item_code_;
|
|
nak_msg.m_dwKey = recv_msg->m_dwKey;
|
|
|
|
guild_server->SendToAllGameServers(&nak_msg, sizeof(nak_msg));
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Update Failed to domination info[map:%d]",
|
|
recv_msg->domination_info_.m_FieldCode);
|
|
|
|
return;
|
|
}
|
|
|
|
DominationManager* const domination_manager = DominationManager::Instance();
|
|
|
|
DOMINATION_INFO* info =
|
|
domination_manager->FindDominationInfo(recv_msg->domination_info_.m_FieldCode);
|
|
if (info == NULL)
|
|
{
|
|
SUNLOG(eCRITICAL_LOG, "["__FUNCTION__"]Not found domination info[map:%d]",
|
|
recv_msg->domination_info_.m_FieldCode);
|
|
return;
|
|
}
|
|
|
|
*(info) = recv_msg->domination_info_;
|
|
|
|
MSG_GZ_DOMINATION_ADD_DEFFENSEWALL_POINT_ACK ack_msg;
|
|
ack_msg.db_result_ = recv_msg->result_value_;
|
|
ack_msg.domination_info_ = recv_msg->domination_info_;
|
|
ack_msg.item_code = recv_msg->item_code_;
|
|
ack_msg.m_dwKey = recv_msg->m_dwKey;
|
|
guild_server->SendToAllGameServers(&ack_msg, sizeof(ack_msg));
|
|
}
|
|
#endif//_NA_20110216_INCREASE_DOMINATION_DEFFENSEWALL_POINT
|
|
|
|
#ifdef _NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_MEMBER_JOIN_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_MEMBER_JOIN_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_MEMBER_JOIN_ACK*>(pMsg);
|
|
|
|
GuildServer* const guild_server = GuildServer::GetMainFrame();
|
|
|
|
if (recv_msg->db_result_ == false)
|
|
{
|
|
MSG_GZ_DOMINATION_MEMBER_JOIN_ACK nak_msg;
|
|
nak_msg.db_result_ = recv_msg->db_result_;
|
|
nak_msg.map_code_ = recv_msg->map_code_;
|
|
nak_msg.member_info_ = recv_msg->member_info_;
|
|
guild_server->SendToAllGameServers(&nak_msg, sizeof(nak_msg));
|
|
|
|
return;
|
|
}
|
|
|
|
DominationManager::Instance()->InsertDominationMemberInfo(recv_msg->map_code_,
|
|
recv_msg->member_info_);
|
|
MSG_GZ_DOMINATION_MEMBER_JOIN_ACK ack_msg;
|
|
ack_msg.db_result_ = recv_msg->db_result_;
|
|
ack_msg.map_code_ = recv_msg->map_code_;
|
|
ack_msg.member_info_ = recv_msg->member_info_;
|
|
guild_server->SendToAllGameServers(&ack_msg, sizeof(ack_msg));
|
|
}
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_MEMBER_LEAVE_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_MEMBER_LEAVE_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_MEMBER_LEAVE_ACK*>(pMsg);
|
|
|
|
GuildServer* const guild_server = GuildServer::GetMainFrame();
|
|
|
|
if (recv_msg->db_result_ == false)
|
|
{
|
|
MSG_GZ_DOMINATION_MEMBER_LEAVE_ACK nak_msg;
|
|
nak_msg.db_result_ = recv_msg->db_result_;
|
|
nak_msg.map_code_ = recv_msg->map_code_;
|
|
nak_msg.member_guid_ = recv_msg->member_guid_;
|
|
nak_msg.requester_guid = recv_msg->requester_guid;
|
|
guild_server->SendToAllGameServers(&nak_msg, sizeof(nak_msg));
|
|
|
|
return;
|
|
}
|
|
|
|
DominationManager::Instance()->DeleteDominationMemberInfo(recv_msg->map_code_,
|
|
recv_msg->member_guid_);
|
|
MSG_GZ_DOMINATION_MEMBER_LEAVE_ACK ack_msg;
|
|
ack_msg.db_result_ = recv_msg->db_result_;
|
|
ack_msg.map_code_ = recv_msg->map_code_;
|
|
ack_msg.member_guid_ = recv_msg->member_guid_;
|
|
ack_msg.requester_guid = recv_msg->requester_guid;
|
|
guild_server->SendToAllGameServers(&ack_msg, sizeof(ack_msg));
|
|
}
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_MEMBERLIST_ANS)
|
|
{
|
|
const MSG_DZ_DOMINATION_MEMBERLIST_ANS* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_MEMBERLIST_ANS*>(pMsg);
|
|
|
|
DominationManager* const domination_manager = DominationManager::Instance();
|
|
|
|
const BYTE data_count = recv_msg->data_count_;
|
|
if (data_count > _countof(recv_msg->member_list_))
|
|
{
|
|
SUNLOG(eCRITICAL_LOG, __FUNCTION__":Member list count is over");
|
|
return;
|
|
}
|
|
|
|
MAPCODE map_code = recv_msg->map_code_;
|
|
domination_manager->SetCheckMemberInfo(map_code);
|
|
|
|
if (data_count > 0)
|
|
{
|
|
for (BYTE i = 0; i < data_count; ++i)
|
|
{
|
|
const DominationMemberInfo& member_info = recv_msg->member_list_[i];
|
|
domination_manager->InsertDominationMemberInfo(map_code, member_info);
|
|
}
|
|
}
|
|
SUNLOG(eCRITICAL_LOG,"Insert member info : %d , %d", recv_msg->map_code_, recv_msg->data_count_);
|
|
}
|
|
|
|
Handler_FromDBProxyServer_IMPL(DZ_DOMINATION_MEMBERLIST_INIT_ACK)
|
|
{
|
|
const MSG_DZ_DOMINATION_MEMBERLIST_INIT_ACK* recv_msg =
|
|
static_cast<MSG_DZ_DOMINATION_MEMBERLIST_INIT_ACK*>(pMsg);
|
|
|
|
if (recv_msg->db_result_ == false)
|
|
{
|
|
MSG_DZ_DOMINATION_MEMBERLIST_INIT_SYN send_msg;
|
|
GuildServer* const guild_server = GuildServer::GetMainFrame();
|
|
guild_server->ConnectSessions.SendToDBProxy(&send_msg, sizeof(send_msg));
|
|
}
|
|
SUNLOG(eCRITICAL_LOG, "Domination member list init success");
|
|
}
|
|
#endif//_NA_20110406_CHANGE_RULE_FOR_DOMINATION_JOIN
|
|
/************************************************************************/
|
|
/* 지역 점령전 시스템 작업 END */
|
|
/************************************************************************/ |