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

Kayıtlı Üye
Katılım
8 Mart 2012
Mesajlar
345
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.

Buradan indirebilirsiniz.


LİNK2 :

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.
 
Kayıtlı Üye
Katılım
22 Mayıs 2013
Mesajlar
72
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...
 
Kayıtlı Üye
Katılım
9 Mart 2012
Mesajlar
563
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 :D
 
Kayıtlı Üye
Katılım
8 Mart 2012
Mesajlar
345
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 :D sadece sana vercem :D
 
Kayıtlı Üye
Katılım
22 Mayıs 2013
Mesajlar
72
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 :D

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.. :)
 
Kayıtlı Üye
Katılım
9 Mart 2012
Mesajlar
563
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
 

Che

Kayıtlı Üye
Katılım
3 Nisan 2013
Mesajlar
446
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



basarılı tskler ..
 
Kayıtlı Üye
Katılım
4 Eylül 2012
Mesajlar
472
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Tesekkürler Reyiz İnş Millete Yararlı Olur :)
 
Kayıtlı Üye
Katılım
4 Mayıs 2013
Mesajlar
37
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Bu adam bir baska eyw efe cok saol
 
Kayıtlı Üye
Katılım
10 Aralık 2012
Mesajlar
225
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
 
Kayıtlı Üye
Katılım
4 Temmuz 2013
Mesajlar
451
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Teşekkür ederim kullanıcağım.
 
Administrator
Yönetici
Yönetici
Katılım
7 Mart 2012
Mesajlar
12,586
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



Merak ettim :D Karaeski buglu halimi yoksa :D bugsuzmu belirtirsen ona göre bişiler yapalım :D
 
Administrator
Yönetici
Yönetici
Katılım
7 Mart 2012
Mesajlar
12,586
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



0sk1 sourcelerin socket sorunu var onuda çözmen imkansız :D
 
Kayıtlı Üye
Katılım
27 Mart 2012
Mesajlar
690
Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



eline saglık dostum
 
Üst Alt
Reklam
Reklam