2024-12-21 10:04:04 +08:00
# include "stdafx.h"
# include "DNGuildGame.h"
# include "DNMasterConnectionManager.h"
# include "DNGameDataManager.h"
CDNGuildGame : : CDNGuildGame ( )
{
}
CDNGuildGame : : ~ CDNGuildGame ( )
{
}
void CDNGuildGame : : Reset ( )
{
}
void CDNGuildGame : : SendGuildMemberLoginList ( SCGuildMemberLoginList * pPacket )
{
// <20> <> ü<EFBFBD> <C3BC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ŷ<EFBFBD> <C5B6> <EFBFBD> <EFBFBD>
MAGuildMemberLoginList Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . GuildUID = pPacket - > GuildUID ;
for ( int aIndex = 0 ; MIN ( GUILDSIZE_MAX , pPacket - > nCount ) > aIndex ; + + aIndex ) {
if ( GUILDSIZE_MAX < = Packet . nCount ) {
break ;
}
Packet . List [ Packet . nCount ] = pPacket - > List [ aIndex ] ;
+ + Packet . nCount ;
}
int nLen = static_cast < int > ( sizeof ( Packet ) - sizeof ( Packet . List ) + sizeof ( Packet . List [ 0 ] ) * Packet . nCount ) ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer ) {
pServer - > StoreExternalBuffer ( 0 , MAGA_GUILDMEMBLOGINLIST , 0 , reinterpret_cast < char * > ( & Packet ) , nLen , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
}
bool CDNGuildGame : : CheckGuildResource ( TGuildMember * pGuildMemeber )
{
if ( false = = CDNGuildBase : : CheckGuildResource ( pGuildMemeber ) )
return false ;
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerByAID ( pGuildMemeber - > nAccountDBID ) ;
if ( pServer )
return false ;
// <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ʈ<EFBFBD> <C6AE> <20> <> <EFBFBD> <EFBFBD> <20> <> ȸ<EFBFBD> Ѵ <EFBFBD>
return true ;
}
void CDNGuildGame : : SendAddGuildMember ( UINT nAccountDBID , INT64 nCharacterDBID , LPCWSTR lpwszCharacterName , TP_JOB nJob , char cLevel , __time64_t pJoinDate , TCommunityLocation * pLocation )
{
MAAddGuildMember Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . nManagedID = LONG_MAX ;
Packet . GuildUID = GetUID ( ) ;
Packet . nAccountDBID = nAccountDBID ;
Packet . nCharacterDBID = nCharacterDBID ;
Packet . nJob = nJob ;
Packet . cLevel = cLevel ;
Packet . JoinDate = pJoinDate ;
_wcscpy ( Packet . wszCharacterName , _countof ( Packet . wszCharacterName ) , lpwszCharacterName , ( int ) wcslen ( lpwszCharacterName ) ) ;
if ( pLocation )
Packet . Location = ( * pLocation ) ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_ADDGUILDMEMBER , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendDelGuildMember ( UINT nAccountDBID , INT64 nCharacterDBID , bool bIsExiled )
{
MADelGuildMember Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . nManagedID = LONG_MAX ;
Packet . GuildUID = GetUID ( ) ;
Packet . nAccountDBID = nAccountDBID ;
Packet . nCharacterDBID = nCharacterDBID ;
Packet . bIsExiled = bIsExiled ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_DELGUILDMEMBER , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendChangeGuildMemberInfo ( UINT nReqAccountDBID , INT64 nReqCharacterDBID , UINT nChgAccountDBID , INT64 nChgCharacterDBID , BYTE btGuildMemberUpdate , int iInt1 , int iInt2 , INT64 biInt64 , LPCWSTR pText )
{
MAChangeGuildMemberInfo Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . nManagedID = LONG_MAX ;
Packet . GuildUID = GetUID ( ) ;
Packet . nReqAccountDBID = nReqAccountDBID ;
Packet . nReqCharacterDBID = nReqCharacterDBID ;
Packet . nChgAccountDBID = nChgAccountDBID ;
Packet . nChgCharacterDBID = nChgCharacterDBID ;
Packet . btGuildMemberUpdate = btGuildMemberUpdate ;
Packet . Int1 = iInt1 ;
Packet . Int2 = iInt2 ;
Packet . Int64 = biInt64 ;
if ( pText ) {
_wcscpy ( Packet . Text , _countof ( Packet . Text ) , pText , ( int ) wcslen ( pText ) ) ;
}
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_CHANGEGUILDMEMBERINFO , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendGuildChat ( UINT nAccountDBID , INT64 nCharacterDBID , LPCWSTR lpwszChatMsg , short nLen )
{
MAGuildChat Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . nManagedID = LONG_MAX ;
Packet . GuildUID = GetUID ( ) ;
Packet . nAccountDBID = nAccountDBID ;
Packet . nCharacterDBID = nCharacterDBID ;
_wcscpy ( Packet . wszChatMsg , _countof ( Packet . wszChatMsg ) , lpwszChatMsg , nLen ) ;
Packet . nLen = nLen ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_GUILDCHAT , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
# ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
void CDNGuildGame : : SendDoorsGuildChat ( INT64 nCharacterDBID , LPCWSTR lpwszChatMsg , short nLen )
{
MADoorsGuildChat Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . nManagedID = LONG_MAX ;
Packet . GuildUID = GetUID ( ) ;
Packet . nCharacterDBID = nCharacterDBID ;
_wcscpy ( Packet . wszChatMsg , _countof ( Packet . wszChatMsg ) , lpwszChatMsg , nLen ) ;
Packet . nLen = nLen ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_GUILDCHAT_MOBILE , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
# endif //#ifdef PRE_ADD_DOORS_GUILDCHAT_DISCONNECT
void CDNGuildGame : : SendChangeGuildName ( const wchar_t * wszGuildName )
{
MAGuildChangeName Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
memset ( & Packet , 0 , sizeof ( MAGuildChangeName ) ) ;
Packet . GuildUID = GetUID ( ) ;
_wcscpy ( Packet . wszGuildName , _countof ( Packet . wszGuildName ) , wszGuildName , ( int ) wcslen ( wszGuildName ) ) ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_CHANGEGUILDNAME , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( MAGuildChangeName ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendChangeGuildMark ( const MAGuildChangeMark * pPacket )
{
MAGuildChangeMark Packet ;
memset ( & Packet , 0 , sizeof ( MAGuildChangeMark ) ) ;
Packet . GuildUID = GetUID ( ) ;
Packet . wMark = pPacket - > wMark ;
Packet . wMarkBG = pPacket - > wMarkBG ;
Packet . wMarkBorder = pPacket - > wMarkBorder ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_CHANGEGUILDMARK , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( MAGuildChangeMark ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : UpdateMemberInfo ( CDNUserSession * pSession , const TAChangeGuildMemberInfo * pPacket )
{
switch ( pPacket - > btGuildMemberUpdate )
{
case GUILDMEMBUPDATE_TYPE_INTRODUCE : // <20> ڱ<EFBFBD> <DAB1> Ұ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ڽ<EFBFBD> )
case GUILDMEMBUPDATE_TYPE_ROLE : // <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ?)
case GUILDMEMBUPDATE_TYPE_GUILDMASTER : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ?)
{
// GA <20> <> <20> <> <20> <> Ŷ<EFBFBD> <C5B6> ó<> <C3B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
}
DN_BREAK ;
default :
{
pSession - > SendChangeGuildMemberInfo ( pPacket - > nReqAccountDBID , pPacket - > nReqCharacterDBID , pPacket - > nChgAccountDBID , pPacket - > nChgCharacterDBID ,
pPacket - > btGuildMemberUpdate , ERROR_GENERIC_INVALIDREQUEST , pPacket - > nInt1 , pPacket - > nInt2 , pPacket - > biInt64 , pPacket - > Text , NULL ) ;
}
DN_BREAK ;
}
}
void CDNGuildGame : : UpdateGuildInfo ( CDNUserSession * pSession , const TAChangeGuildInfo * pPacket )
{
switch ( pPacket - > btGuildUpdate )
{
case GUILDUPDATE_TYPE_ROLENAME : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ̸<EFBFBD> <CCB8> <EFBFBD> <EFBFBD> <EFBFBD>
case GUILDUPDATE_TYPE_ROLEAUTH : // <20> <> <EFBFBD> ޱ<EFBFBD> <DEB1> Ѻ<EFBFBD> <D1BA> <EFBFBD>
{
// GA <20> º<EFBFBD> <C2BA> <EFBFBD> Ŷ<EFBFBD> <C5B6> ó<EFBFBD> <C3B3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
}
DN_BREAK ;
case GUILDUPDATE_TYPE_NOTICE : // <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
{
{
ScopeLock < CSyncLock > AutoLock ( GetLock ( ) ) ;
_wcscpy ( SetInfo ( ) - > wszGuildNotice , _countof ( GetInfo ( ) - > wszGuildNotice ) , pPacket - > Text , ( int ) wcslen ( pPacket - > Text ) ) ;
}
}
break ;
default :
{
pSession - > SendChangeGuildInfo ( pPacket - > nAccountDBID , pPacket - > nCharacterDBID , pPacket - > btGuildUpdate , ERROR_GENERIC_INVALIDREQUEST , pPacket - > nInt1 , pPacket - > nInt2 , pPacket - > biInt64 , pPacket - > Text ) ;
}
DN_BREAK ;
}
// <20> <> <EFBFBD> 缭<EFBFBD> <E7BCAD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 鿡<EFBFBD> <E9BFA1> <20> 뺸
SendChangeGuildInfo ( pPacket - > nAccountDBID , pPacket - > nCharacterDBID , pPacket - > btGuildUpdate , pPacket - > nInt1 , pPacket - > nInt2 , pPacket - > nInt3 , pPacket - > nInt4 , pPacket - > biInt64 , pPacket - > Text ) ;
// MA <20> <> <20> <> <EFBFBD> Ͽ<EFBFBD> <20> ٸ<EFBFBD> <D9B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> Ϲ <EFBFBD> <CFB9> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ϵ<EFBFBD> <CFB5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
g_pMasterConnectionManager - > SendChangeGuildInfo ( pSession - > GetWorldSetID ( ) , GetUID ( ) , pPacket - > nAccountDBID , pPacket - > nCharacterDBID , pPacket - > btGuildUpdate , pPacket - > nInt1 , pPacket - > nInt2 , pPacket - > nInt3 , pPacket - > nInt4 , pPacket - > biInt64 , pPacket - > Text ) ;
}
void CDNGuildGame : : UpdateWarInfoOnAllMember ( short wScheduleID , BYTE cTeamColorCode )
{
if ( g_pMasterConnectionManager - > GetGuildWarScheduleID ( GetUID ( ) . nWorldID ) ! = wScheduleID )
return ;
m_Info . GuildView . wWarSchduleID = wScheduleID ;
m_Info . GuildView . cTeamColorCode = cTeamColorCode ;
MAEnrollGuildWar Packet ;
Packet . GuildUID = GetUID ( ) ;
Packet . wScheduleID = wScheduleID ;
Packet . cTeamColorCode = cTeamColorCode ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_ENROLLGUILDWAR , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendGuildLevelUp ( int nLevel )
{
MAGuildLevelUp Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . GuildUID = GetUID ( ) ;
Packet . nLevel = nLevel ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_GUILDLEVELUP , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
}
void CDNGuildGame : : SendUpdateGuildExp ( BYTE cPointType , int nPointValue , int nGuildExp , INT64 biCharacterDBID , int nMissionID )
{
MAGuildExp Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . GuildUID = GetUID ( ) ;
Packet . cPointType = cPointType ;
Packet . nPointValue = nPointValue ;
Packet . nGuildExp = nGuildExp ;
Packet . biCharacterDBID = biCharacterDBID ;
Packet . nMissionID = nMissionID ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAGA_UPDATEGUILDEXP , 0 , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_MASTER , GetUID ( ) . nWorldID ) ;
}
} ;
void CDNGuildGame : : SendGuildRewardItem ( TGuildRewardItem * GuildRewardItem )
{
// QUERY_GET_GUILDREWARDITEM
DBGetGuildRewardItem Packet ;
memset ( & Packet , 0 , sizeof ( Packet ) ) ;
Packet . GuildUID = GetUID ( ) ;
for ( int iIndex = 0 ; g_pGameServerManager - > GetGameServerSize ( ) > iIndex ; + + iIndex )
{
CDNRUDPGameServer * pServer = g_pGameServerManager - > GetGameServerIndex ( iIndex ) ;
if ( pServer )
pServer - > StoreExternalBuffer ( 0 , MAINCMD_GUILD , QUERY_GET_GUILDREWARDITEM , reinterpret_cast < char * > ( & Packet ) , sizeof ( Packet ) , EXTERNALTYPE_DATABASE , GetUID ( ) . nWorldID ) ;
}
}