Çözüldü metin taşlarına taş eklemek

  • Konuyu açan Konuyu açan mehmet07
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 141
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ı.

mehmet07

Üye
Üye
Mesaj
37
Çözümler
1
Beğeni
5
Puan
49
Ticaret Puanı
0
gam/src> char.cpp dosyasını visual studioda açtım ve bu kısımdan taşları ekleyip kaldırıldığını öğrendim taşların hangi metinlere ekleyeceğimi ve düşme oranlarını nasıl ayarlayabilirim ve +0/1/+2/+3/+4 taşları nasıl ekleyebilirim peki
C++:
Genişlet Daralt Kopyala
void CHARACTER::DetermineDropMetinStone()
{
    const int METIN_STONE_NUM = 14;
    static DWORD c_adwMetin[METIN_STONE_NUM] =
    {
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound (aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 0;
    }
    else
    {
        const SStoneDropInfo& info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number (0, METIN_STONE_NUM - 1)];
            int iGradePct = number (1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100; // µ¹ +a -> +(a+1)ÀÌ µÉ¶§¸¶´Ù 100¾¿ Áõ°¡
                }
            }
        }
    }
}
teşekkürlerimi arz ederim.
 
Çözüm
sizin dediğiniz mob drop info, benim filesimde metin taşlarından taş çıkmıyor bunu nereden ve nasıl ekleyebilirim öğrenmeye çalışıyorum.
constants.cpp den ekleniyor bende ki şu şekilde
Constant.cpp:
Genişlet Daralt Kopyala
const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    100,    {30,    30,    30,    9,    1}    },
    {8006,    100,    {28,    29,    31,    11,    1}    },
    {8007,    100,    {24,    29,    32,    13,    2}    },
    {8008,    100,    {22,    28,    33,    15,    2}    },
    {8009,    100,    {21,    27,    33,    17,    2}    },
    {8010,    100,    {18,    26,    34,    20,    2}    },
    {8011,    100,    {14,    26,    35,    22,    3}    },
    {8012,    100,    {10,    26...
gam/src> char.cpp dosyasını visual studioda açtım ve bu kısımdan taşları ekleyip kaldırıldığını öğrendim taşların hangi metinlere ekleyeceğimi ve düşme oranlarını nasıl ayarlayabilirim ve +0/1/+2/+3/+4 taşları nasıl ekleyebilirim peki
C++:
Genişlet Daralt Kopyala
void CHARACTER::DetermineDropMetinStone()
{
    const int METIN_STONE_NUM = 14;
    static DWORD c_adwMetin[METIN_STONE_NUM] =
    {
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound (aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 0;
    }
    else
    {
        const SStoneDropInfo& info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number (0, METIN_STONE_NUM - 1)];
            int iGradePct = number (1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100; // µ¹ +a -> +(a+1)ÀÌ µÉ¶§¸¶´Ù 100¾¿ Áõ°¡
                }
            }
        }
    }
}
teşekkürlerimi arz ederim.
Böyle bir şey mi ?
 

Dosya Eklentileri

  • source taşlar.webp
    source taşlar.webp
    36,2 KB · Gösterim: 41
constants.cpp de
 
sizin dediğiniz mob drop info, benim filesimde metin taşlarından taş çıkmıyor bunu nereden ve nasıl ekleyebilirim öğrenmeye çalışıyorum.
constants.cpp den ekleniyor bende ki şu şekilde
Constant.cpp:
Genişlet Daralt Kopyala
const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    100,    {30,    30,    30,    9,    1}    },
    {8006,    100,    {28,    29,    31,    11,    1}    },
    {8007,    100,    {24,    29,    32,    13,    2}    },
    {8008,    100,    {22,    28,    33,    15,    2}    },
    {8009,    100,    {21,    27,    33,    17,    2}    },
    {8010,    100,    {18,    26,    34,    20,    2}    },
    {8011,    100,    {14,    26,    35,    22,    3}    },
    {8012,    100,    {10,    26,    37,    24,    3}    },
    {8013,    100,    {2,        26,    40,    29,    3}    },
    {8014,    100,    {0,        26,    41,    30,    3}    },
    {8024,    100,    {0,        26,    41,    30,    3}    },
    {8025,    100,    {0,        26,    41,    30,    3}    },
    {8026,    100,    {0,        26,    41,    30,    3}    },
    {8027,    100,    {0,        26,    41,    30,    3}    },
    {8051,    100,    {0,        26,    41,    30,    3}    },   
    {8052,    100,    {0,        26,    41,    30,    3}    },
    {8053,    100,    {0,        26,    41,    30,    3}    },
    {8054,    100,    {0,        26,    41,    30,    3}    },
    {8055,    100,    {0,        26,    41,    30,    3}    },   
    {8056,    100,    {0,        26,    41,    30,    3}    },   
    {8059,    100,    {0,        26,    41,    30,    3}    },
    {8061,    100,    {0,        26,    41,    30,    3}    },   

};
 
Çözüm
bendekide bu şekildeymiş peki bunun hangisi drop oranı oluyor ve tüm taşlar var mı örneğin savaşçıdan koryan taş hız taşı gibi

C++:
Genişlet Daralt Kopyala
const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};
 
bendekide bu şekildeymiş peki bunun hangisi drop oranı oluyor ve tüm taşlar var mı örneğin savaşçıdan koryan taş hız taşı gibi

C++:
Genişlet Daralt Kopyala
const SStoneDropInfo aStoneDrop[STONE_INFO_MAX_NUM] =
{
    //  mob        pct    {+0    +1    +2    +3    +4}
    {8005,    60,    {30,    30,    30,    9,    1}    },
    {8006,    60,    {28,    29,    31,    11,    1}    },
    {8007,    60,    {24,    29,    32,    13,    2}    },
    {8008,    60,    {22,    28,    33,    15,    2}    },
    {8009,    60,    {21,    27,    33,    17,    2}    },
    {8010,    60,    {18,    26,    34,    20,    2}    },
    {8011,    60,    {14,    26,    35,    22,    3}    },
    {8012,    60,    {10,    26,    37,    24,    3}    },
    {8013,    60,    {2,    26,    40,    29,    3}    },
    {8014,    60,    {0,    26,    41,    30,    3}    },
};
Bütün taşlar var. 60 olan rastgele bir taşın düşme şansıdır yani %60 ihtimalle metinden bir taş düşecek. 30-30-30-9-1 olanlarda +0/+1/+2/+3/+4 taşların düşme şansı
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst