Çözüldü Game source build sorunları yardım edebilir misiniz?

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ı.

BisQvit

Üye
Üye
Mesaj
43
Çözümler
1
Beğeni
23
Puan
689
Merhaba Mmotutkunları üyeleri, başlıkta da belirtmiş olduğum üzere aşağıda yer alan warningleri alıyorum, c++ bilgim fazla olmadığından ve sorunu çözecek bilgileri araştırmalarıma rağmen bulamadığım için sizlerle paylaşmak istedim yardımlarınız bekliyorum.

Warning 1:
char_battle.cpp: In member function 'bool CHARACTER:: Damage(CHARACTER*, int, EDamageTyp e)':

char_battle.cpp:1710: warning: unused variable 'iCurHP'

char_battle.cpp:1711: warning: unused variable 'iCurSP'

Warning 2:
char_item.cpp: In member function 'bool CHARACTER::UseItemEx(CItem*, TItemPos)':

char_item.cpp:5155: warning: comparison between signed and unsigned integer expressions

Warning 3:
item.cpp: In member function 'bool CItem::EquipTo(CHARACTER*, BYTE)':

item.cpp:867: warning: suggest parentheses around assignment used as truth value

item.cpp: In member function 'bool CItem::Unequip()':

item.cpp:961: warning: suggest parentheses around assignment used as truth value

Warning 4:
shop_manager.cpp: In member function 'void CShopManager::Sell(CHARACTER*, BYTE, BYTE)':

shop_manager.cpp:302: warning: comparison between signed and unsigned integer expressio ns

shop_manager.cpp:302: warning: 'dwPrice' is used uninitialized in this function


Linkleri görebilmek için giriş yap veya kayıt ol.
Linkleri görebilmek için giriş yap veya kayıt ol.
Linkleri görebilmek için giriş yap veya kayıt ol.
Linkleri görebilmek için giriş yap veya kayıt ol.

Evet sonuç olarak build işlemi gerçekleşiyor fakat bu warningleri alıyorum, yardımcı olabilecek kişilere şimdiden çok teşekkürler, sorunlu dosyaları konu içerisine ekliyorum, araştırmalarıma rağmen bu warningler ile ilgili düzgün bir bilgi bulamadım.
Tüm form üyelerine iyi ve sağlıklı günler dileirm.
 
unused variable => Değişken kullanılmıyor demek. Bu yüzden bu değişkenlerin bulduğu kısımları yorum satırlarına çevirebilirsiniz.
char_battle.cpp dosyasının 1710 ve 1711. satırında yer alan şu kodları silebilir veya yorum satırına alabilirsiniz.
C++:
    //int iCurHP = GetHP();
    //int iCurSP = GetSP();

warning: comparison between signed and unsigned integer expressions
bu hatada ise değişik veri türleri arasında karşılaştırma yaptığını söylüyor.
char_item.cpp'de hata verdiği 5155. satır ise burası
C++:
                                if (item->GetSocket(0) >= _countof(aApplyInfo))
                                {
                                        sys_err ("INVALID BLEND ITEM(id : %d, vnum : %d). APPLY TYPE IS %d.", item->GetID(), item->GetVnum(), item->GetSocket(0));
                                        return false;
                                }
Kesin olarak nasıl çözülür bir fikrim yok ama novaline srcde bu kısım kaldırılmış.


suggest parentheses around assignment used as truth value
bu hatada ise if koşullarına parantez ekleyebilirsiniz diyor. item.cpp dosyanızda 867. satırda hata veren satır burası
C++:
        if (item=m_pOwner->GetWear(i))

Çözüm olur mu bilmiyorum şu şekilde değiştirmeyi deneyin.
C++:
        if ((item=m_pOwner->GetWear(i)))


shop_manager.cpp dosyasında 302. satır ise burası
C++:
    if (dwPrice > item->GetGold()) dwPrice = item->GetGold();

Şu şekilde değiştirip tekrar deneyiniz.
C++:
    if (dwPrice > item->GetGold())
        dwPrice = item->GetGold();
 
Dediklerinizi uyguladım, char_battle.cpp'de ki iCurHp ve Sp sorunu düzeldi, Char_item.cpp de 5155.satırda ki koda başka çözüm bakıcam araştırıcam, shop_manager.cpp de ki sorun devam ediyor rica etsem tekrar bakabilir misiniz acaba ? Bu arada diğer çözümler için ise çok teşekkür ederim :)
 
shop_manager.cpp'de if koşulunda
C++:
    if (dwPrice > item->GetGold())
        dwPrice = item->GetGold();

item->GetGold diyor. item.cpp'de bu fonksiyon int türünde döndürüyor.
C++:
int CItem::GetGold()
{
    if (IS_SET(GetFlag(), ITEM_FLAG_COUNT_PER_1GOLD))
    {
        if (GetProto()->dwGold == 0)
            return GetCount();
        else
            return GetCount() / GetProto()->dwGold;
    }
    else
        return GetProto()->dwGold;
}

Fakat shop_manager.cpp dosyasında dwPrice değişkeni DWORD veri türünü almış. Bu yüzden uyumsuzluk oluyor.
 
Bu şekilde düşündüm, c++11 desteğine ihtiyacınız var.


C:
#include <cstdlib>
if (std::atoi(dwPrice) > item->GetGold())
     dwPrice = item->GetGold();
 
Bu yang bugunun önüne geçilmesi için yazılmış bir kod, itemleri satarken eğer itemin satış fiyatı dükkanda satılma ücretinden fazlaysa fiyatları eşitlemesi için yazılmış bir kod. Eğer siz itemin satılma fiyatını alma fiyatından fazla yapmazsanız bu koda ihtiyacınız kalmaz. O yüzden kodu kaldırabilirsiniz.
 
@Reached verdiğin bilgi için teşekkür ederim konunun başında belirtiğim 2.Warning için bir çözümün var mı ? Yardımcı olabilir misin ?
Bu arada Whistle hocam size de ayrı teşekkür ederim formunuzda bulunan üyelere ayırmış olduğunuz zaman ve yaptığınız bilgi paylaşımlarından dolayı gerçekten takdire şayan şeyler bunlar.
 
@Reached verdiğin bilgi için teşekkür ederim konunun başında belirtiğim 2.Warning için bir çözümün var mı ? Yardımcı olabilir misin ?
Bu arada Whistle hocam size de ayrı teşekkür ederim formunuzda bulunan üyelere ayırmış olduğunuz zaman ve yaptığınız bilgi paylaşımlarından dolayı gerçekten takdire şayan şeyler bunlar.
Rica ederim.
Warningin demek istediğini açıklamış zaten @Whistle int ile unsigned int arasında bir kıyaslama yapılmaya çalışıyor. Eğer güncel kütüphaneleri kullansaydınız std lib'iyle çok rahat çözülebilecek şeylerdi. Ama şu şekilde bir dener misin ?
C:
int coa_ = _countof(aApplyInfo);

if (item->GetSocket(0) >= coa_)
{
    sys_err ("INVALID BLEND ITEM (id : %d, vnum : %d). APPLY_TYPE_IS %d", item->GetID(), item->GetVnum(), item->GetSocket(0));
    return false;
}
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst