예제 #1
0
void CDPAccountClient::SendRoute( DWORD dwIdofServer, u_long uIdofMulti, DPID idFrom )
{
	BEFORESENDSOLE( ar, PACKETTYPE_ROUTE, idFrom );
	ar << dwIdofServer;
	ar << uIdofMulti;
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #2
0
void CDPAccountClient::SendAddAccount( char* lpAddr, LPCTSTR lpszAccount, BYTE cbAccountFlag, DPID idFrom, int fCheck )
#endif	// __GPAUTH_02
{
	BEFORESENDSOLE( ar, PACKETTYPE_ADD_ACCOUNT, idFrom );
	ar.WriteString( lpAddr );
	ar.WriteString( lpszAccount );
	ar << cbAccountFlag;

#ifdef __BILLING0712
	ar << fCheck;
#endif//__BILLING0712

#ifdef __GPAUTH_02
	BOOL bGPotatoAuth	= ::GetLanguage() == LANG_GER || ::GetLanguage() == LANG_FRE;
	if( bGPotatoAuth )
		ar.WriteString( szCheck );
#endif	// __GPAUTH_02
#ifdef __EUROPE_0514
	ar.WriteString( szBak );
#endif	// __EUROPE_0514
#if __VER >= 14 // __PCBANG
	ar << dwPCBangClass;
#endif // __PCBANG

	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #3
0
void CDPClient::OnQueryDestroyPlayer( CAr & ar, DPID dpid, LPVOID lpBuffer, u_long uBufSize )
{
	DWORD dwSerial;
	ar >> dwSerial;
	u_long idPlayer;
	ar >> idPlayer;

	CMclAutoLock	Lock( CPlayerMng::Instance()->m_AddRemoveLock );

	CPlayer* pPlayer	= CPlayerMng::Instance()->GetPlayerBySerial( dwSerial );
	if( pPlayer )
	{
		// 성공적으로 찾았으니까 접속을 끊는다. 
		g_DPCacheSrvr.DestroyPlayer( pPlayer->GetNetworkId() );	// 소켓연결이 끊기고, PACKETTYPE_LEAVE가 월드서버로 간다.
#ifdef __MA_VER11_07	// cache 서버에서 loginserver로 유저접속끊낌을 알려주는 부분
		g_DPCoreClient.SendDestroyPlayer( pPlayer );// coresvr를 통해 loginsvr 에도 끊낌을 알려준다
#endif // __MA_VER11_07	// cache 서버에서 loginserver로 유저접속끊낌을 알려주는 부분
		return;	
	}

	WriteError( "OnQueryDestroyPlayer - idPlayer:%d GetPlayer return NULL.", idPlayer );

	// 찾지 못해도, 끊었다고 알려준다.
	BEFORESENDSOLE( out, PACKETTYPE_LEAVE, DPID_UNKNOWN );
	out << idPlayer;
	LPBYTE lpBuf = out.GetBuffer( &nBufSize );
	g_DPClientArray.SendToServer( dpid, lpBuf, nBufSize );
}
예제 #4
0
void CDPLoginClient::SendCreatePlayer(BYTE nSlot, LPCSTR lpszPlayer/*, LPDWORD adwEquipment*/, BYTE nFace, BYTE nCostume, BYTE nSkinSet, BYTE nHairMesh, DWORD dwHairColor, BYTE nSex, BYTE nJob, BYTE nHeadMesh )
#endif // __2ND_PASSWORD_SYSTEM
{
    BEFORESENDSOLE( ar, PACKETTYPE_CREATE_PLAYER, DPID_UNKNOWN );
#ifdef __GPAUTH_01
    ar.WriteString( g_Neuz.m_bGPotatoAuth?g_Neuz.m_szGPotatoNo: g_Neuz.m_szAccount );
#else	// __GPAUTH_01
    ar.WriteString( g_Neuz.m_szAccount );
#endif	// __GPAUTH_01
    ar.WriteString( g_Neuz.m_szPassword );
    ar << nSlot;

    if( strlen( lpszPlayer ) > 16 )
        Error( "CDPLoginClient::SendCreatePlayer에서 이상 캐릭터 명 E: %s", lpszPlayer );
    ar.WriteString( lpszPlayer );
    if( strlen( lpszPlayer ) > 16 )
        Error( "CDPLoginClient::SendCreatePlayer에서 이상 캐릭터 명 F: %s", lpszPlayer );

    //	ar.Write( adwEquipment, sizeof(DWORD) * MAX_HUMAN_PARTS );

    ar << nFace << nCostume << nSkinSet << nHairMesh;
    ar << dwHairColor;
    ar << nSex << nJob << nHeadMesh;
#if __VER >= 15 // __2ND_PASSWORD_SYSTEM
    ar << nBankPW;
#endif // __2ND_PASSWORD_SYSTEM
    ar << g_Neuz.m_dwAuthKey;
    SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #5
0
void CDPLoginSrvr::SendFail( long lError, const char* lpszAccount )
{
	BEFORESENDSOLE( ar, PACKETTYPE_FAIL, DPID_UNKNOWN );
	ar << lError;
	ar.WriteString( lpszAccount );
	SEND( ar, this, DPID_ALLPLAYERS );
}
예제 #6
0
void CDPLoginSrvr::SendCloseExistingConnection( const char* lpszAccount, LONG lError )
{
	BEFORESENDSOLE( ar, PACKETTYPE_CLOSE_EXISTING_CONNECTION, DPID_UNKNOWN );
	ar.WriteString( lpszAccount );
	ar << lError;
	SEND( ar, this, DPID_ALLPLAYERS );
}
예제 #7
0
void CDPLoginSrvr::SendLoginProtect( const char* lpszAccount, const char* lpszPlayer, u_long idPlayer, BOOL bLogin, DPID dpId )
{
	BEFORESENDSOLE( ar, PACKETTYPE_LOGIN_PROTECT_CERT, dpId );
	ar.WriteString( lpszAccount );
	ar.WriteString( lpszPlayer );
	ar << idPlayer << bLogin;
	SEND( ar, this, DPID_ALLPLAYERS );
}
예제 #8
0
void CDPLoginClient::SendGetPlayerList( DWORD dwID, LPCSTR lpszAccount, LPCSTR lpszpw )
{
    BEFORESENDSOLE( ar, PACKETTYPE_GETPLAYERLIST, DPID_UNKNOWN );
    ar.WriteString( ::GetProtocolVersion() );
    ar << g_Neuz.m_dwAuthKey;
    ar.WriteString( lpszAccount );
    ar.WriteString( lpszpw );
    ar << dwID;
    SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #9
0
void CDPClient::SendJoin( CPlayer* pPlayer )
{
	BEFORESENDSOLE( ar, PACKETTYPE_JOIN, pPlayer->GetSerial() );
	ar << pPlayer->GetAuthKey();
	ar << pPlayer->GetPlayerId();
	ar << pPlayer->GetSlot();
	ar << pPlayer->GetNetworkId();
	ar.WriteString( pPlayer->GetAccount() );
	ar.WriteString( pPlayer->GetPass() );
	ar.WriteString( pPlayer->GetAddr() );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #10
0
void CDPLoginClient::SendPreJoin( const TCHAR* lpszAccount, u_long idPlayer, const TCHAR* lpszPlayer, int nSlot )
#endif // __2ND_PASSWORD_SYSTEM
{
    m_nSlot		= nSlot;
    BEFORESENDSOLE( ar, PACKETTYPE_PRE_JOIN, DPID_UNKNOWN );
//	ar << g_Neuz.m_dwAuthKey;
    ar.WriteString( lpszAccount );
    ar << idPlayer;
    ar.WriteString( lpszPlayer );
#if __VER >= 15 // __2ND_PASSWORD_SYSTEM
    ar << nSecretNum;
#endif // __2ND_PASSWORD_SYSTEM
    SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #11
0
void CDPCoreClient::SendAddPlayer( CPlayer* pPlayer, CRTMessenger & rtmessenger )
{
	BEFORESENDSOLE( ar, PACKETTYPE_JOIN, pPlayer->GetSerial() );
	ar << pPlayer->GetAuthKey();
	ar << pPlayer->GetPlayerId();
	ar << pPlayer->GetNetworkId();
	ar << pPlayer->GetParty();
	ar << pPlayer->GetGuild();
	ar << pPlayer->GetWar();
	ar << pPlayer->GetChannel();
	rtmessenger.Serialize( ar );
	ar.WriteString( pPlayer->GetPlayer() );
	ar.WriteString( pPlayer->GetAddr() );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #12
0
void CDPLoginClient::SendDeletePlayer( BYTE nSlot, LPCTSTR szNo )
{
    BEFORESENDSOLE( ar, PACKETTYPE_DEL_PLAYER, DPID_UNKNOWN );

#ifdef __GPAUTH_01
    ar.WriteString( g_Neuz.m_bGPotatoAuth? g_Neuz.m_szGPotatoNo: g_Neuz.m_szAccount );
#else	// __GPAUTH_01
    ar.WriteString( g_Neuz.m_szAccount );
#endif	// __GPAUTH_01
    ar.WriteString( g_Neuz.m_szPassword );
    ar.WriteString( g_Neuz.GetDeleteKey( szNo ) );
    ar << g_Neuz.m_apPlayer[nSlot]->m_idPlayer;
    ar << g_Neuz.m_dwAuthKey;
#ifdef __RT_1025
    ar << g_Neuz.m_aRTMessenger[nSlot].size();
    for( CRTMessenger::iterator it=g_Neuz.m_aRTMessenger[nSlot].begin(); it!=g_Neuz.m_aRTMessenger[nSlot].end(); it++ )
    {
        u_long uTemp = it->first;
        ar << it->first;
    }
#endif // __RT_1025

    SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #13
0
void CDPLoginClient::QueryTickCount( void )
{
    BEFORESENDSOLE( ar, PACKETTYPE_QUERYTICKCOUNT, DPID_UNKNOWN );
    ar << (DWORD)timeGetTime();
    SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #14
0
void CDPCoreClient::SendDestroyPlayer( CPlayer* pPlayer )
{
	BEFORESENDSOLE( ar, PACKETTYPE_DESTROY_PLAYER, pPlayer->GetSerial() );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #15
0
void CDPAccountClient::SendRemoveAccount( DPID idFrom )
{
	BEFORESENDSOLE( ar, PACKETTYPE_REMOVE_ACCOUNT, idFrom );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #16
0
void CDPAccountClient::SendCloseExistingConnection( const char* lpszAccount )
{
	BEFORESENDSOLE( ar, PACKETTYPE_CLOSE_EXISTING_CONNECTION, DPID_UNKNOWN );
	ar.WriteString( lpszAccount );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #17
0
void CDPAccountClient::SendPing( DPID idFrom )
{
	BEFORESENDSOLE( ar, PACKETTYPE_PING, idFrom );
	SEND( ar, this, DPID_SERVERPLAYER );
}
예제 #18
0
void CDPLoginSrvr::SendOneHourNotify( const char* lpszAccount)
{
	BEFORESENDSOLE( ar, PACKETTYPE_ONE_HOUR_NOTIFY, DPID_UNKNOWN );
	ar.WriteString( lpszAccount );
	SEND( ar, this, DPID_ALLPLAYERS );
}
예제 #19
0
void CDPLoginSrvr::SendError( LONG lError, DPID dpid )
{
	BEFORESENDSOLE( ar, PACKETTYPE_ERROR, dpid );
	ar << lError;
	SEND( ar, this, DPID_ALLPLAYERS );
}