• HyperFilter | DoS Protection | DDoS Protection | DoS Mitigation | DDoS Mitigation | AntiDoS | AntiDDoS | Proxy Shielding

[1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi

Karaeski

Kayıtlı Üye
Katılım
8 Mart 2012
Mesajlar
387
Herkeze kolay gelsin, bu kod için epey zaman harcamıştım. Sizde alın uygulayın kullanın öğrenin 🙂



Kod yazmak, roma rakamları gibidir. Hangi kodu nereye koyacağınız çıkacak olan sonucu belirler.

Bknz. İşler güçler / 28 Bölüm / 1 Kısım / 14.dk 😉



Aşşağıdaki kod satırlarını anlamayan, anlamakta güçlük çeken veya işleyiş hakkında bilgi edinmek isteyen arkadaşlar için, bu kodun

daha minimal halini C# üzerinde yazmıştım.

View hidden content is available for registered users!




LİNK2 :
View hidden content is available for registered users!




Ufak bir yapı oluşturdum, böylece kullanıcıları bu yapı içinde array olarak barındırıp, buradaki değerlere göre sıralayıp filitrelendirebilecez.

Kod:
struct _RANK_INFO {

    short m_Sid;

    short m_sNation;

    int   m_iLoyalty;

};



Bu kod, bir sıralama algoritmasıdır. BubbleSort dediğimiz bu algoritma bir dizi içerisindeki rakamları büyükten küçüğe veya

küçükten büyüğe sıralar. Bunu kullanıcıları NP'lerine göre sıralarken kullanıyoruz.

Kod:
/* Efe - 19:13 19.02.2013 */

_RANK_INFO* CEbenezerDlg::Sort(_RANK_INFO* pRankInfo)

{

    _RANK_INFO Temp;

    for (int i = m_sRankInfoIndex - 1; i > 0; i--)

    {

        for (int j = 1; j <= i; j++)

        {

            if( pRankInfo[j - 1].m_iLoyalty < pRankInfo[j].m_iLoyalty ) {

                Temp = pRankInfo[j - 1];

                pRankInfo[j - 1] = pRankInfo[j];

                pRankInfo[j] = Temp;

            }

        }

    }

    return pRankInfo;

}





Bu kod RankProcess, Rank'ın çalışmasını işlemesini koşullara bağlı olarak np ekleme silme vb. işlemleri yapan kod kısmı. Bİraz uzunca ama incelerseniz anlarsanınız.

Kod:
/* Efe - 19:13 20.02.2013 */

void CEbenezerDlg::RankProcess( CUser* pUser, short Type ) {



    // Add

    if( Type == 1 ) {

        

        if( pUser->m_pUserData->m_bNation == 1 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pKarusRank[i].m_Sid == 0 ) {

                    pKarusRank[i].m_Sid = pUser->GetSocketID();

                    pKarusRank[i].m_sNation = pUser->m_pUserData->m_bNation;

                    pKarusRank[i].m_iLoyalty = pUser->m_iLoyaltyDaily;

                    pUser->m_iLoyaltyDaily = 0;

                    m_sKarusIndex++;

                    m_sRankInfoIndex++;

                    // TRACE("### pKarusRank - Add Sid : %d ###\r\n", pKarusRank[i].m_Sid );

                    break;

                }

            }

        }



        if( pUser->m_pUserData->m_bNation == 2 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pHumanRank[i].m_Sid == 0 ) {

                    pHumanRank[i].m_Sid = pUser->GetSocketID();

                    pHumanRank[i].m_sNation = pUser->m_pUserData->m_bNation;

                    pHumanRank[i].m_iLoyalty = pUser->m_iLoyaltyDaily;

                    pUser->m_iLoyaltyDaily = 0;

                    m_sHumanIndex++;

                    m_sRankInfoIndex++;

                    // TRACE("### pHumanRank - Add Sid : %d ###\r\n", pHumanRank[i].m_Sid );

                    break;

                }

            }

        }

    }



    // Remove

    if( Type == 2 ) {

        if( pUser->m_pUserData->m_bNation == 1 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pKarusRank[i].m_Sid == pUser->GetSocketID() ) {

                    pKarusRank[i].m_Sid = 0;

                    pKarusRank[i].m_sNation = 0;

                    pKarusRank[i].m_iLoyalty = 0;

                    pUser->m_iLoyaltyDaily = 0;

                    m_sKarusIndex--;

                    m_sRankInfoIndex--;

                    // TRACE("### pKarusRank - Remove Sid : %d ###\r\n", pUser->GetSocketID() );

                    break;

                }

            }

        }



        if( pUser->m_pUserData->m_bNation == 2 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pHumanRank[i].m_Sid == pUser->GetSocketID() ) {

                    pHumanRank[i].m_Sid = 0;

                    pHumanRank[i].m_sNation = 0;

                    pHumanRank[i].m_iLoyalty = 0;

                    pUser->m_iLoyaltyDaily = 0;

                    m_sHumanIndex--;

                    m_sRankInfoIndex--;

                    // TRACE("### pHumanRank - Remove Sid : %d ###\r\n", pUser->GetSocketID() );

                    break;

                }

            }

        }

    }



    // Update

    if( Type == 3 ) {



        if( pUser->m_pUserData->m_bNation == 1 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pKarusRank[i].m_Sid == pUser->GetSocketID() ) {

                    pKarusRank[i].m_iLoyalty = pUser->m_iLoyaltyDaily;

                    // TRACE("### pKarusRank - Update Sid : %d ###\r\n", pKarusRank[i].m_Sid );

                    break;

                }

            }

        }



        if( pUser->m_pUserData->m_bNation == 2 ) {

            for(int i = 0; i < 3000; i++) 

            {

                if( pHumanRank[i].m_Sid == pUser->GetSocketID()) {

                    pHumanRank[i].m_iLoyalty = pUser->m_iLoyaltyDaily;

                    // TRACE("### pHumanRank - Update Sid : %d ###\r\n", pHumanRank[i].m_Sid );

                    break;

                }

            }

        }

    }

}



Bu Alt'a basıtığınızda kullanıcıdan gelen paket doğrultusunda çalışan void, rank tablosundaki paketlerin hepsi burada, aynı zamanda içinde chaos rank listesinin paketleri de var oda süpriz hediye olsun 😉

Kod:
/* Efe - 12:19 20.02.2013 */

void CUser::RankInfo( char* pBuf, CUser* pTUser )

{

    int send_index = 0, index = 0;

    char send_buff[1024]; memset( send_buff, 0x00, 1024 );

    short myindex = 0, sMark = 0;

    int k;



    m_pMain->m_sKarus = 0;

    m_pMain->m_sHuman = 0;



    _RANK_INFO* pKarusRank = new _RANK_INFO();

    pKarusRank = m_pMain->Sort( m_pMain->pKarusRank );



    _RANK_INFO* pHumanRank = new _RANK_INFO();

    pHumanRank = m_pMain->Sort( m_pMain->pHumanRank );



    if( m_pUserData->m_bNation == 1 ) {

        for(int i = 0; i < m_pMain->m_sKarusIndex; i++) 

        {

            if( pKarusRank[i].m_Sid == m_Sid ) {

                myindex = i+1;

                break;

            }

        }

    } 



    if( m_pUserData->m_bNation == 2 ) {

        for(int i = 0; i < m_pMain->m_sHumanIndex; i++) 

        {

            if( pHumanRank[i].m_Sid == m_Sid ) {

                myindex = i;

                break;

            }

        }

    }



    if( m_pUserData->m_bNation == 1 ) {

        for(int i = 0; i < m_pMain->m_sKarusIndex; i++) 

        {

            if( pKarusRank[i].m_Sid > 0 ) {

                if( m_pMain->m_sKarus < 10 ) {

                    m_pMain->m_sKarus++;

                }

            }

        }

    } 



    if( m_pUserData->m_bNation == 2 ) {

        for(int i = 0; i < m_pMain->m_sHumanIndex; i++) 

        {

            if( pHumanRank[i].m_Sid > 0 ) {

                if( m_pMain->m_sHuman < 10 ) {

                    m_pMain->m_sHuman++;

                }

            }

        }

    }



    BYTE Type = GetByte(pBuf, index);

    SetByte( send_buff, WIZ_RANKINFO, send_index );

    SetByte( send_buff, Type, send_index );



    switch( Type ) 

    {

        // 0x01 - Colony Zone Rank

        case 1:

            SetShort( send_buff, m_pMain->m_sKarus, send_index );

            for( k = 0; k < m_pMain->m_sKarus; k++) 

            {

                CUser* pUser = NULL;

                 pUser = (CUser*)m_pMain->m_Iocport.m_SockArray[pKarusRank[k].m_Sid];

                if( !pUser ) {

                    continue;

                }



                CKnights* pKnights = NULL;

                pKnights = m_pMain->m_KnightsArray.GetData( pUser->m_pUserData->m_bKnights );



                SetShort( send_buff, strlen(pUser->m_pUserData->m_id), send_index );

                SetString( send_buff, pUser->m_pUserData->m_id, strlen(pUser->m_pUserData->m_id), send_index );

                if( pKnights ) {

                    if( pKnights->m_byGrade <= 3 ) {

                        sMark = 0x01;

                    }

                    else {

                        sMark = 0x00;

                    }



                    SetByte( send_buff, sMark, send_index );

                    SetShort( send_buff, pUser->m_pUserData->m_bKnights, send_index );

                    SetShort( send_buff, pKnights->m_sMarkVersion, send_index );

                    SetShort( send_buff, strlen(pKnights->m_strName), send_index );

                    SetString( send_buff, pKnights->m_strName, strlen(pKnights->m_strName), send_index );

                }

                else {

                    SetByte( send_buff, sMark, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    //SetString( send_buff, "", 0, send_index );

                }

                SetDWORD( send_buff, pUser->m_iLoyaltyDaily, send_index );

                SetShort( send_buff, pUser->m_iLoyaltyCont, send_index );

            }



            // Human

            if( m_pMain->pHumanRank[0].m_Sid == 0 ) {

                m_pMain->m_sHuman = 0;

            }

            SetShort( send_buff, m_pMain->m_sHuman, send_index );

            for(k = 0; k < m_pMain->m_sHuman; k++) 

            {

                CUser* pUser = NULL;

                pUser = (CUser*)m_pMain->m_Iocport.m_SockArray[pHumanRank[k].m_Sid];

                if( !pUser ) {

                    continue;

                }



                CKnights* pKnights = NULL;

                pKnights = m_pMain->m_KnightsArray.GetData( pUser->m_pUserData->m_bKnights );



                SetShort( send_buff, strlen(pUser->m_pUserData->m_id), send_index );

                SetString( send_buff, pUser->m_pUserData->m_id, strlen(pUser->m_pUserData->m_id), send_index );

                if( pKnights ) {

                    if( pKnights->m_byGrade <= 3 ) {

                        sMark = 0x01;

                    }

                    else {

                        sMark = 0x00;

                    }



                    SetByte( send_buff, sMark, send_index );

                    SetShort( send_buff, pUser->m_pUserData->m_bKnights, send_index );

                    SetShort( send_buff, pKnights->m_sMarkVersion, send_index );

                    SetShort( send_buff, strlen(pKnights->m_strName), send_index );

                    SetString( send_buff, pKnights->m_strName, strlen(pKnights->m_strName), send_index );

                }

                else {

                    SetByte( send_buff, sMark, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    SetShort( send_buff, 0x00, send_index );

                    //SetString( send_buff, "", 0, send_index );

                }



                SetDWORD( send_buff, pUser->m_iLoyaltyDaily, send_index );

                SetShort( send_buff, pUser->m_iLoyaltyCont, send_index );

            }



            // Source

            SetShort( send_buff, myindex, send_index );

            SetDWORD( send_buff, m_iLoyaltyDaily, send_index );

            SetShort( send_buff, m_iLoyaltyCont, send_index );

            Send( send_buff, send_index );

            break;



        // 0x02 - Unkown

        case 2:

            break;



        // 0x03 - Chaos War List

        case 3:

            SetByte( send_buff, 5, send_index ); // List count,

            for(int i = 0; i < 4; i++) {

                SetShort( send_buff, strlen("test"), send_index); // id len

                SetString( send_buff, "test", strlen("test"), send_index ); // id

                SetShort( send_buff, 11+i, send_index ); // kill

                SetShort( send_buff, 5, send_index ); // dead

            }

            SetShort( send_buff, strlen(m_pUserData->m_id), send_index);

            SetString( send_buff, m_pUserData->m_id, strlen(m_pUserData->m_id), send_index );

            SetShort( send_buff, 3, send_index );

            SetShort( send_buff, 0, send_index );

            

            SetDWORD( send_buff, 1500000, send_index ); // event exp bonus

            SetDWORD( send_buff, 1500000, send_index ); // premium exp bonus

            Send(send_buff, send_index );

            break;

    }

}



İlerleyen günlerde, paylaşımlarım devam edicek benden - bizden - forumdan geliştirmekten, merak etmekten, araştırmaktan ayrılmayın.
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Şu Ranking Olayınıda Twostars'dan Forum'dan Aldım Diye Yazssaydin iyi Olurdu Kardesim Yinede Emeğine Sağlık...
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Şu Ranking Olayınıda Twostars'dan Forum'dan Aldım Diye Yazssaydin iyi Olurdu Kardesim Yinede Emeğine Sağlık...



Arkadaş girip o dediğin forumdan Bu kodu bul getir desem beceremessin milete camur atarsın 😀
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Twostars'ın foruma yazan "Ernosto" da benim üyeliğim arkadaşım. Bize her şey orjinal 😉 Melih bir ara sana full source vericem aklımdasın sana seviom 😀 sadece sana vercem 😀
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Arkadaş girip o dediğin forumdan Bu kodu bul getir desem beceremessin milete camur atarsın 😀

Yazdiğim Cümleyi iyi Oku Rahatsız.. Ranking Dalgasından Bahsediyorum Ben KOD'dan Herhangi bir Cümlemi Yazmısım Ranking Dalgasından Bahsediyoruz Burda.. Sen Herşeyi Cok iyi Biliyorsun Zaten Aslanım.. Sen Git ilyas Abinle Calısmalarına Devam et.. 🙂
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Yazdiğim Cümleyi iyi Oku Rahatsız.. Ranking Dalgasından Bahsediyorum Ben KOD'dan Herhangi bir Cümlemi Yazmısım Ranking Dalgasından Bahsediyoruz Burda.. Sen Herşeyi Cok iyi Biliyorsun Zaten Aslanım.. Sen Git ilyas Abinle Calısmalarına Devam et.. 🙂

Pekiiii
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Tesekkürler Reyiz İnş Millete Yararlı Olur 🙂
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Efe Kardeşim 0sk1 sourceye sorunsuz bir şekilde ekledim hiç bir hata almadan ama ebenzer patlıyor sebebini bulamadım bir yardımcı olurmusun
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Merak ettim 😀 Karaeski buglu halimi yoksa 😀 bugsuzmu belirtirsen ona göre bişiler yapalım 😀
 
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



0sk1 sourcelerin socket sorunu var onuda çözmen imkansız 😀
 
Geri
Üst