[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 New Member

    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 New Member

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



    eyw :D
     
  3. DoctorWalk

    DoctorWalk New Member

    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 New Member

    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 New Member

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



    eyw teşekkürler.
     
  6. Karaeski

    Karaeski New Member

    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 New Member

    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 New Member

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



    Pekiiii
     
  9. Che

    Che New Member

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



    basarılı tskler ..
     
  10. Direnish

    Direnish New Member

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



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

    CikitaMux New Member

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



    Bu adam bir baska eyw efe cok saol
     
  12. koray_10

    koray_10 New Member

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



    hatalı kodlama :D
     
  13. besimbicer

    besimbicer New Member

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



    tsklerrrr
     
  14. Jayden JameS

    Jayden JameS New Member

    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ℓу New Member

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



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

    MithriLVI New Member

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



    teşekkürler
     
  17. LongTurk

    LongTurk Guest

    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. LongTurk

    LongTurk Guest

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



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

    NumarK New Member

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



    eline saglık dostum
     
  20. love2012

    love2012 New Member

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



    Saoll
     

Bu Sayfayı Paylaş