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

  • Konuyu açan Konuyu açan damador
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 7
  • Gösterim Gösterim 367
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
170
Çözümler
7
Beğeni
51
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:
Genişlet Daralt Kopyala
                                        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++:
Genişlet Daralt Kopyala
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:
Genişlet Daralt Kopyala
//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:
Genişlet Daralt Kopyala
//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++:
Genişlet Daralt Kopyala
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ı.
Üst