İletişim: [email protected]

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

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

  1. Karaeski

    Karaeski Member

    Katılım:
    8 Mart 2012
    Mesaj:
    392
    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.

    [HIDE]Buradan indirebilirsiniz.[/HIDE]



    LİNK2 : [HIDE]Ranking[/HIDE]



    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.
     
  2. DarkParadisE

    DarkParadisE Member

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



    eyw :D
     
  3. DoctorWalk

    DoctorWalk Member

    Katılım:
    22 Mayıs 2013
    Mesaj:
    77
    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 Member

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

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



    eyw teşekkürler.
     
  6. Karaeski

    Karaeski Member

    Katılım:
    8 Mart 2012
    Mesaj:
    392
    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 Member

    Katılım:
    22 Mayıs 2013
    Mesaj:
    77
    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 Member

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



    Pekiiii
     
  9. Che

    Che Member

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



    basarılı tskler ..
     
  10. Direnish

    Direnish Member

    Katılım:
    4 Eylül 2012
    Mesaj:
    497
    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 Member

    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 Member

    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 Member

    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 Member

    Katılım:
    10 Aralık 2012
    Mesaj:
    235
    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ℓу Member

    Katılım:
    4 Temmuz 2013
    Mesaj:
    499
    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 Member

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



    teşekkürler
     
  17. Becky

    Becky Administrator Site Yetkilisi

    Katılım:
    7 Mart 2012
    Mesaj:
    13,026
    Beğeniler:
    0
    Ödül Puanları:
    36
    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. Becky

    Becky Administrator Site Yetkilisi

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



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

    NumarK Member

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



    eline saglık dostum
     
  20. love2012

    love2012 Member

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



    Saoll
     

Bu Sayfayı Paylaş