Einige Sachen sind nicht optimal , wenn nicht sogar grottenschlecht gelöst, aber es erfüllt seinen Zweck besser als die andern Scripts da draußen.
Ihr dürft gerne über die miserable Qualität lästern , jedoch wüsste ich nicht warum ich ein vollkommenes Produkt releasen sollte wenn ich eine Version davon hab mit der man Spaß am basteln haben kann :)
DATABASE:
dpTrans.cpp:
Alles anzeigen
dpTrans.h
DbManager.cpp
Alles anzeigen
DbManager.h
CLIENT:
DpClient.cpp
Alles anzeigen
DPClient.h
Neuz.cpp
Neuz.h
FuncTextCmd.cpp
WndWorld.cpp
Mover.cpp
MoverRender.cpp
Alles anzeigen
Worldserver:
DPDatabaseClient.cpp
Alles anzeigen
DPServer.cpp
ThreadMng.cpp
User.cpp
Alles anzeigen
Alles anzeigen
DatabaseClient.h
User.h
Alles anzeigen
KernDateien:
File-Upload.net - ArenaCore.rar
Ich gebe keine Garantie auf die Richtigkeit der Codebausteine noch garantiere ich das davon alles in dem eigentlichen Script verwendet wird.
Dies ist eine ungecleante und veraltete Version des eigentlichen Codes und wurde nie über einen längeren Zeitraum verwendet.
Jeder der sich NICHT mit dem Source Code ansatzweise auskennt sollte die Finger hiervon lassen.
Credits :
99.9% Pumaaa ( Recode )
0.01% lol32/caja ( Arena ~ Original Code )
SCREEN
Ihr dürft gerne über die miserable Qualität lästern , jedoch wüsste ich nicht warum ich ein vollkommenes Produkt releasen sollte wenn ich eine Version davon hab mit der man Spaß am basteln haben kann :)
DATABASE:
dpTrans.cpp:
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void CDPTrans::OnGetArenaScore( CAr & ar, DPID dpid, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
- {
- LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus = g_DbManager.AllocRequest();
- g_DbManager.MakeRequest( lpDbOverlappedPlus, lpBuf, uBufSize );
- lpDbOverlappedPlus->dpid = dpid;
- lpDbOverlappedPlus->nQueryMode = LOAD_ARENASCORE;
- PostQueuedCompletionStatus( g_DbManager.m_hIOCPPut, 1, NULL, &lpDbOverlappedPlus->Overlapped );
- }
- void CDPTrans::OnSendArenaScore( CAr & ar, DPID dpid, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
- {
- LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus = g_DbManager.AllocRequest();
- g_DbManager.MakeRequest( lpDbOverlappedPlus, lpBuf, uBufSize );
- lpDbOverlappedPlus->dpid = dpid;
- lpDbOverlappedPlus->nQueryMode = SAVE_ARENASCORE;
- PostQueuedCompletionStatus( g_DbManager.m_hIOCPPut, 1, NULL, &lpDbOverlappedPlus->Overlapped );
- }
- void CDPTrans::SendArenaScore( u_long idPlayer, int nAkill, int nAdeath )
- {
- BEFORESENDDUAL( ar, PACKETTYPE_ARENA_GET, DPID_UNKNOWN, DPID_UNKNOWN );
- ar << idPlayer << nAkill << nAdeath;
- SEND( ar, this, DPID_ALLPLAYERS );
- }
- #endif
dpTrans.h
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void OnGetArenaScore( CAr & ar, DPID dpid, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize );
- void OnSendArenaScore( CAr & ar, DPID dpid, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize );
- void SendArenaScore( u_long idPlayer, int nAkill, int nAdeath );
- #endif
DbManager.cpp
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void CDbManager::LoadArenaScore( CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )
- {
- CAr arRead( lpDbOverlappedPlus->lpBuf, lpDbOverlappedPlus->uBufSize );
- u_long nidPlayer;
- int nArenaKills;
- int nArenaDeaths;
- arRead >> nidPlayer;
- char szQuery[QUERY_SIZE] = {0,};
- sprintf( szQuery, "uspLoadArena @serverindex='%02d', @idPlayer='%07d' ",g_appInfo.dwSys, nidPlayer ); //can add arguments directly %s %d..
- //RUN QUERY
- //RUN QUERY
- if( FALSE == qry->Exec( szQuery ) )
- {
- WriteLog( "%s, %d\t%s", __FILE__, __LINE__, szQuery );
- }
- while( qry->Fetch() )
- {
- nArenaKills = qry->GetInt("nArenaKills");
- nArenaDeaths = qry->GetInt("nArenaDeaths");
- }
- CDPTrans::GetInstance()->SendArenaScore( nidPlayer, nArenaKills, nArenaDeaths );
- FreeRequest( lpDbOverlappedPlus );
- }
- void CDbManager::SaveArenaScore( CQuery *qry, LPDB_OVERLAPPED_PLUS lpDbOverlappedPlus )
- {
- CAr arRead( lpDbOverlappedPlus->lpBuf, lpDbOverlappedPlus->uBufSize );
- u_long idPlayer;
- int nArenaKills;
- int nArenaDeaths;
- BOOL bCreate;
- arRead >> idPlayer >> nArenaKills >> nArenaDeaths >> bCreate;
- char szQuery[250] = {0,};
- if( !bCreate )
- sprintf( szQuery, "uspSaveArena @serverindex='%02d', @idPlayer='%07d', @nArenaKills='%d', @nArenaDeaths='%d'", g_appInfo.dwSys, idPlayer, nArenaKills, nArenaDeaths );
- else
- sprintf( szQuery, "TRUNCATE TABLE dbo.ArenaScore");
- if( FALSE == qry->Exec( szQuery ) )
- {
- WriteLog( "%s, %d\t%s", __FILE__, __LINE__, szQuery );
- FreeRequest( lpDbOverlappedPlus );
- return;
- }
- FreeRequest( lpDbOverlappedPlus );
- }
- #endif
DbManager.h
CLIENT:
DpClient.cpp
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void CDPClient::OnArenaUpdate( CAr & ar )
- {
- int nCount;
- ar >> nCount;
- g_ArenaScore.m_vecUserInfo.clear();
- for( int i=0; i<nCount; i++)
- {
- ARENA_INFO tmpInfo;
- ar.ReadString( tmpInfo.szName );
- ar >> tmpInfo.nKills;
- ar >> tmpInfo.nDeaths;
- ar >> tmpInfo.nPoints;
- ar >> tmpInfo.nKills2;
- ar >> tmpInfo.nDeaths2;
- ar >> tmpInfo.nLevel;
- g_ArenaScore.m_vecUserInfo.push_back( tmpInfo );
- }
- }
- #endif
DPClient.h
Neuz.cpp
Neuz.h
FuncTextCmd.cpp
WndWorld.cpp
Mover.cpp
MoverRender.cpp
PHP-Quellcode
- #ifdef __ARENA_SCORE
- //Arena Score
- if( GetWorld()->IsArena() && !strcmp( m_szName , g_ArenaScore.m_vecUserInfo[0].szName) )
- {
- pTexture = g_Neuz.m_pHeroIconArena;
- if( pTexture )
- {
- long oldpointx=point.x;
- long oldpointy=point.y;
- point.y -= pTexture->m_size.cy + 5;
- point.y = point.y+1;
- //point.x = point.x + 15;
- if(pGuild==NULL)
- {
- point.x -= cs1.cx + 27;
- }
- else
- {
- if( cs1.cx > cs2.cx )
- {
- if(this->GetGuild()->m_dwLogo!=NULL)
- {
- point.x -= cs1.cx + 52;
- }
- else
- {
- point.x -= cs1.cx + 27;
- }
- }
- else
- {
- if(this->GetGuild()->m_dwLogo!=NULL)
- {
- point.x -= cs2.cx + 52;
- }
- else
- {
- point.x -= cs2.cx + 27;
- }
- }
- }
- pTexture->Render( &g_Neuz.m_2DRender, point );
- point.x=oldpointx;
- point.y=oldpointy;
- }
- }
- #endif
Worldserver:
DPDatabaseClient.cpp
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void CDPDatabaseClient::OnGetArenaScore( CAr & ar, DPID, DPID )
- {
- u_long idPlayer;
- int nKills,nDeaths;
- ar >> idPlayer >> nKills >> nDeaths;
- CUser* pUser = g_UserMng.GetUserByPlayerID( idPlayer );
- if(IsValidObj(pUser))
- {
- pUser->m_nArenaKills = nKills;
- pUser->m_nArenaDeaths = nDeaths;
- //g_UserMng.AddArenaUpdateSingleUser( pUser ); // Send User joined to other Clients.
- }
- }
- void CDPDatabaseClient::SendArenaScore( u_long idPlayer, int nAkill , int nAdeath, BOOL bCreate )
- {
- BEFORESENDDUAL( ar, PACKETTYPE_ARENA_UPDATE, DPID_UNKNOWN, DPID_UNKNOWN );
- ar << idPlayer << nAkill << nAdeath << bCreate;
- SEND( ar, this, DPID_SERVERPLAYER );
- }
- void CDPDatabaseClient::GetArenaScore( u_long idPlayer )
- {
- BEFORESENDDUAL( ar, PACKETTYPE_ARENA_GET, DPID_UNKNOWN, DPID_UNKNOWN );
- ar << idPlayer;
- SEND( ar, this, DPID_SERVERPLAYER );
- }
- #endif
DPServer.cpp
ThreadMng.cpp
User.cpp
PHP-Quellcode
- #ifdef __ARENA_SCORE
- if( GetWorld()->IsArena() ) // This hook fixes the Score and ID of the player no matter where they are
- if( !g_ArenaScore.IsArenaUser( this ) )
- {
- g_ArenaScore.ArenaOnJoin( this ); // or how they got into thr Arena.
- }
- if( !GetWorld()->IsArena() )
- if( g_ArenaScore.IsArenaUser( this ) )
- {
- g_ArenaScore.ArenaOnExit( this );
- }
- #endif
PHP-Quellcode
- #ifdef __ARENA_SCORE
- void CUserMng::AddArenaUpdate()
- {
- CAr arBlock;
- arBlock << NULL_ID << SNAPSHOTTYPE_ARENA_UPDATE;
- arBlock << g_ArenaScore.m_vecUserInfo.size();
- for( DWORD i = 0; i < g_ArenaScore.m_vecUserInfo.size(); i++ )
- {
- arBlock.WriteString( g_ArenaScore.m_vecUserInfo[i].szName );
- arBlock << g_ArenaScore.m_vecUserInfo[i].nKills;
- arBlock << g_ArenaScore.m_vecUserInfo[i].nDeaths;
- arBlock << g_ArenaScore.m_vecUserInfo[i].nPoints;
- arBlock << g_ArenaScore.m_vecUserInfo[i].nKills2;
- arBlock << g_ArenaScore.m_vecUserInfo[i].nDeaths2;
- arBlock << g_ArenaScore.m_vecUserInfo[i].nLevel;
- }
- GETBLOCK( arBlock, lpBlock, uBlockSize );
- for( DWORD i = 0; i < g_ArenaScore.m_vecUserInfo.size(); i++ )
- {
- CUser* pUserReceive = prj.GetUser(g_ArenaScore.m_vecUserInfo[i].dwID);
- if( !pUserReceive )
- continue;
- pUserReceive->AddBlock( lpBlock, uBlockSize );
- }
- }
- void CUserMng::GetArenaUsers()
- {
- if( ::timeGetTime() > g_ArenaScore.m_nRejoinTime + 2000 )
- {
- map<DWORD, CUser*>::iterator it;
- for( it = m_users.begin(); it != m_users.end(); ++it )
- {
- CUser* pUser = it->second;
- if( !pUser->IsValid() )
- continue;
- if( pUser->GetWorld()->IsArena() )
- g_ArenaScore.NewUser( pUser );
- }
- }
- }
- #endif
DatabaseClient.h
User.h
PHP-Quellcode
KernDateien:
File-Upload.net - ArenaCore.rar
Ich gebe keine Garantie auf die Richtigkeit der Codebausteine noch garantiere ich das davon alles in dem eigentlichen Script verwendet wird.
Dies ist eine ungecleante und veraltete Version des eigentlichen Codes und wurde nie über einen längeren Zeitraum verwendet.
Jeder der sich NICHT mit dem Source Code ansatzweise auskennt sollte die Finger hiervon lassen.
Credits :
99.9% Pumaaa ( Recode )
0.01% lol32/caja ( Arena ~ Original Code )
SCREEN