Çözüldü Game build warningleri

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

aykutleee

Üye
Üye
Mesaj
106
Çözümler
5
Beğeni
22
Puan
454
Ticaret Puanı
0
Merhabalar. g++9 kullanıyorum ve game build ederken baya bir hata aldım. Çoğunu çözdüm ancak aşağıdakilerde zorlandım deniyorum deniyorum olmuyor :rolleyes:

Warning-1 #################################

hata1.webp


battle.cpp;
C++:
Genişlet Daralt Kopyala
DWORD GET_ATTACK_SPEED(LPCHARACTER ch)
{
    if (NULL == ch)
        return 1000;

    LPITEM item = ch->GetWear(WEAR_WEAPON);     /* 697. satır */
    DWORD default_bonus = SPEEDHACK_LIMIT_BONUS * 3;
    DWORD riding_bonus = 0;

    if (ch->IsRiding())
    {
        // ¹º°¡¸¦ ÅÀÀ¸¸é Ãß°¡°ø¼Ó 50
        riding_bonus = 50;
    }

    DWORD ani_speed = ani_attack_speed(ch);
    DWORD real_speed = (ani_speed * 100) / (default_bonus + ch->GetPoint(POINT_ATT_SPEED) + riding_bonus);

    // ´Ü°ËÀÇ °æ¿ì °ø¼Ó 2¹è
    if (item && item->GetSubType() == WEAPON_DAGGER)
        real_speed /= 2;

    return real_speed;

}
#########################################
Warning-2 #################################

hata2.webp


char.cpp
C++:
Genişlet Daralt Kopyala
    for (WORD i = 0; i < size; ++i)
    {
        if (pkItem = (GetInventoryItem(i)))         /* 8646. satır*/
        {
            vec_pkItems.emplace_back(pkItem);
            int slotPosition = GetQuickslotPosition(QUICKSLOT_TYPE_ITEM, (BYTE)pkItem->GetCell());
            if (slotPosition != -1)
                DelQuickslot(slotPosition);
            pkItem->RemoveFromCharacter();
        }
    }
#########################################
Warning-3 #################################

hata3.webp


C++:
Genişlet Daralt Kopyala
    LPITEM pkItem = nullptr;
    if (!(pkItem = GetItem(Cell)) || (pkItem && !pkItem->IsStackable() || IS_SET(pkItem->GetAntiFlag(), ITEM_ANTIFLAG_STACK))) return;
    

    if (sCount > ITEM_MAX_COUNT || sCount <= 0) return;
    if (sCount > pkItem->GetCount()) sCount = pkItem->GetCount();

#########################################
Warning-4 #################################

Hata5.webp


item.cpp
C++:
Genişlet Daralt Kopyala
    //penteados da loja de penteados de guerreiro
    if (GetVnum() >= 73001 && GetVnum() <= 73012 || GetVnum() >= 75001 && GetVnum() <= 75012)
        return false;

    //penteados da loja de penteados de ninja
    if (GetVnum() >= 73251 && GetVnum() <= 73262 || GetVnum() >= 75201 && GetVnum() <= 75212)
        return false;

    //penteados da loja de penteados de sura
    if (GetVnum() >= 73501 && GetVnum() <= 73512 || GetVnum() >= 75401 && GetVnum() <= 75412)
        return false;

    //penteados da loja de penteados de shaman
    if (GetVnum() >= 73751 && GetVnum() <= 73762 || GetVnum() >= 75601 && GetVnum() <= 75612)
        return false;
    
    //Fatos e vestidos de casamentos
    if (GetVnum() >= 11901 && GetVnum() <= 11904 || GetVnum() >= 11911 && GetVnum() <= 11914)
        return false;
 
Çözüm
1. Sorun: Bunun hakkında açıkcası pek fikrim yoktu, ufak bir araştırma sonucu şöyle bir şey buldum.

Olay kısaca şu: if bloğunun altında süslü parantez kullanmandan işlem yapıldığında derleyicinin bu kodu olması gerektiği gibi algılayamamasından kaynaklanan bir problem olduğunu anlatıyorlar.
C++:
Genişlet Daralt Kopyala
    if (!ch)
    {
        return 1000;
    }

2. Sorunun çözümü: Condition'larda tanımlamaya genelde başvurmamaya çalışın, veya başvuruyorsanız şu şekilde kullanın.
C++:
Genişlet Daralt Kopyala
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
Genişlet Daralt Kopyala
    for (WORD i = 0; i < size; ++i)
    {...
1. Sorun: Bunun hakkında açıkcası pek fikrim yoktu, ufak bir araştırma sonucu şöyle bir şey buldum.

Olay kısaca şu: if bloğunun altında süslü parantez kullanmandan işlem yapıldığında derleyicinin bu kodu olması gerektiği gibi algılayamamasından kaynaklanan bir problem olduğunu anlatıyorlar.
C++:
Genişlet Daralt Kopyala
    if (!ch)
    {
        return 1000;
    }

2. Sorunun çözümü: Condition'larda tanımlamaya genelde başvurmamaya çalışın, veya başvuruyorsanız şu şekilde kullanın.
C++:
Genişlet Daralt Kopyala
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
Genişlet Daralt Kopyala
    for (WORD i = 0; i < size; ++i)
    {
        pkItem = GetInventoryItem(i);
        if (pkItem)         /* 8646. satır*/
        {
            vec_pkItems.emplace_back(pkItem);
            int slotPosition = GetQuickslotPosition(QUICKSLOT_TYPE_ITEM, (BYTE)pkItem->GetCell());
            if (slotPosition != -1)
                DelQuickslot(slotPosition);
            pkItem->RemoveFromCharacter();
        }
    }
 
Çözüm
1. Sorun: Bunun hakkında açıkcası pek fikrim yoktu, ufak bir araştırma sonucu şöyle bir şey buldum.

Olay kısaca şu: if bloğunun altında süslü parantez kullanmandan işlem yapıldığında derleyicinin bu kodu olması gerektiği gibi algılayamamasından kaynaklanan bir problem olduğunu anlatıyorlar.
C++:
Genişlet Daralt Kopyala
    if (!ch)
    {
        return 1000;
    }

2. Sorunun çözümü: Condition'larda tanımlamaya genelde başvurmamaya çalışın, veya başvuruyorsanız şu şekilde kullanın.
C++:
Genişlet Daralt Kopyala
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
Genişlet Daralt Kopyala
    for (WORD i = 0; i < size; ++i)
    {
        pkItem = GetInventoryItem(i);
        if (pkItem)         /* 8646. satır*/
        {
            vec_pkItems.emplace_back(pkItem);
            int slotPosition = GetQuickslotPosition(QUICKSLOT_TYPE_ITEM, (BYTE)pkItem->GetCell());
            if (slotPosition != -1)
                DelQuickslot(slotPosition);
            pkItem->RemoveFromCharacter();
        }
    }
Teşekkür ederim iki warningde böylece çözülmüş oldu
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst