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

'Kaynak Kod Paylaşımları' forumunda Karaeski tarafından 6 Temmuz 2013 tarihinde açılan konu

  1. Karaeski

    Karaeski
    Kayıtlı Üye

    Katılım:
    8 Mart 2012
    Mesaj:
    387
    Beğeniler:
    0
    Ödül Puanları:
    16
    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.

    UnHidden Content:
    Buradan indirebilirsiniz.


    LİNK2 :
    UnHidden Content:
    Ranking


    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.m_Sid == 0 ) {
    
                        pKarusRank.m_Sid = pUser->GetSocketID();
    
                        pKarusRank.m_sNation = pUser->m_pUserData->m_bNation;
    
                        pKarusRank.m_iLoyalty = pUser->m_iLoyaltyDaily;
    
                        pUser->m_iLoyaltyDaily = 0;
    
                        m_sKarusIndex++;
    
                        m_sRankInfoIndex++;
    
                        // TRACE("### pKarusRank - Add Sid : %d ###\r\n", pKarusRank.m_Sid );
    
                        break;
    
                    }
    
                }
    
            }
    
    
    
            if( pUser->m_pUserData->m_bNation == 2 ) {
    
                for(int i = 0; i < 3000; i++) 
    
                {
    
                    if( pHumanRank.m_Sid == 0 ) {
    
                        pHumanRank.m_Sid = pUser->GetSocketID();
    
                        pHumanRank.m_sNation = pUser->m_pUserData->m_bNation;
    
                        pHumanRank.m_iLoyalty = pUser->m_iLoyaltyDaily;
    
                        pUser->m_iLoyaltyDaily = 0;
    
                        m_sHumanIndex++;
    
                        m_sRankInfoIndex++;
    
                        // TRACE("### pHumanRank - Add Sid : %d ###\r\n", pHumanRank.m_Sid );
    
                        break;
    
                    }
    
                }
    
            }
    
        }
    
    
    
        // Remove
    
        if( Type == 2 ) {
    
            if( pUser->m_pUserData->m_bNation == 1 ) {
    
                for(int i = 0; i < 3000; i++) 
    
                {
    
                    if( pKarusRank.m_Sid == pUser->GetSocketID() ) {
    
                        pKarusRank.m_Sid = 0;
    
                        pKarusRank.m_sNation = 0;
    
                        pKarusRank.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.m_Sid == pUser->GetSocketID() ) {
    
                        pHumanRank.m_Sid = 0;
    
                        pHumanRank.m_sNation = 0;
    
                        pHumanRank.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.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;
    
                    }
    
                }
    
            }
    
        }
    
    }
    
    [/i][/i][/i][/i][/i]
    [i][i][i][i]



    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 ;)

    [CODE]

    /* 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;

    }

    }

    [/i][/i][/i][/i][/CODE][i][i][i][i]



    İlerleyen günlerde, paylaşımlarım devam edicek benden - bizden - forumdan geliştirmekten, merak etmekten, araştırmaktan ayrılmayın.[/i][/i][/i][/i][/i][/i][/i][/i]
     
  2. DarkParadisE

    DarkParadisE
    Kayıtlı Üye

    Katılım:
    14 Mart 2013
    Mesaj:
    915
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    eyw :D
     
  3. DoctorWalk

    DoctorWalk
    Kayıtlı Üye

    Katılım:
    22 Mayıs 2013
    Mesaj:
    76
    Beğeniler:
    0
    Ödül Puanları:
    6
    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...
     
  4. HiFi

    HiFi
    Kayıtlı Üye

    Katılım:
    9 Mart 2012
    Mesaj:
    575
    Beğeniler:
    1
    Ödül Puanları:
    18
    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
     
  5. Development

    Development
    Kayıtlı Üye

    Katılım:
    11 Mart 2012
    Mesaj:
    306
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    eyw teşekkürler.
     
  6. Karaeski

    Karaeski
    Kayıtlı Üye

    Katılım:
    8 Mart 2012
    Mesaj:
    387
    Beğeniler:
    0
    Ödül Puanları:
    16
    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
     
  7. DoctorWalk

    DoctorWalk
    Kayıtlı Üye

    Katılım:
    22 Mayıs 2013
    Mesaj:
    76
    Beğeniler:
    0
    Ödül Puanları:
    6
    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.. :)
     
  8. HiFi

    HiFi
    Kayıtlı Üye

    Katılım:
    9 Mart 2012
    Mesaj:
    575
    Beğeniler:
    1
    Ödül Puanları:
    18
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    Pekiiii
     
  9. Che

    Che
    Kayıtlı Üye

    Katılım:
    3 Nisan 2013
    Mesaj:
    462
    Beğeniler:
    1
    Ödül Puanları:
    18
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    basarılı tskler ..
     
  10. Direnish

    Direnish
    Kayıtlı Üye

    Katılım:
    4 Eylül 2012
    Mesaj:
    493
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    Tesekkürler Reyiz İnş Millete Yararlı Olur :)
     
  11. CikitaMux

    CikitaMux
    Kayıtlı Üye

    Katılım:
    4 Mayıs 2013
    Mesaj:
    37
    Beğeniler:
    0
    Ödül Puanları:
    6
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    Bu adam bir baska eyw efe cok saol
     
  12. koray_10

    koray_10
    Kayıtlı Üye

    Katılım:
    9 Nisan 2012
    Mesaj:
    164
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    hatalı kodlama :D
     
  13. besimbicer

    besimbicer
    Kayıtlı Üye

    Katılım:
    8 Nisan 2012
    Mesaj:
    132
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    tsklerrrr
     
  14. Jayden JameS

    Jayden JameS
    Kayıtlı Üye

    Katılım:
    10 Aralık 2012
    Mesaj:
    234
    Beğeniler:
    0
    Ödül Puanları:
    16
    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
     
  15. cєηgℓу

    cєηgℓу
    Kayıtlı Üye

    Katılım:
    4 Temmuz 2013
    Mesaj:
    495
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    Teşekkür ederim kullanıcağım.
     
  16. MithriLVI

    MithriLVI
    Kayıtlı Üye

    Katılım:
    10 Nisan 2012
    Mesaj:
    489
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    teşekkürler
     
  17. Papi

    Papi Administrator Site Yetkilisi Ko-Cuce.Com.TR V.I.P Üye

    Katılım:
    7 Mart 2012
    Mesaj:
    12,796
    Beğeniler:
    103
    Ödül Puanları:
    63
    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
     
  18. Papi

    Papi Administrator Site Yetkilisi Ko-Cuce.Com.TR V.I.P Üye

    Katılım:
    7 Mart 2012
    Mesaj:
    12,796
    Beğeniler:
    103
    Ödül Puanları:
    63
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    0sk1 sourcelerin socket sorunu var onuda çözmen imkansız :D
     
  19. NumarK

    NumarK
    Kayıtlı Üye

    Katılım:
    27 Mart 2012
    Mesaj:
    718
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    eline saglık dostum
     
  20. love2012

    love2012
    Kayıtlı Üye

    Katılım:
    25 Ekim 2012
    Mesaj:
    368
    Beğeniler:
    0
    Ödül Puanları:
    16
    Cevap: [1453 / 1534 / 1886 / 19xx] Cz, Ardream Rank Sistemi



    Saoll
     

Bu Sayfayı Paylaş