#if defined(MY_PARAM) || defined(PH_PARAM) || defined(MYE_PARAM) //|| defined ( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
BOOL CALLBACK NPGameMonCallback(DWORD dwMsg, DWORD dwArg)
{
TCHAR msg[128]={0};
LPCTSTR lpszMsg( NULL );
bool bAppExit( false );
static DWORD dwCharIDBack = 0;
switch( dwMsg )
{
case NPGAMEMON_COMM_ERROR:
case NPGAMEMON_COMM_CLOSE:
bAppExit = true;
return false;
case NPGAMEMON_INIT_ERROR:
bAppExit = true; // Closing code
_stprintf(msg, ID2GAMEEXTEXT( "NPGAMEMON_INIT_ERROR" ), dwArg);
lpszMsg = msg;
break;
case NPGAMEMON_SPEEDHACK:
bAppExit = true; // termination code
lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_SPEEDHACK" );
break;
case NPGAMEMON_GAMEHACK_KILLED:
bAppExit = true; // termination code, close or proceed continuously
lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_KILLED" );
break;
case NPGAMEMON_GAMEHACK_DETECT:
bAppExit = true; // termination code
lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_DETECT" );
break;
case NPGAMEMON_GAMEHACK_DOUBT:
bAppExit = true; // termination code
lpszMsg = ID2GAMEEXTEXT( "NPGAMEMON_GAMEHACK_DOUBT" );
break;
case NPGAMEMON_CHECK_CSAUTH2:
{
// charid°¡ º¯°æµÉ¶§¸¶´Ù ID Àü¼Û
DWORD dwCHARID = GLGaeaClient::GetInstance().GetCharacter()->m_dwCharID;
if ( dwCharIDBack != dwCHARID && dwCHARID != 0 )
{
CString strUserID;
strUserID.Format( "CHAR_ID:%u", dwCHARID );
npgl.Send( strUserID.GetString() );
}
if( g_AuthMsgBuffer.empty() ) break;
UINT AuthMsg = g_AuthMsgBuffer.front();
g_AuthMsgBuffer.pop();
if( AuthMsg == NET_MSG_GAMEGUARD_AUTH )
{
NET_GAMEGUARD_ANSWER NetMsg;
memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );
CNetClient* pNetClient = DxGlobalStage::GetInstance().GetNetClient ();
if ( pNetClient && pNetClient->IsOnline () )
{
const TCHAR* szEncrypt;
szEncrypt = pNetClient->DoEncryptKey();
memcpy( NetMsg.szEnCrypt, szEncrypt, ENCRYPT_KEY+1);
}
DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
}
else if( AuthMsg == NET_MSG_GAMEGUARD_AUTH_1 )
{
NET_GAMEGUARD_ANSWER_1 NetMsg;
memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );
DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
}
else if( AuthMsg == NET_MSG_GAMEGUARD_AUTH_2 )
{
NET_GAMEGUARD_ANSWER_2 NetMsg;
memmove( &NetMsg.ggad, (GG_AUTH_DATA*)dwArg, sizeof(GG_AUTH_DATA) );
DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
}
}
break;
}
if( bAppExit ) // °ÔÀÓ Á¾·á½Ã¿¡¸¸ false¸¦ ¸®ÅÏ
{
DWORD dwCHARID = GLGaeaClient::GetInstance().GetCharacter()->m_dwCharID;
{ // Note : ¶õ¼¹ö¿¡ ·Î±× ±â·Ï
GLMSG::SNET_BLOCK_DETECTED NetMsg;
NetMsg.dwDETECTED = dwMsg; // NP ¸®ÅÏ ¹øÈ£
NetMsg.dwCHARID = dwCHARID;
StringCchCopy( NetMsg.szINFO, GLMSG::SNET_BLOCK_DETECTED::MAX_INFO, npgl.GetInfo() );
DxGlobalStage::GetInstance().NetSend( (NET_MSG_GENERIC*)&NetMsg );
}
{ // Note : NP¼¹ö¿¡ ·Î±× ±â·Ï
CString strUserID;
strUserID.Format( "CHAR_ID:%u", dwCHARID );
npgl.Send( strUserID.GetString() );
}
// Note : ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.
//CInnerInterface::GetInstance().WAITSERVER_DIALOGUE_OPEN(ID2GAMEINTEXT("WAITSERVER_HACK_MESSAGE"), WAITSERVER_CLOSEGAME);
DxGlobalStage::GetInstance().CloseGame( lpszMsg );
return false;
}
return true;
}
#endif
//////////////////////////
#if defined(MY_PARAM) || defined(MYE_PARAM) || defined(PH_PARAM) //|| defined ( VN_PARAM ) || defined(TH_PARAM) || defined ( HK_PARAM ) || defined(TW_PARAM) // Nprotect Á¤ÀÇ
npgl.SetHwnd( m_hWnd );
m_nGGTimer = SetTimer(NPGAMEMON_TIMER, 10000, 0);
m_nGGATimer = SetTimer(NPGAMEMON_AUTH_TIMER, 60000, 0);
m_nGGA12Timer = SetTimer(NPGAMEMON_AUTH12_TIMER, 33, 0);
#endif