Çözüldü Event Manager 2x metin boss

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

jarova77

Üye
Üye
Mesaj
55
Çözümler
3
Beğeni
12
Puan
414
Ticaret Puanı
0
Merhaba event manager sistemini sorunsuz bir şekilde ekledim diğer etkinliklerin hepsi sorunsuz çalışıyo fakat 2x metin ve 2x boss eventlerini bir türlü çalıştıramadım value3 ede 100 yazıyorum ilgili kod blogu bu sanırım acemiyim şans faktörünü nasıl kaldırabilirim yardımcı olursanız sevinirim .

Kod:
Genişlet Daralt Kopyala
void CHARACTER_MANAGER::CheckEventForDrop(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
    const BYTE killerEmpire = pkKiller->GetEmpire();
    const TEventManagerData* eventPtr = NULL;
    LPITEM rewardItem = NULL;

    if (pkChr->IsStone())
    {
        eventPtr = CheckEventIsActive(DOUBLE_METIN_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
            const int prob = number(1, 100);
            const int success_prob = eventPtr->value[3];
            if (prob < success_prob)
            {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
            }
        }
    }
    else if (pkChr->GetMobRank() >= MOB_RANK_BOSS)
    {
        eventPtr = CheckEventIsActive(DOUBLE_BOSS_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
            const int prob = number(1, 100);
            const int success_prob = eventPtr->value[3];
            if (prob < success_prob)
            {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
            }
        }
    }
 
Çözüm
s:
Genişlet Daralt Kopyala
void CHARACTER_MANAGER::CheckEventForDrop(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
    const BYTE killerEmpire = pkKiller->GetEmpire();
    const TEventManagerData* eventPtr = NULL;
    LPITEM rewardItem = NULL;

    if (pkChr->IsStone())
    {
        eventPtr = CheckEventIsActive(DOUBLE_METIN_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto&...
s:
Genişlet Daralt Kopyala
void CHARACTER_MANAGER::CheckEventForDrop(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
    const BYTE killerEmpire = pkKiller->GetEmpire();
    const TEventManagerData* eventPtr = NULL;
    LPITEM rewardItem = NULL;

    if (pkChr->IsStone())
    {
        eventPtr = CheckEventIsActive(DOUBLE_METIN_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
        }
    }
    else if (pkChr->GetMobRank() >= MOB_RANK_BOSS)
    {
        eventPtr = CheckEventIsActive(DOUBLE_BOSS_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
        }
    }
 
Çözüm
s:
Genişlet Daralt Kopyala
void CHARACTER_MANAGER::CheckEventForDrop(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
    const BYTE killerEmpire = pkKiller->GetEmpire();
    const TEventManagerData* eventPtr = NULL;
    LPITEM rewardItem = NULL;

    if (pkChr->IsStone())
    {
        eventPtr = CheckEventIsActive(DOUBLE_METIN_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
        }
    }
    else if (pkChr->GetMobRank() >= MOB_RANK_BOSS)
    {
        eventPtr = CheckEventIsActive(DOUBLE_BOSS_LOOT_EVENT, killerEmpire);
        if (eventPtr)
        {
                std::vector<LPITEM> m_cache;
                for (const auto& vItem : vec_item)
                {
                    rewardItem = ITEM_MANAGER::Instance().CreateItem(vItem->GetVnum(), vItem->GetCount(), 0, true);
                    if (rewardItem) m_cache.emplace_back(rewardItem);
                }
                for (const auto& rItem : m_cache)
                    vec_item.emplace_back(rItem);
        }
    }
Çok teşekkür ederim çözüldü
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst