Çözüldü Game build warningleri

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
108
Çözümler
5
Beğeni
25
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.png


battle.cpp;
C++:
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.png


char.cpp
C++:
    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.png


C++:
    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.png


item.cpp
C++:
    //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.
Linkleri görebilmek için giriş yap veya kayıt ol.

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++:
    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++:
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
    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.
Linkleri görebilmek için giriş yap veya kayıt ol.

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++:
    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++:
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
    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.
Linkleri görebilmek için giriş yap veya kayıt ol.

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++:
    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++:
    if ((pkItem = GetInventoryItem(i)))         /* 8646. satır*/

Bu bana daha doğru geliyor;
C++:
    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