Çözüldü +1 efsun arttırma

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

damador

MT Üye
MT Üye
Mesaj
164
Çözümler
7
Beğeni
49
Puan
489
Ticaret Puanı
0
Pvm efsunu için +1 ekliyecek şekilde Buradaki konudan yola çıkarak aşağıdaki gib düzenledim fakat sadece itemdeki ilk 5 efsunu kontrol ediyor pvm efsun 6. efsunda ekli olunca iteme eklenmiyor yani ekli olan efsunu görmüyor
itemdeki 6-7 efsunlarıda görmesi için ne yapmalıyım?

Kod:
                                        else if (item->GetVnum() == 78211)
                                        {
                                            if ((item2->GetType() == ITEM_WEAPON || item2->GetType() == ITEM_ARMOR) && item2->HasAttr(119))
                                            {
                                                int16_t idx = item2->FindAttribute(119);
                                                int32_t value = item2->GetAttributeValue(idx)+1;
                                                if (item2->GetAttributeValue(idx) >= 11 && item2->GetAttributeValue(idx) <= 24)
                                                {
                                                    item2->SetForceAttribute(idx, 119, value);
                                                }
                                                else
                                                {
                                                    ChatPacket(CHAT_TYPE_INFO, "Bu eşyayı sadece 10-25 arası Pvm ortalama zarar getireblirsiniz.");
                                                    return false;
                                                }
                                            }
                                            else
                                            {
                                                ChatPacket(CHAT_TYPE_INFO, "Sadece Pvm ortalama zarar efsunu olan itemlere eklenebilir.");
                                                return false;
                                            }
                                        }
 
Çözüm
Kodda sadece norm_attr(ilk 5) değerlerini kontrol eden fonksiyonlar kullanılmış. 6. ve 7.efsunları görmemesi normal.
if satırını şu şekilde değiştirdiğinde çalışacaktır:
C++:
if ((item2->GetType() == ITEM_WEAPON || item2->GetType() == ITEM_ARMOR) && (item2->HasAttr(119)) || item2->HasRareAttr(119))

119'un ilk 5te olduğu gibi 6.7 bonuslarda da kullanıldığından emin olman gerek.

Bu verdiğim düzenleme sadece görmeyi sağlar, ek işlemler için bir sorun yaşarsan fonksiyon içeriğini de gerekli diğer fonksiyonlarla güncellemen gerekebilir.
Bunu bir dene;

item_attribute.cpp:
//Arat;

int CItem::FindAttribute(BYTE bType)
{
    for (int i = 0; i < MAX_NORM_ATTR_NUM; ++i)
    {
        if (GetAttributeType(i) == bType)
            return i;
    }

    return -1;
}


//Değiştir;

int CItem::FindAttribute(BYTE bType)
{
    for (int i = 0; i < MAX_NORM_ATTR_NUM + MAX_RARE_ATTR_NUM; ++i)
    {
        if (GetAttributeType(i) == bType)
            return i;
    }

    return -1;
}
 
Bunu bir dene;

item_attribute.cpp:
//Arat;

int CItem::FindAttribute(BYTE bType)
{
    for (int i = 0; i < MAX_NORM_ATTR_NUM; ++i)
    {
        if (GetAttributeType(i) == bType)
            return i;
    }

    return -1;
}


//Değiştir;

int CItem::FindAttribute(BYTE bType)
{
    for (int i = 0; i < MAX_NORM_ATTR_NUM + MAX_RARE_ATTR_NUM; ++i)
    {
        if (GetAttributeType(i) == bType)
            return i;
    }

    return -1;
}
Malesef işe yaramadı
 
Kodda sadece norm_attr(ilk 5) değerlerini kontrol eden fonksiyonlar kullanılmış. 6. ve 7.efsunları görmemesi normal.
if satırını şu şekilde değiştirdiğinde çalışacaktır:
C++:
if ((item2->GetType() == ITEM_WEAPON || item2->GetType() == ITEM_ARMOR) && (item2->HasAttr(119)) || item2->HasRareAttr(119))

119'un ilk 5te olduğu gibi 6.7 bonuslarda da kullanıldığından emin olman gerek.

Bu verdiğim düzenleme sadece görmeyi sağlar, ek işlemler için bir sorun yaşarsan fonksiyon içeriğini de gerekli diğer fonksiyonlarla güncellemen gerekebilir.
 
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst