@ -1,6 +1,5 @@
# include "stdafx.h"
# include <common/billing.h>
# include <common/building.h>
# include <common/VnumHelper.h>
# include "../../libgame/include/grid.h"
@ -1143,7 +1142,6 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
SPDLOG_DEBUG ( " AUTH_PEER ptr {} " , ( void * ) peer ) ;
m_pkAuthPeer = peer ;
SendAllLoginToBilling ( ) ;
return ;
}
@ -1286,10 +1284,9 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
}
//
// <EFBFBD> α <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
// Log in the player
//
TPacketLoginOnSetup * pck = ( TPacketLoginOnSetup * ) c_pData ; ;
std : : vector < TPacketBillingRepair > vec_repair ;
TPacketLoginOnSetup * pck = ( TPacketLoginOnSetup * ) c_pData ;
for ( DWORD c = 0 ; c < p - > dwLoginCount ; + + c , + + pck )
{
@ -1312,29 +1309,11 @@ void CClientManager::QUERY_SETUP(CPeer * peer, DWORD dwHandle, const char * c_pD
{
SPDLOG_DEBUG ( " SETUP: login {} {} login_key {} host {} " , pck - > dwID , pck - > szLogin , pck - > dwLoginKey , pck - > szHost ) ;
pkLD - > SetPlay ( true ) ;
if ( m_pkAuthPeer )
{
TPacketBillingRepair pck_repair ;
pck_repair . dwLoginKey = pkLD - > GetKey ( ) ;
strlcpy ( pck_repair . szLogin , pck - > szLogin , sizeof ( pck_repair . szLogin ) ) ;
strlcpy ( pck_repair . szHost , pck - > szHost , sizeof ( pck_repair . szHost ) ) ;
vec_repair . push_back ( pck_repair ) ;
}
}
else
SPDLOG_DEBUG ( " SETUP: login_fail {} {} login_key {} " , pck - > dwID , pck - > szLogin , pck - > dwLoginKey ) ;
}
if ( m_pkAuthPeer & & ! vec_repair . empty ( ) )
{
SPDLOG_DEBUG ( " REPAIR size {} " , vec_repair . size ( ) ) ;
m_pkAuthPeer - > EncodeHeader ( HEADER_DG_BILLING_REPAIR , 0 , sizeof ( DWORD ) + sizeof ( TPacketBillingRepair ) * vec_repair . size ( ) ) ;
m_pkAuthPeer - > EncodeDWORD ( vec_repair . size ( ) ) ;
m_pkAuthPeer - > Encode ( & vec_repair [ 0 ] , sizeof ( TPacketBillingRepair ) * vec_repair . size ( ) ) ;
}
SendPartyOnSetup ( peer ) ;
CGuildManager : : instance ( ) . OnSetup ( peer ) ;
CPrivManager : : instance ( ) . SendPrivOnSetup ( peer ) ;
@ -1843,8 +1822,6 @@ void CClientManager::QUERY_AUTH_LOGIN(CPeer * pkPeer, DWORD dwHandle, TPacketGDA
pkLD - > SetKey ( p - > dwLoginKey ) ;
pkLD - > SetClientKey ( p - > adwClientKey ) ;
pkLD - > SetBillType ( p - > bBillType ) ;
pkLD - > SetBillID ( p - > dwBillID ) ;
pkLD - > SetPremium ( p - > iPremiumTimes ) ;
TAccountTable & r = pkLD - > GetAccountRef ( ) ;
@ -1867,109 +1844,6 @@ void CClientManager::QUERY_AUTH_LOGIN(CPeer * pkPeer, DWORD dwHandle, TPacketGDA
}
}
void CClientManager : : BillingExpire ( TPacketBillingExpire * p )
{
char key [ LOGIN_MAX_LEN + 1 ] ;
trim_and_lower ( p - > szLogin , key , sizeof ( key ) ) ;
switch ( p - > bBillType )
{
case BILLING_IP_TIME :
case BILLING_IP_DAY :
{
DWORD dwIPID = 0 ;
str_to_number ( dwIPID , p - > szLogin ) ;
TLogonAccountMap : : iterator it = m_map_kLogonAccount . begin ( ) ;
while ( it ! = m_map_kLogonAccount . end ( ) )
{
CLoginData * pkLD = ( it + + ) - > second ;
if ( pkLD - > GetBillID ( ) = = dwIPID )
{
CPeer * pkPeer = GetPeer ( pkLD - > GetConnectedPeerHandle ( ) ) ;
if ( pkPeer )
{
strlcpy ( p - > szLogin , pkLD - > GetAccountRef ( ) . login , sizeof ( p - > szLogin ) ) ;
pkPeer - > EncodeHeader ( HEADER_DG_BILLING_EXPIRE , 0 , sizeof ( TPacketBillingExpire ) ) ;
pkPeer - > Encode ( p , sizeof ( TPacketBillingExpire ) ) ;
}
}
}
}
break ;
case BILLING_TIME :
case BILLING_DAY :
{
TLogonAccountMap : : iterator it = m_map_kLogonAccount . find ( key ) ;
if ( it ! = m_map_kLogonAccount . end ( ) )
{
CLoginData * pkLD = it - > second ;
CPeer * pkPeer = GetPeer ( pkLD - > GetConnectedPeerHandle ( ) ) ;
if ( pkPeer )
{
pkPeer - > EncodeHeader ( HEADER_DG_BILLING_EXPIRE , 0 , sizeof ( TPacketBillingExpire ) ) ;
pkPeer - > Encode ( p , sizeof ( TPacketBillingExpire ) ) ;
}
}
}
break ;
}
}
void CClientManager : : BillingCheck ( const char * data )
{
if ( ! m_pkAuthPeer )
return ;
time_t curTime = GetCurrentTime ( ) ;
DWORD dwCount = * ( DWORD * ) data ;
data + = sizeof ( DWORD ) ;
std : : vector < DWORD > vec ;
SPDLOG_DEBUG ( " BillingCheck: size {} " , dwCount ) ;
for ( DWORD i = 0 ; i < dwCount ; + + i )
{
DWORD dwKey = * ( DWORD * ) data ;
data + = sizeof ( DWORD ) ;
SPDLOG_DEBUG ( " BillingCheck: {} " , dwKey ) ;
TLoginDataByLoginKey : : iterator it = m_map_pkLoginData . find ( dwKey ) ;
if ( it = = m_map_pkLoginData . end ( ) )
{
SPDLOG_DEBUG ( " BillingCheck: key not exist: {} " , dwKey ) ;
vec . push_back ( dwKey ) ;
}
else
{
CLoginData * pkLD = it - > second ;
if ( ! pkLD - > IsPlay ( ) & & curTime - pkLD - > GetLastPlayTime ( ) > 180 )
{
SPDLOG_DEBUG ( " BillingCheck: not login: {} " , dwKey ) ;
vec . push_back ( dwKey ) ;
}
}
}
m_pkAuthPeer - > EncodeHeader ( HEADER_DG_BILLING_CHECK , 0 , sizeof ( DWORD ) + sizeof ( DWORD ) * vec . size ( ) ) ;
m_pkAuthPeer - > EncodeDWORD ( vec . size ( ) ) ;
if ( ! vec . empty ( ) )
m_pkAuthPeer - > Encode ( & vec [ 0 ] , sizeof ( DWORD ) * vec . size ( ) ) ;
}
void CClientManager : : GuildDepositMoney ( TPacketGDGuildMoney * p )
{
CGuildManager : : instance ( ) . DepositMoney ( p - > dwGuild , p - > iGold ) ;
@ -1990,51 +1864,6 @@ void CClientManager::GuildWarBet(TPacketGDGuildWarBet * p)
CGuildManager : : instance ( ) . Bet ( p - > dwWarID , p - > szLogin , p - > dwGold , p - > dwGuild ) ;
}
void CClientManager : : SendAllLoginToBilling ( )
{
if ( ! m_pkAuthPeer )
return ;
std : : vector < TPacketBillingRepair > vec ;
TPacketBillingRepair p ;
TLogonAccountMap : : iterator it = m_map_kLogonAccount . begin ( ) ;
while ( it ! = m_map_kLogonAccount . end ( ) )
{
CLoginData * pkLD = ( it + + ) - > second ;
p . dwLoginKey = pkLD - > GetKey ( ) ;
strlcpy ( p . szLogin , pkLD - > GetAccountRef ( ) . login , sizeof ( p . szLogin ) ) ;
strlcpy ( p . szHost , pkLD - > GetIP ( ) , sizeof ( p . szHost ) ) ;
SPDLOG_DEBUG ( " SendAllLoginToBilling {} {} " , pkLD - > GetAccountRef ( ) . login , pkLD - > GetIP ( ) ) ;
vec . push_back ( p ) ;
}
if ( ! vec . empty ( ) )
{
m_pkAuthPeer - > EncodeHeader ( HEADER_DG_BILLING_REPAIR , 0 , sizeof ( DWORD ) + sizeof ( TPacketBillingRepair ) * vec . size ( ) ) ;
m_pkAuthPeer - > EncodeDWORD ( vec . size ( ) ) ;
m_pkAuthPeer - > Encode ( & vec [ 0 ] , sizeof ( TPacketBillingRepair ) * vec . size ( ) ) ;
}
}
void CClientManager : : SendLoginToBilling ( CLoginData * pkLD , bool bLogin )
{
if ( ! m_pkAuthPeer )
return ;
TPacketBillingLogin p ;
p . dwLoginKey = pkLD - > GetKey ( ) ;
p . bLogin = bLogin ? 1 : 0 ;
DWORD dwCount = 1 ;
m_pkAuthPeer - > EncodeHeader ( HEADER_DG_BILLING_LOGIN , 0 , sizeof ( DWORD ) + sizeof ( TPacketBillingLogin ) ) ;
m_pkAuthPeer - > EncodeDWORD ( dwCount ) ;
m_pkAuthPeer - > Encode ( & p , sizeof ( TPacketBillingLogin ) ) ;
}
void CClientManager : : CreateObject ( TPacketGDCreateObject * p )
{
using namespace building ;
@ -2124,28 +1953,6 @@ void CClientManager::UpdateLand(DWORD * pdw)
ForwardPacket ( HEADER_DG_UPDATE_LAND , p , sizeof ( building : : TLand ) ) ;
}
void CClientManager : : VCard ( TPacketGDVCard * p )
{
SPDLOG_DEBUG ( " VCARD: {} {} {} {} {} " ,
p - > dwID , p - > szSellCharacter , p - > szSellAccount , p - > szBuyCharacter , p - > szBuyAccount ) ;
m_queue_vcard . push ( * p ) ;
}
void CClientManager : : VCardProcess ( )
{
if ( ! m_pkAuthPeer )
return ;
while ( ! m_queue_vcard . empty ( ) )
{
m_pkAuthPeer - > EncodeHeader ( HEADER_DG_VCARD , 0 , sizeof ( TPacketGDVCard ) ) ;
m_pkAuthPeer - > Encode ( & m_queue_vcard . front ( ) , sizeof ( TPacketGDVCard ) ) ;
m_queue_vcard . pop ( ) ;
}
}
// BLOCK_CHAT
void CClientManager : : BlockChat ( TPacketBlockChat * p )
{
@ -2551,14 +2358,6 @@ void CClientManager::ProcessPackets(CPeer * peer)
SetEventFlag ( ( TPacketSetEventFlag * ) data ) ;
break ;
case HEADER_GD_BILLING_EXPIRE :
BillingExpire ( ( TPacketBillingExpire * ) data ) ;
break ;
case HEADER_GD_BILLING_CHECK :
BillingCheck ( data ) ;
break ;
case HEADER_GD_CREATE_OBJECT :
CreateObject ( ( TPacketGDCreateObject * ) data ) ;
break ;
@ -2571,10 +2370,6 @@ void CClientManager::ProcessPackets(CPeer * peer)
UpdateLand ( ( DWORD * ) data ) ;
break ;
case HEADER_GD_VCARD :
VCard ( ( TPacketGDVCard * ) data ) ;
break ;
case HEADER_GD_MARRIAGE_ADD :
MarriageAdd ( ( TPacketMarriageAdd * ) data ) ;
break ;
@ -2802,7 +2597,6 @@ void CClientManager::RemovePeer(CPeer * pPeer)
if ( pkLD - > IsPlay ( ) )
{
pkLD - > SetPlay ( false ) ;
SendLoginToBilling ( pkLD , false ) ;
}
if ( pkLD - > IsDeleted ( ) )
@ -3163,7 +2957,6 @@ int CClientManager::Process()
// Process network events
event_base_loop ( m_base , EVLOOP_NONBLOCK ) ;
VCardProcess ( ) ;
return 1 ;
}