C 1
chengdu
xranzei 1
xranzei
zendor2 1
zendor2
Bvural41 1
Bvural41
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Almira2 1
Almira2
romegames 1
romegames
D 1
delimuratt
melankolıa18 1
melankolıa18
shrpnl 1
shrpnl
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

[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

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ 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.
 
mantıklı hoş olmuş eline sağlık
 

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

Geri
Üst