Çözüldü mob target info

  • Konuyu açan Konuyu açan selman01234
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 3
  • Gösterim Gösterim 83
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ı.

selman01234

Üye
Üye
Mesaj
187
Çözümler
3
Beğeni
35
Puan
469
Ticaret Puanı
0
mob target info sistemini ekledim martysama 5.8 files
hiç syser yok fakat bu şekilde mob veya metin içerisindeki itemleri tek slotta değişerek gösteriyorum bunun çözümü nedir

bütün yapay zekalar ile yakındna ilişki kurdum ama malesef sonuç yok

 

Dosya Eklentileri

Son düzenleme:
Çözüm
mob target info sistemini ekledim martysama 5.8 files
hiç syser yok fakat bu şekilde mob veya metin içerisindeki itemleri tek slotta değişerek gösteriyorum bunun çözümü nedir

bütün yapay zekalar ile yakındna ilişki kurdum ama malesef sonuç yok

Merhaba, bu sistemde src kısmında 1 fonksiyon var aşağıda vericem onuda sadece taşlar bu şekilde görünür. Moblarda görünmez sadece metinlerde görünür. Konumu incelersen orada da çözümü vermiştim. Onun dışında bi sorun yoksa çözüm işaretleyebilirsin.
Çözüm;

char.cpp:
Genişlet Daralt Kopyala
    if (IsStone())
    {
        DetermineDropMetinStone();
    }

Böyle bir kod var. Bu kodun açıklaması, eğer metin taşı ise DetermineDropMetinStone fonksiyonunu çağır demek.

Bu fonksiyonu yorum...
mob target info sistemini ekledim martysama 5.8 files
hiç syser yok fakat bu şekilde mob veya metin içerisindeki itemleri tek slotta değişerek gösteriyorum bunun çözümü nedir

bütün yapay zekalar ile yakındna ilişki kurdum ama malesef sonuç yok

Taşlar bu sistemde öyle görünüyor normal item ekleyip denermisin ?
bu taş görünme fixide vardı.
 
mob target info sistemini ekledim martysama 5.8 files
hiç syser yok fakat bu şekilde mob veya metin içerisindeki itemleri tek slotta değişerek gösteriyorum bunun çözümü nedir

bütün yapay zekalar ile yakındna ilişki kurdum ama malesef sonuç yok

Merhaba, bu sistemde src kısmında 1 fonksiyon var aşağıda vericem onuda sadece taşlar bu şekilde görünür. Moblarda görünmez sadece metinlerde görünür. Konumu incelersen orada da çözümü vermiştim. Onun dışında bi sorun yoksa çözüm işaretleyebilirsin.
Çözüm;

char.cpp:
Genişlet Daralt Kopyala
    if (IsStone())
    {
        DetermineDropMetinStone();
    }

Böyle bir kod var. Bu kodun açıklaması, eğer metin taşı ise DetermineDropMetinStone fonksiyonunu çağır demek.

Bu fonksiyonu yorum satırına aldığında tüm metinlerdeki taşları kaldırır. /usr/game/share/locale/turkey içerisindeki mob_drop_item.txtye eklediğinde de sırayla üst üste gösterir. Kodlar ona ayarlı çünkü.

Yani yapman gereken şu:

Burayı sil yada yorum satırına al.

char.cpp:
Genişlet Daralt Kopyala
    // if (IsStone())
    // {
        //DetermineDropMetinStone();
    // }

Bu konudaki Güncelleme v_02 da vermiştim.


DetermineDropMetinStone(); İçeriğide bu şekilde,

char.cpp:
Genişlet Daralt Kopyala
void CHARACTER::DetermineDropMetinStone()
{
    const int METIN_STONE_NUM = 14;
    static DWORD c_adwMetin[METIN_STONE_NUM] =
    {
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound(aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 0;
    }
    else
    {
        const SStoneDropInfo & info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number(0, METIN_STONE_NUM - 1)];
            int iGradePct = number(1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100; // 돌 +a -> +(a+1)이 될때마다 100씩 증가
                }
            }
        }
    }
}
 
Çözüm
Merhaba, bu sistemde src kısmında 1 fonksiyon var aşağıda vericem onuda sadece taşlar bu şekilde görünür. Moblarda görünmez sadece metinlerde görünür. Konumu incelersen orada da çözümü vermiştim. Onun dışında bi sorun yoksa çözüm işaretleyebilirsin.
Çözüm;

char.cpp:
Genişlet Daralt Kopyala
    if (IsStone())
    {
        DetermineDropMetinStone();
    }

Böyle bir kod var. Bu kodun açıklaması, eğer metin taşı ise DetermineDropMetinStone fonksiyonunu çağır demek.

Bu fonksiyonu yorum satırına aldığında tüm metinlerdeki taşları kaldırır. /usr/game/share/locale/turkey içerisindeki mob_drop_item.txtye eklediğinde de sırayla üst üste gösterir. Kodlar ona ayarlı çünkü.

Yani yapman gereken şu:

Burayı sil yada yorum satırına al.

char.cpp:
Genişlet Daralt Kopyala
    // if (IsStone())
    // {
        //DetermineDropMetinStone();
    // }

Bu konudaki Güncelleme v_02 da vermiştim.


DetermineDropMetinStone(); İçeriğide bu şekilde,

char.cpp:
Genişlet Daralt Kopyala
void CHARACTER::DetermineDropMetinStone()
{
    const int METIN_STONE_NUM = 14;
    static DWORD c_adwMetin[METIN_STONE_NUM] =
    {
        28030,
        28031,
        28032,
        28033,
        28034,
        28035,
        28036,
        28037,
        28038,
        28039,
        28040,
        28041,
        28042,
        28043,
    };
    DWORD stone_num = GetRaceNum();
    int idx = std::lower_bound(aStoneDrop, aStoneDrop+STONE_INFO_MAX_NUM, stone_num) - aStoneDrop;
    if (idx >= STONE_INFO_MAX_NUM || aStoneDrop[idx].dwMobVnum != stone_num)
    {
        m_dwDropMetinStone = 0;
    }
    else
    {
        const SStoneDropInfo & info = aStoneDrop[idx];
        m_bDropMetinStonePct = info.iDropPct;
        {
            m_dwDropMetinStone = c_adwMetin[number(0, METIN_STONE_NUM - 1)];
            int iGradePct = number(1, 100);
            for (int iStoneLevel = 0; iStoneLevel < STONE_LEVEL_MAX_NUM; iStoneLevel ++)
            {
                int iLevelGradePortion = info.iLevelPct[iStoneLevel];
                if (iGradePct <= iLevelGradePortion)
                {
                    break;
                }
                else
                {
                    iGradePct -= iLevelGradePortion;
                    m_dwDropMetinStone += 100; // 돌 +a -> +(a+1)이 될때마다 100씩 증가
                }
            }
        }
    }
}
teşekkür ederim elinize sağlık
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst