Çözüldü Game Build Hata

  • Konuyu açan Konuyu açan 4pies
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 139
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ı.

4pies

Üye
Üye
Mesaj
25
Çözümler
1
Beğeni
4
Puan
53
Ticaret Puanı
0
Merhabalar,

Forumdaki Mob Target Info sistemini kurdum fakat game build alırken hata alıyorum sorunun çözümü için desteğinizi rica ederim,

Hatanın sebebi sürüm uyuşmazlığı GCC11 kurulu değil sunucuda fakat kurulu olan bilişim sunucusunda da çok daha farklı hatalar veriyor mob target sistemini kaldırınca localde bsd 9.2 gcc49 ile derleyebiliyorum ama bu sistemi eklediğimde build alamıyorum filesın sürümünü mü yükseltmem gerekiyor.

Sunucuda build alırken aldığım hata:

Bash:
Genişlet Daralt Kopyala
item_manager.cpp: In member function 'bool ITEM_MANAGER::CreateDropItemVector(CHARACTER*, CHARACTER*, std::vector<CItem*, std::allocator<CItem*> >&)':
item_manager.cpp:785: error: 'decltype' was not declared in this scope
item_manager.cpp:785: error: expected `;' before 'v'
item_manager.cpp:787: error: 'v' was not declared in this scope
item_manager.cpp:837: error: 'decltype' was not declared in this scope
item_manager.cpp:837: error: expected `;' before 'v'
item_manager.cpp:839: error: 'v' was not declared in this scope
item_manager.cpp:859: error: 'decltype' was not declared in this scope
item_manager.cpp:859: error: expected `;' before 'v'
item_manager.cpp:861: error: 'v' was not declared in this scope
compiling log.cpp
gmake: *** [.obj/item_manager.o] Error 1
gmake: *** Waiting for unfinished jobs....

Hazır vdi ile çalışıyorum localde metin2-GRININJA.ova dosyasını içe aktarıp build alıyordum öncesinde, mainline game source kullanıyorum.
 
Çözüm
Problemi şöyle çözdük @4pies ın söylediği gibi sürüm uyuşmazlığı vardı çünkü kodlarda decltype kullanılıyor ve decltype da
resim_2025-01-11_113143405.webp



C++:
Genişlet Daralt Kopyala
    // Drop Item Group
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            decltype(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                if (item)
                {
                    if (item->GetType() == ITEM_POLYMORPH)
                    {
                        if (item->GetVnum() ==...
ben de bu sistemi kurdum ve direkt olarak bu hatayı aldım ancak aldığım hata sürüm uyuşmazlığıyla alakalı değildi syntax error yapmıştım muhtemelen durum sende de böyle dosyada hatayla alakalı satırları atabilir misin acaba hata da öyle söylüyor çünkü, ayrıca pek bilgili biri olmadığımı belirteyim. tamamen olmayadabilir.
 
Hata veren kod parçacığı bu şekilde

item_manager.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_TARGET_INFORMATION_SYSTEM
bool ITEM_MANAGER::CreateDropItemVector(LPCHARACTER pkChr, LPCHARACTER pkKiller, std::vector<LPITEM>& vec_item)
{
    if (pkChr->IsPolymorphed() || pkChr->IsPC())
        return false;

    int iLevel = pkKiller->GetLevel();
    LPITEM item = NULL;

    // Drop Item Group
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            decltype(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                if (item)
                {
                    if (item->GetType() == ITEM_POLYMORPH)
                    {
                        if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
                        {
                            item->SetSocket(0, pkChr->GetRaceNum());
                        }
                    }

                    vec_item.push_back(item);
                }
            }
        }
    }

    // MobDropItem Group
    {
        itertype(m_map_pkMobItemGroup) it;
        it = m_map_pkMobItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkMobItemGroup.end())
        {
            CMobItemGroup* pGroup = it->second;

            // MOB_DROP_ITEM_BUG_FIX
            if (pGroup && !pGroup->IsEmpty())
            {
                const CMobItemGroup::SMobItemGroupInfo& info = pGroup->GetOne();
                item = CreateItem(info.dwItemVnum, info.iCount, 0, true, info.iRarePct);

                if (item) vec_item.push_back(item);
            }
            // END_OF_MOB_DROP_ITEM_BUG_FIX
        }
    }

    // Level Item Group
    {
        itertype(m_map_pkLevelItemGroup) it;
        it = m_map_pkLevelItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkLevelItemGroup.end())
        {
            if (it->second->GetLevelLimit() <= (DWORD)iLevel)
            {
                decltype(it->second->GetVector()) v = it->second->GetVector();

                for (DWORD i = 0; i < v.size(); i++)
                {
                    DWORD dwVnum = v[i].dwVNum;
                    item = CreateItem(dwVnum, v[i].iCount, 0, true);
                    if (item) vec_item.push_back(item);
                }
            }
        }
    }

    // BuyerTheitGloves Item Group
    {
        if (pkKiller->GetPremiumRemainSeconds(PREMIUM_ITEM) > 0 ||
            pkKiller->IsEquipUniqueGroup(UNIQUE_GROUP_DOUBLE_ITEM))
        {
            itertype(m_map_pkGloveItemGroup) it;
            it = m_map_pkGloveItemGroup.find(pkChr->GetRaceNum());

            if (it != m_map_pkGloveItemGroup.end())
            {
                decltype(it->second->GetVector()) v = it->second->GetVector();

                for (DWORD i = 0; i < v.size(); ++i)
                {
                    DWORD dwVnum = v[i].dwVnum;
                    item = CreateItem(dwVnum, v[i].iCount, 0, true);
                    if (item) vec_item.push_back(item);
                }
            }
        }
    }
    if (pkChr->GetMobDropItemVnum())
    {
        itertype(m_map_dwEtcItemDropProb) it = m_map_dwEtcItemDropProb.find(pkChr->GetMobDropItemVnum());

        if (it != m_map_dwEtcItemDropProb.end())
        {
            item = CreateItem(pkChr->GetMobDropItemVnum(), 1, 0, true);
            if (item) vec_item.push_back(item);
        }
    }

    if (pkChr->IsStone())
    {
        for (int i = 0; i < 14; ++i)
        {
            item = CreateItem(28030 + i, 1, 0, true);
            if (item) vec_item.push_back(item);
        }
    }

    return vec_item.size();
}
#endif
 
burda herhangi bir hata yok gibi geldi bana müsaitseniz iletişim bilgimi iletiyorum birlikte eklemeye çalışalım uygunsa size
 
Problemi şöyle çözdük @4pies ın söylediği gibi sürüm uyuşmazlığı vardı çünkü kodlarda decltype kullanılıyor ve decltype da
resim_2025-01-11_113143405.webp



C++:
Genişlet Daralt Kopyala
    // Drop Item Group
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            decltype(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                if (item)
                {
                    if (item->GetType() == ITEM_POLYMORPH)
                    {
                        if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
                        {
                            item->SetSocket(0, pkChr->GetRaceNum());
                        }
                    }

                    vec_item.push_back(item);
                }
            }
        }
    }

kodlar bu şekildeydi ancak item_manager'ı biraz inceleyince aşağıda decltype kullanılmadan yapılan atama vardı direkt olarak orayı baz alıp bu problemi çözdük


item_manager.cpp:
Genişlet Daralt Kopyala
// Drop Item Group
    {
        itertype(m_map_pkDropItemGroup) it;
        it = m_map_pkDropItemGroup.find(pkChr->GetRaceNum());

        if (it != m_map_pkDropItemGroup.end())
        {
            typeof(it->second->GetVector()) v = it->second->GetVector();

            for (DWORD i = 0; i < v.size(); ++i)
            {
                int iPercent = (v[i].dwPct * iDeltaPercent) / 100;

                if (iPercent >= number(1, iRandRange))
                {
                    item = CreateItem(v[i].dwVnum, v[i].iCount, 0, true);

                    if (item)
                    {
                        if (item->GetType() == ITEM_POLYMORPH)
                        {
                            if (item->GetVnum() == pkChr->GetPolymorphItemVnum())
                            {
                                item->SetSocket(0, pkChr->GetRaceNum());
                            }
                        }

                        vec_item.push_back(item);
                    }
                }
            }
        }
    }


burda decltype yerine typeof kullanılıp direkt belirtilmiş


Kod:
Genişlet Daralt Kopyala
//sistemde kullanılan kodlar
    if (it != m_map_pkDropItemGroup.end())
        {
            decltype(it->second->GetVector()) v = it->second->GetVector(); //kullanamıyoruz çünkü sürüm uyuşmazlığı

            for (DWORD i = 0; i < v.size(); ++i)



//kaynak dosyalarında kullanılan kodlar
if (it != m_map_pkDropItemGroup.end())
        {
            typeof(it->second->GetVector()) v = it->second->GetVector(); //decltype kullanılan yerleri bu şekilde değiştirdik sorunsuz şekilde build alabildik

            for (DWORD i = 0; i < v.size(); ++i)
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst