Çözüldü 6 ve 7. efsun game.core

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

MEKA

Discord: mekaprojects
Süper Moderatör
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
2.795
Çözümler
287
Beğeni
2.069
Puan
1.850
Ticaret Puanı
2
6 ve 7. efsunu sadece silahlara basılacak şekilde ayarladım zırha basmaya çalıştıgımızda verdigi game.core
Kod:
(gdb)
#0  0x08186d7e in CItem::AddRareAttribute (this=0x7f7a4780)
    at item_attribute.cpp:411
        i = 99
        count = 0
        pos = <value optimized out>
        nAttrSet = 1
        avail = {<std::_Vector_base<int,std::allocator<int> >> = {
    _M_impl = {<std::allocator<int>> = {<__gnu_cxx::new_allocator<int>> = {<No d                                                                                                                                                             ata fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0,
      _M_end_of_storage = 0x0}}, <No data fields>}
        nAttrLevel = <value optimized out>
        pszIP = <value optimized out>
#1  0x080b5e23 in CHARACTER::UseItemEx (this=0x7f762000, item=0x7f7a3b40,
    DestCell={window_type = 1 '\001', cell = 31}) at char_item.cpp:4391
        item2 = 0x7f7a4780
        iLimitRealtimeStartFirstUseFlagIndex = <value optimized out>
        wDestCell = <value optimized out>
        bDestInven = <value optimized out>
        __FUNCTION__ = "UseItemEx"
        b1 = {{count = 1000, prob = 302, vnum = 1}, {count = 10, prob = 150,
    vnum = 27002}, {count = 10, prob = 75, vnum = 27003}, {count = 10,
    prob = 100, vnum = 27005}, {count = 10, prob = 50, vnum = 27006}, {
    count = 10, prob = 80, vnum = 27001}, {count = 10, prob = 50,
---Type <return> to continue, or q <return> to quit---vnum = 27002},Quit

syserr hatası
number_ex: number(): first argument is bigger than second argument 0 -> -1, item_attribute.cpp 411

411. satır
C++:
const TItemAttrTable& r = g_map_itemRare[avail[number(0, avail.size() - 1)]];
 
number_ex: number(): first argument is bigger than second argument 0 -> -1, item_attribute.cpp 411
burada ilk arguman ikinciden büyük olamaz demiş.
Veritabanında efsunların gelme oranları mevcut. lv1 < lv2 < lv3 < lv4 < lv5 şeklinde olmalı
 
Evet zaten tam olarak dediginiz gibi bence silah dışındaki diger itemlere bu efsunu engellersek problem çözülecek gibi geldi çünkü sistem şuan efsun zırha basılıyor olarak gösteriyor fakat db üzerinde zırha gelecek herhangi bir efsun bulunmadıgı için efsunu getiremiyor
 
Acaba veritabanından verileri yanlış mı çekiyor?
 
Evet zaten tam olarak dediginiz gibi bence silah dışındaki diger itemlere bu efsunu engellersek problem çözülecek gibi geldi çünkü sistem şuan efsun zırha basılıyor olarak gösteriyor fakat db üzerinde zırha gelecek herhangi bir efsun bulunmadıgı için efsunu getiremiyor
Mesajı düzenlerken siz yorum yaptınız düşüncelerim bunlar bunun dışında zaten sadece 5.oranın gelmesi gibi bi problemde var
 
Veritabanından gelmesini istediğiniz item türlerine seçebilirsiniz. Sadece sizin eklediğiniz efsunda mı yapıyor bu sorunu yoksa diğer tüm 6 ve 7. efsunda da benzer problem mevcut mu?
 
srcde kendiliginden var olan efsunu aktif ettim 6 ve 7. efsunlar navicat üzerinden sadece weapona gelecek şekilde ayarlı fakat srcde kontrol olmadıgi için veriyor sanırım game.core

efsun degistirme kullanınca efsunu degistiremezsin diyor fakat efsun arttırma kagıdı kullanınca uyarı vermiyor

item_rare üzerinde armora gelebilecek bir efsun yok ise uyarı ver gibi yada sadece silaha gelecek şeklinde kontrol eklemek gerekiyor diye düşünüyorum çünkü navicat item_rare üzerinde zırha gelebilecek bir efsun bulunmuyor ve arttırma kagıdı atınca kontrol olmadıgı için eklemeye çalışıyor efsunu bulamayıncada game.core verip kapatıyor chleri başkada birşey gelmiyor aklıma
 
Yeni eklediğiniz item bu efsunu veriyorsa char_item.cpp'de şuna benzer bi kontrol ekleyebilirsiniz;
C++:
if (ITEM_WEAPON != item2->GetType())
{
    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Sadece silahlara atılabilir"));
    return false;
}
 
Problem dedigim gibi item_rare tablosunda zırha atılacak bir efsun bulamadıgı için game core veriyor. Bunu kontrol ekleyerek çözdük.
Çözümde yardımcı oldugun için Teşekkürler @Whistle
 
Çözüm
Son durumu bildirdiğiniz için teşekkürler. Konunuzu çözüldü olarak işaretliyorum. Benzer sorunu yaşayanlar için güzel bi kaynak daha oluştu ^_^
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst