Çözüldü Sandık iç görü sistemini ekliyorum build de hata alıyorum

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

MsCharles

Üye
Üye
Mesaj
41
Çözümler
1
Beğeni
3
Puan
49
Ticaret Puanı
0
Ekran Alıntısı.PNG


hata veren blok:
Genişlet Daralt Kopyala
#include "../../libgame/include/grid.h"
void ITEM_MANAGER::GetChestItemList(const DWORD& dwChestVnum, std::vector<TChestDropInfoTable>& vec_item)
{
    const auto pGroup = GetSpecialItemGroup(dwChestVnum);
    if (!pGroup)
        return;

    std::vector<std::unique_ptr<CGrid>> pGrids;
    pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

    for (int i = 0; i < pGroup->GetGroupSize(); i++)
    {
        const auto itemTable = GetTable(pGroup->GetVnum(i));
        //pass if exp, yang or duplicate item
        if (!itemTable || !itemTable->dwVnum || itemTable->dwVnum < 3 || std::find_if(vec_item.begin(), vec_item.end(), [&pGroup, &i](const TChestDropInfoTable& data) -> bool { return static_cast<DWORD>(pGroup->GetVnum(i)) == data.dwItemVnum; }) != vec_item.end())
            continue;

        bool PushNewGrid = true;
        for (size_t iPage = 0; iPage < pGrids.size(); iPage++)
        {
            const auto iPos = pGrids.at(iPage)->FindBlank(1, itemTable->bSize);
            if (iPos >= 0)
            {
                pGrids.at(iPage)->Put(iPos, 1, itemTable->bSize);
                vec_item.push_back({ static_cast<BYTE>(iPage+1), static_cast<BYTE>(iPos), static_cast<DWORD>(pGroup->GetVnum(i)), static_cast<BYTE>(pGroup->GetCount(i)) });
                PushNewGrid = false;
                break;
            }
        }

        if (PushNewGrid)
        {
            pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
            i--;//again
        }

    }
    //sort by itemvnum..
    std::sort(vec_item.begin(), vec_item.end(), [](const TChestDropInfoTable& a, const TChestDropInfoTable& b) { return a.dwItemVnum < b.dwItemVnum; });
}
 
Çözüm
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
2 Kez
Arat:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir:
Genişlet Daralt Kopyala
pGrids.emplace_back(CGrid(15, 8));

Emin değilim ama böyle deneyebilir misin?
 
2 Kez
Arat:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir:
Genişlet Daralt Kopyala
pGrids.emplace_back(CGrid(15, 8));

Emin değilim ama böyle deneyebilir misin?
malesef olmadı

şu iki satırda hata veriyor

1 bu:
Genişlet Daralt Kopyala
    pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

2 bu:
Genişlet Daralt Kopyala
        if (PushNewGrid)
        {
            pGrids.emplace_back(std::make_unique<CGrid>(5, 8));
            i--;//again
        }
 
Source dosyanda ne kadar aşağıdaki kod var ise bu şekilde değiştirir misin?
NotePad++ kullanıyorsundur büyük ihtimal aç CTRL + F yap ve dosyalarda bul bölümüne gel Dizin kısmına source dosyanın olduğu dizini kopyala
Aranan tarafa değiştirilecek kodu, Değiştir kısmına da değiştir kısmındaki kodu yazıp tümünü değiştir yap

Arat
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir
pGrids.emplace_back(CGrid(5, 8));
 
Source dosyanda ne kadar aşağıdaki kod var ise bu şekilde değiştirir misin?
NotePad++ kullanıyorsundur büyük ihtimal aç CTRL + F yap ve dosyalarda bul bölümüne gel Dizin kısmına source dosyanın olduğu dizini kopyala
Aranan tarafa değiştirilecek kodu, Değiştir kısmına da değiştir kısmındaki kodu yazıp tümünü değiştir yap

Arat
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Değiştir
pGrids.emplace_back(CGrid(5, 8));
malesef yine olmadı @Whistle bir fikriniz var mı?
 
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
 
En son bir moderatör tarafından düzenlenmiş:
Çözüm
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8));
Bu sorununuzu çözücektir büyük ihtimal. Fakat make_unique c++14 ve c++20 destekli bir fonksiyon. Tavsiyem source'ünüzü güncel versiyona taşımanızdır.
 
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8));
Ekran Alıntısı.PNG

Bu sorununuzu çözücektir büyük ihtimal. Fakat make_unique c++14 ve c++20 destekli bir fonksiyon. Tavsiyem source'ünüzü güncel versiyona taşımanızdır.
files Whistle nin paylaştığı dosyaları kullanıyorum g++9
 
Bu şekilde olacak bir parantez eksik diyor

C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
 
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::make_unique<CGrid>(5, 8));

Bunu şu şekilde değiştirmeyi dene veya auto_ptr de deneyebilirsin
C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8));
Bu şekilde olacak bir parantez eksik diyor

C++:
Genişlet Daralt Kopyala
pGrids.emplace_back(std::unique_ptr <CGrid>(new CGrid(5, 8)));
Teşekkür ederim sizlere kapatılabilir çözüldü
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Üst