Çözüldü Büyülü Metalin +Basma Oranını Ayarlayabilir Miyiz?

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

coskun66

Üye
Üye
Mesaj
105
Çözümler
4
Beğeni
30
Puan
699
Ticaret Puanı
0
büyülü metalin +basma yuzdesını ayarlayabılırmıyız arkadaslar benım fılesımde 2 tane metal var ben bırını atıyorum %15 daha sans verecek sekılde ayarlamak ıstıyorum. demırcı el kıtabında oldugu gıbı mesela sımdıden teşekkür ederım...
 
Çözüm
Daha önce bende oyundaki bi metalin artı basma oranını değiştirmeye uğraşmadığım için bi fikrim yok lakin oyunun kaynak kodlarına biraz göz gezdirdim sorunun cevabını bulabilmek için.
Sanırsam bulduğumu düşünüyorum buralarda +basma oranlarıyla ilgili bazı değerler var.
C++:
else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL)
    {
        if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÀÌ ¾ÆÀÌÅÛÀ¸·Î °³·®ÇÒ ¼ö ¾ø½À´Ï´Ù."));
            return false;
        }
    }

subtype ITEM_TUNING değerini alan bir itemin value0 değerindeki her bir sayı kaynak kodu tarafından farklı bir şekilde tanımlanmış.

Kaynak kodda biraz daha araştırma yaptıktan sonra şu kodlara...
büyülü metalin +basma yuzdesını ayarlayabılırmıyız arkadaslar benım fılesımde 2 tane metal var ben bırını atıyorum %15 daha sans verecek sekılde ayarlamak ıstıyorum. demırcı el kıtabında oldugu gıbı mesela sımdıden teşekkür ederım...
Dostum, tam hatırlamıyorum ama veritabanında refine ile alakalıydı diye hatırlıyorum orayı bir kontrol et istersen
 
Dostum, tam hatırlamıyorum ama veritabanında refine ile alakalıydı diye hatırlıyorum orayı bir kontrol et istersen
Benimde aklıma orası gelmişti ama o kısım hangi itemin dönüştüğü ve yüzde kaç ile şansı olduğuydu. Bu itemlerin şans arttırma faktörü var bunların yeri tespit edilirse ancak o şekilde olur diye düşünüyorum.
 
Daha önce bende oyundaki bi metalin artı basma oranını değiştirmeye uğraşmadığım için bi fikrim yok lakin oyunun kaynak kodlarına biraz göz gezdirdim sorunun cevabını bulabilmek için.
Sanırsam bulduğumu düşünüyorum buralarda +basma oranlarıyla ilgili bazı değerler var.
C++:
else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL)
    {
        if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÀÌ ¾ÆÀÌÅÛÀ¸·Î °³·®ÇÒ ¼ö ¾ø½À´Ï´Ù."));
            return false;
        }
    }

subtype ITEM_TUNING değerini alan bir itemin value0 değerindeki her bir sayı kaynak kodu tarafından farklı bir şekilde tanımlanmış.

Kaynak kodda biraz daha araştırma yaptıktan sonra şu kodlara rastladım. Bu kodlara göre yagong_prob başarılı geçme oranı daha fazla;
C++:
int prob = number(1, 100);
    int success_prob = prt->prob;
    bool bDestroyWhenFail = false;

    const char* szRefineType = "SCROLL";

    if (pkItemScroll->GetValue(0) == HYUNIRON_CHN ||
        pkItemScroll->GetValue(0) == YONGSIN_SCROLL ||
        pkItemScroll->GetValue(0) == YAGONG_SCROLL) // Çöö, ¿ë½ÅÀÇ Ãູ¼, ¾ß°øÀÇ ºñÀü¼  ó¸®
    {
        const char hyuniron_prob[9] = { 100, 75, 65, 55, 45, 40, 35, 25, 20 };
        const char yagong_prob[9] = { 100, 100, 90, 80, 70, 60, 50, 30, 20 };

        if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL)
        {
            success_prob = hyuniron_prob[MINMAX(0, item->GetRefineLevel(), 8)];
        }
        else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL)
        {
            success_prob = yagong_prob[MINMAX(0, item->GetRefineLevel(), 8)];
        }
        else if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) {} // @fixme121
        else
        {
            sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
        }

        if (test_server)
        {
            ChatPacket(CHAT_TYPE_INFO, "[Only Test] Success_Prob %d, RefineLevel %d ", success_prob, item->GetRefineLevel());
        }
        if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) // ÇööÀº ¾ÆÀÌÅÛÀÌ ºÎ¼Á®¾ß ÇÑ´Ù.
            bDestroyWhenFail = true;

        // DETAIL_REFINE_LOG
        if (pkItemScroll->GetValue(0) == HYUNIRON_CHN)
        {
            szRefineType = "HYUNIRON";
        }
        else if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL)
        {
            szRefineType = "GOD_SCROLL";
        }
        else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL)
        {
            szRefineType = "YAGONG_SCROLL";
        }
        // END_OF_DETAIL_REFINE_LOG
    }

    // DETAIL_REFINE_LOG
    if (pkItemScroll->GetValue(0) == MUSIN_SCROLL) // ¹«½ÅÀÇ Ãູ¼´Â 100% ¼º°ø (+4±îÁö¸¸)
    {
        success_prob = 100;

        szRefineType = "MUSIN_SCROLL";
    }
    // END_OF_DETAIL_REFINE_LOG
    else if (pkItemScroll->GetValue(0) == MEMO_SCROLL)
    {
        success_prob = 100;
        szRefineType = "MEMO_SCROLL";
    }
    else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL)
    {
        success_prob = 80;
        szRefineType = "BDRAGON_SCROLL";
    }

Oyunda ekli olan tüm scroll typelarda bunlar;
C++:
enum enum_RefineScrolls
{
    CHUKBOK_SCROLL = 0,
    HYUNIRON_CHN   = 1, // Áß±¹¿¡¼¸¸ »ç¿ë
    YONGSIN_SCROLL = 2,
    MUSIN_SCROLL   = 3,
    YAGONG_SCROLL  = 4,
    MEMO_SCROLL       = 5,
    BDRAGON_SCROLL    = 6,
};

Buna göre büyülü metalin value0 değerine 4 yazarsanız. Demircinin el kitabının bastığı oranla aynı olacaktır.

Bu işlemi gerçekleştirirseniz büyük ihtimal büyülü metal ile eşyaya +basarken eşya yanarsa demircinin el kitabında olduğu gibi + değeri 1 puan düşecektir. Çünkü büyülü metal görünüşte büyülü metal olsa da value değerini 4 yaparsanız, oyuna göre bu demircinin el kitabının gördüğü aynı işlevi görecektir.

Yukarıda verdiğim kodda da subtype değeri ITEM_TUNING olan bir eşyanın value0 değeri 4 ise kaynak kodu bunu YAGONG_SCROLL ismini tanımlayacak.

Lakin daha yüksek oranlar istiyorsanız ne yazık ki kaynak kodlarında düzenleme yapmanız gerekiyor yada player.refine'deki probları arttırmanız gerekir. player.refinedeki problarda genel şans oranlarıdır. Her yerde değişiklikler işlenir.
 
Son düzenleme:
Çözüm
Daha önce bende oyundaki bi metalin artı basma oranını değiştirmeye uğraşmadığım için bi fikrim yok lakin oyunun kaynak kodlarına biraz göz gezdirdim sorunun cevabını bulabilmek için.
Sanırsam bulduğumu düşünüyorum buralarda +basma oranlarıyla ilgili bazı değerler var.
C++:
else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL)
    {
        if (item->GetType() != ITEM_METIN || item->GetRefineLevel() != 4)
        {
            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("ÀÌ ¾ÆÀÌÅÛÀ¸·Î °³·®ÇÒ ¼ö ¾ø½À´Ï´Ù."));
            return false;
        }
    }

subtype ITEM_TUNING değerini alan bir itemin value0 değerindeki her bir sayı kaynak kodu tarafından farklı bir şekilde tanımlanmış.

Kaynak kodda biraz daha araştırma yaptıktan sonra şu kodlara rastladım. Bu kodlara göre yagong_prob başarılı geçme oranı daha fazla;
C++:
int prob = number(1, 100);
    int success_prob = prt->prob;
    bool bDestroyWhenFail = false;

    const char* szRefineType = "SCROLL";

    if (pkItemScroll->GetValue(0) == HYUNIRON_CHN ||
        pkItemScroll->GetValue(0) == YONGSIN_SCROLL ||
        pkItemScroll->GetValue(0) == YAGONG_SCROLL) // Çöö, ¿ë½ÅÀÇ Ãູ¼, ¾ß°øÀÇ ºñÀü¼  ó¸®
    {
        const char hyuniron_prob[9] = { 100, 75, 65, 55, 45, 40, 35, 25, 20 };
        const char yagong_prob[9] = { 100, 100, 90, 80, 70, 60, 50, 30, 20 };

        if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL)
        {
            success_prob = hyuniron_prob[MINMAX(0, item->GetRefineLevel(), 8)];
        }
        else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL)
        {
            success_prob = yagong_prob[MINMAX(0, item->GetRefineLevel(), 8)];
        }
        else if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) {} // @fixme121
        else
        {
            sys_err("REFINE : Unknown refine scroll item. Value0: %d", pkItemScroll->GetValue(0));
        }

        if (test_server)
        {
            ChatPacket(CHAT_TYPE_INFO, "[Only Test] Success_Prob %d, RefineLevel %d ", success_prob, item->GetRefineLevel());
        }
        if (pkItemScroll->GetValue(0) == HYUNIRON_CHN) // ÇööÀº ¾ÆÀÌÅÛÀÌ ºÎ¼Á®¾ß ÇÑ´Ù.
            bDestroyWhenFail = true;

        // DETAIL_REFINE_LOG
        if (pkItemScroll->GetValue(0) == HYUNIRON_CHN)
        {
            szRefineType = "HYUNIRON";
        }
        else if (pkItemScroll->GetValue(0) == YONGSIN_SCROLL)
        {
            szRefineType = "GOD_SCROLL";
        }
        else if (pkItemScroll->GetValue(0) == YAGONG_SCROLL)
        {
            szRefineType = "YAGONG_SCROLL";
        }
        // END_OF_DETAIL_REFINE_LOG
    }

    // DETAIL_REFINE_LOG
    if (pkItemScroll->GetValue(0) == MUSIN_SCROLL) // ¹«½ÅÀÇ Ãູ¼´Â 100% ¼º°ø (+4±îÁö¸¸)
    {
        success_prob = 100;

        szRefineType = "MUSIN_SCROLL";
    }
    // END_OF_DETAIL_REFINE_LOG
    else if (pkItemScroll->GetValue(0) == MEMO_SCROLL)
    {
        success_prob = 100;
        szRefineType = "MEMO_SCROLL";
    }
    else if (pkItemScroll->GetValue(0) == BDRAGON_SCROLL)
    {
        success_prob = 80;
        szRefineType = "BDRAGON_SCROLL";
    }

Oyunda ekli olan tüm scroll typelarda bunlar;
C++:
enum enum_RefineScrolls
{
    CHUKBOK_SCROLL = 0,
    HYUNIRON_CHN   = 1, // Áß±¹¿¡¼¸¸ »ç¿ë
    YONGSIN_SCROLL = 2,
    MUSIN_SCROLL   = 3,
    YAGONG_SCROLL  = 4,
    MEMO_SCROLL       = 5,
    BDRAGON_SCROLL    = 6,
};

Buna göre büyülü metalin value0 değerine 4 yazarsanız. Demircinin el kitabının bastığı oranla aynı olacaktır.

Bu işlemi gerçekleştirirseniz büyük ihtimal büyülü metal ile eşyaya +basarken eşya yanarsa demircinin el kitabında olduğu gibi + değeri 1 puan düşecektir. Çünkü büyülü metal görünüşte büyülü metal olsa da value değerini 4 yaparsanız, oyuna göre bu demircinin el kitabının gördüğü aynı işlevi görecektir.

Yukarıda verdiğim kodda da subtype değeri ITEM_TUNING olan bir eşyanın value0 değeri 4 ise kaynak kodu bunu YAGONG_SCROLL ismini tanımlayacak.

Lakin daha yüksek oranlar istiyorsanız ne yazık ki kaynak kodlarında düzenleme yapmanız gerekiyor yada player.refine'deki probları arttırmanız gerekir. player.refinedeki problarda genel şans oranlarıdır. Her yerde değişiklikler işlenir.

gercekten nutkum tutuluyor sızın yazdıklarınızdan :) tesekkur ederım okadar arastırmıssınız.. fakat bu kodlara nasıl ulasabılırım tam olarak nerelere gırdınız hangı dosyadan buldunuz
 
gercekten nutkum tutuluyor sızın yazdıklarınızdan :) tesekkur ederım okadar arastırmıssınız.. fakat bu kodlara nasıl ulasabılırım tam olarak nerelere gırdınız hangı dosyadan buldunuz
Merak insana ne yaptırmaz ki. :D
Kodların bulunduğu dosya: game/src/char_item.cpp
 
Bilgi için teşekkürler @Whistle :) Tıkandığım noktaya değinmişsin farklı oran belirlemeyi bulamadığım için bende yanlış yönlendirmek istemedim aydınlattın bizi :)
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst