emirhanHCL 1
emirhanHCL
farkmt2official 1
farkmt2official
mannaxxx 1
mannaxxx
Hikaye Ekle

[C++ & Py] Chronobreak Item

  • Konuyu başlatan Konuyu başlatan Ferumbras
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 8
  • Görüntüleme Görüntüleme 1K

Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!

Yorumun için teşekkür ederim, sadece işlevselliğe odaklanıp bu şekilde yaptım, eşya basımında efsunlu veya socketli malzemeler için örnek verebilir misin? Bu konuyu açıkcası hiç düşünmedim eğer örnek verebilirsen belki bir güncellemeyle bu sorunu çözebilirim.
Örnek olarak süreli itemlerin kalan süresi socket0 üzerinde tutuluyor, süresi bitmeye yakın bir item + basmada kullanılıyorsa yakıp kolayca default süresine sıfırlayabilir oyuncular, efsunlu bir itemle artı basma aklıma gelen yok yarın efsunlu bir itemı artı basma nesnesi olarak özelleştirip eklersek sorun olur tahminimce burası.
 
Örnek olarak süreli itemlerin kalan süresi socket0 üzerinde tutuluyor, süresi bitmeye yakın bir item + basmada kullanılıyorsa yakıp kolayca default süresine sıfırlayabilir oyuncular, efsunlu bir itemle artı basma aklıma gelen yok yarın efsunlu bir itemı artı basma nesnesi olarak özelleştirip eklersek sorun olur tahminimce burası.
Dediklerin büyük ihtimal yapılabilir hatta bunu kendime challenge olarak belirleyip bunu da sisteme entegre edicem, yorumların için tekrar teşekkür ederim :)
 
Level sınırı değişikliği için char_item.cpp içerisindeki fonksiyonları şu şekilde değiştirin:

C++:
//Arat     
      
        LPITEM pkNewItem = ITEM_MANAGER::instance().CreateItem(result_fail_vnum, 1, 0, false);

        if (pkNewItem)
        {
      
//Önceki dosyalardan eklediğiniz fonksiyonu bununla değiştir:

LPITEM myring = FindSpecifyItem(40002);

if (myring && myring->GetCount() > 0)
{
    if (pkNewItem->GetLimitType(0) == LIMIT_LEVEL && pkNewItem->GetLimitValue(0) <= 60)
    {
        int socket_count = myring->GetSocketCount();
        for (int j = 0; j <= socket_count; ++j)
        {
            myring->SetSocket(j, 0);
        }
        for (int i = 0; i < prt->material_count; ++i)
        {
            int combined = combineVnumAndCount(prt->materials[i].vnum, prt->materials[i].count);
            myring->SetSocket(i, combined);
        }
    }
}

C++:
// Arat

NotifyRefineFail(this, item, szRefineType);

// Üstündeki fonksiyonu şu şekilde değiştir:

LPITEM myring = FindSpecifyItem(40002);

if (myring && myring->GetCount() > 0)
{
    if (item->GetLimitType(0) == LIMIT_LEVEL && item->GetLimitValue(0) <= 60)
    {
        int socket_count = myring->GetSocketCount();
        for (int j = 0; j <= socket_count; ++j)
        {
            myring->SetSocket(j, 0);
        }
        for (int i = 0; i < prt->material_count; ++i)
        {
            int combined = combineVnumAndCount(prt->materials[i].vnum, prt->materials[i].count);
            myring->SetSocket(i, combined);
        }
    }
}

Item level sınırını fonksiyonların içindeki GetLimitValue(0) <= 60 60 level'i değiştirin.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst