Yardım 2.köy bosslarından zen fasulyesi çıkıyor ama mob dropda yok

  • Konuyu açan Konuyu açan darkbloodly
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 11
  • Gösterim Gösterim 94
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

darkbloodly

MT Üye
MT Üye
Mesaj
219
Çözümler
7
Beğeni
122
Puan
749
Ticaret Puanı
0
Merhaba, 2.köy bosslarından zen fasulyesi falan cikiyor mob dropda bulamadım, common drop, etc drop vs vs gezmediğim yer kalmadı bişey bulamıyorum. nasıl çözülür
 
Commona ekleme tarzı biraz farklı,
Direk item vnumu ile eklenmiyor. Commonu tamamen temizle bu sayede görmediğin droplarında düşme oranını kaldırmış olursun. Zaten mob droptan ekliyceksin.
 
Commona ekleme tarzı biraz farklı,
Direk item vnumu ile eklenmiyor. Commonu tamamen temizle bu sayede görmediğin droplarında düşme oranını kaldırmış olursun. Zaten mob droptan ekliyceksin.
Bu olmaz çünkü mesela ölümcül plaka düşüyor slotlardan, 100 tane item var ben bunları kaldırmak istemiyorum ki spesifik bazılarını kaldırmak istiyorum illa bi mantığını bilen vardır commonun vs.
 
Bu olmaz çünkü mesela ölümcül plaka düşüyor slotlardan, 100 tane item var ben bunları kaldırmak istemiyorum ki spesifik bazılarını kaldırmak istiyorum illa bi mantığını bilen vardır commonun vs.
Common_drop:
º¸Á¶½ºÅ³Ã¥ 1 120 0.004 50301 100000
item_proto
50301 ¼ÕÀÚº´¹ı¼ ITEM_USE USE_SPECIAL 1 NONE NONE NONE 1000 1000 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 20 0 0 0 0 0 0 0
Gördüğünüz gibi yukarda bulunan common droptan alınmış 1 satır, 2. kısım ise item_protodan alınmış bir satır. Bunun mantığı şu;
1. satır º¸Á¶½ºÅ³Ã¥ yani burası isimlendirmesi. Muhtemelen rastgele belirlenen bir isimdir
2.satır ise minimum düşme seviyesi.
3. satır maximum seviyede düşme seviyesi.
4. satır. 0,004 olan düşme oranını gösteriyor.
5. item vnumu
6.satır ise item miktarı.

2. Örnek;
item_names.txt
item_proto.txt
70102 ¼±µÎ ITEM_USE USE_SPECIAL 1 NONE ITEM_STACKABLE NONE 0 5000 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 8000 0 0 0 0 0 0 0 0
common_drop_item.txt
1 120 0.0004 70102 1000000 1 120 0.0004 70102 1000000 1 120 0.0004 70102 1000000 1 120 0.0004 70102 1000000


Tavsiyem, bu common_drop_itemi kullanma. Zaten mob target infolarda buna uyumlu değil. Yani burda olan itemler görünmez. Güzel güzel mantığı basit olan mob_drop_itemi kullanın.
 
Son düzenleme:
normalde eski mesajıma düzenleme yaparak eklemem lazım ama orasıda uzun olduğu için src kısımdaki kodlarını bu mesajla yazmak istedim. Bunun bir rehber konusunu açarak anlatımınıda sağliycam.

Common_drop_item.txt her satırda 6 veri alır.
Bunlar;
1.satır isimlendirmesi,
2.satır için başlangıç seviyesi,
3.satır için bitiş seviyesi,
4.satır için Düşüş oranı (Yüzdeli olarak)
5.satır için Eşya adı veya vnumu
6.satır için Düşen eşya sayısı

Yukardaki örnekte zaten açıkladım. Src deki kodlarında aşağıda vericem detaylı incelemek isteyen olursa. Kod açıklamalarını ve detayları rehber konusunda daha net açıklayacağım.

item_manager_read_tables.cpp:
Genişlet Daralt Kopyala
std::vector<CItemDropInfo> g_vec_pkCommonDropItem[MOB_RANK_MAX_NUM];

bool ITEM_MANAGER::ReadCommonDropItemFile (const char* c_pszFileName)
{
    FILE* fp = fopen (c_pszFileName, "r");

    if (!fp)
    {
        sys_err ("Cannot open %s", c_pszFileName);
        return false;
    }

    char buf[1024];

    int lines = 0;

    while (fgets (buf, 1024, fp))
    {
        ++lines;

        if (!*buf || *buf == '\n')
        {
            continue;
        }

        TDropItem d[MOB_RANK_MAX_NUM];
        char szTemp[64];

        memset (&d, 0, sizeof (d));

        char* p = buf;
        char* p2;

        for (int i = 0; i <= MOB_RANK_S_KNIGHT; ++i)
        {
            for (int j = 0; j < 6; ++j)
            {
                p2 = strchr (p, '\t');

                if (!p2)
                {
                    break;
                }

                strlcpy (szTemp, p, MIN (sizeof (szTemp), (p2 - p) + 1));
                p = p2 + 1;

                switch (j)
                {
                    case 0:
                        break;
                    case 1:
                        str_to_number (d[i].iLvStart, szTemp);
                        break;
                    case 2:
                        str_to_number (d[i].iLvEnd, szTemp);
                        break;
                    case 3:
                        d[i].fPercent = atof (szTemp);
                        break;
                    case 4:
                        strlcpy (d[i].szItemName, szTemp, sizeof (d[i].szItemName));
                        break;
                    case 5:
                        str_to_number (d[i].iCount, szTemp);
                        break;
                }
            }

            DWORD dwPct = (DWORD) (d[i].fPercent * 10000.0f);
            DWORD dwItemVnum = 0;

            if (!ITEM_MANAGER::instance().GetVnumByOriginalName (d[i].szItemName, dwItemVnum))
            {
                // 이름으로 못찾으면 번호로 검색
                str_to_number (dwItemVnum, d[i].szItemName);
                if (!ITEM_MANAGER::instance().GetTable (dwItemVnum))
                {
                    sys_err ("No such an item (name: %s)", d[i].szItemName);
                    fclose (fp);
                    return false;
                }
            }

            if (d[i].iLvStart == 0)
            {
                continue;
            }

            g_vec_pkCommonDropItem[i].push_back (CItemDropInfo (d[i].iLvStart, d[i].iLvEnd, dwPct, dwItemVnum));
        }
    }

    fclose (fp);

    for (int i = 0; i < MOB_RANK_MAX_NUM; ++i)
    {
        std::vector<CItemDropInfo>& v = g_vec_pkCommonDropItem[i];
        std::sort (v.begin(), v.end());

        std::vector<CItemDropInfo>::iterator it = v.begin();

        sys_log (1, "CommonItemDrop rank %d", i);

        while (it != v.end())
        {
            const CItemDropInfo& c = * (it++);
            sys_log (1, "CommonItemDrop %d %d %d %u", c.m_iLevelStart, c.m_iLevelEnd, c.m_iPercent, c.m_dwVnum);
        }
    }

    return true;
}

Bu dosya içerisinde diğer dropların ve dosyaların nasıl okunduğu ile ilgili bilgiler yer alır. Detaylı inceleyebilirsiniz.
 
Common_drop:

item_proto

Gördüğünüz gibi yukarda bulunan common droptan alınmış 1 satır, 2. kısım ise item_protodan alınmış bir satır. Bunun mantığı şu;
1. satır º¸Á¶½ºÅ³Ã¥ yani burası isimlendirmesi. Muhtemelen rastgele belirlenen bir isimdir
2.satır ise minimum düşme seviyesi.
3. satır maximum seviyede düşme seviyesi.
4. satır. 0,004 olan düşme oranını gösteriyor.
5. item vnumu
6.satır ise item miktarı.

2. Örnek;
item_names.txt

item_proto.txt

common_drop_item.txt



Tavsiyem, bu common_drop_itemi kullanma. Zaten mob target infolarda buna uyumlu değil. Yani burda olan itemler görünmez. Güzel güzel mantığı basit olan mob_drop_itemi kullanın.
mob target buna uyumlu olmasa umrumda olmazdı ama maalesef uyumlu benimki mob dropda falan yok ama ısrarla gösterio :D

1752693123348.webp


burdaki 70102in common dropla slotsal bi bağlantısı yok dimi, genel olarak her mobdan düşecek şekilde mi ayarlı bunlar
 
Geri
Üst