Çözüldü Oyuna yeni item ekledim ama cevher ekleyemiyorum

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

Battle2

Üye
Üye
Mesaj
28
Çözümler
3
Beğeni
24
Puan
318
Ticaret Puanı
0
Serverima yeni iç itemler ekledim fakat cevher ekleyemiyorum bende biraz araştırma yaptım ama tam çözüme ulaşamadım
GAME-SRC item.cpp'de bu bölümü buldum
const static JewelAccessoryInfo infos[]
Ve altına gereken kodları ayarladım
{ 50636, 2729, 2726, 2724 },
{ 50636, 2730, 2728, 2727 },
{ 50636, 2734, 2736, 2735 },

Yani şu şekil yaptım

50636 = Grena Elmas Cevheri
2729 = Bilezik Kodu
2726 = Kolye Kodu
2724 = Küpe Kodu
Pack Tarafı root açtım ve constinfo.py dosyasını şöyle editledim
ACCESSORY_MATERIAL_LIST " Şu kısımda zaten 50636 kodlu cevher olduğu için tekrar yazmadım "
JewelAccessoryInfos " Şu kısmı şöyle editledim "
[ 50636, 2729, 2726, 2724 ],
[ 50636, 2730, 2728, 2727 ],
[ 50636, 2734, 2736, 2735 ],

Şimdi şöyle bir hata alıyorum oyunda elmas ile yuva açılıyor 50636 numaralı cevheri eklediğimde yuva siliniyor fakat özelliğini veriyor
Bunu görünür nasıl yapabilirim yuvaları silmesin cevheri eklediğimde cevher gözüksün

Hatta son olarakta şöyle bir kod ekledim

bool CItem::CanPutInto(LPITEM item):
Genişlet Daralt Kopyala
//item.cpp'de  bool CItem::CanPutInto(LPITEM item) bu kısmı buldum
//ve hemen altına bu kodları ekledim

        // --- 50636 CEVHERI OZEL ESYA IZNI ---
    if (GetVnum() == 50636)
    {
        if (item)
        {
            DWORD dwTargetVnum = item->GetVnum();
            
            // Cevherin eklenebilecegi ozel esya kodları
            if (dwTargetVnum == 2724 || dwTargetVnum == 2726 || dwTargetVnum == 2727 ||
                dwTargetVnum == 2728 || dwTargetVnum == 2729 || dwTargetVnum == 2730 ||
                dwTargetVnum == 2734 || dwTargetVnum == 2735 || dwTargetVnum == 2736)
            {
                return true; // Sadece bu esyalara takılmasına izin ver
            }
        }
    }


//ne olur ne olmaz diye ama hala sorun aynı
 
Çözüm
Sorunun itemleri 0'dan itabaren 9a kadar alğılaması eklediğim itemler seviyesiz olduğu için olmuyordu
Sorunu çözmüş bulunuyorum konu kapanabilir yapamayanlar içinde ek olarak bu kodu bırakıyorum
Bu kod satırı sayesinde hem yeni itemlere cevher basılabiliyor hemde normel standart itemlerede basılabiliyor

constInfo.py:
Genişlet Daralt Kopyala
//pack>constInfo.py 'AÇ'
//Arat
//def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType):

//Kod bloğunu komple değiştir

def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType):
    # --- Yeni Ekleme: Yeni takıların tam eşleşmesini doğrular (Artı basma payı dahil) ---
    for info in JewelAccessoryInfos:
        if item.ARMOR_WRIST == subType:
            if vnum >= info[1] and vnum <= (info[1] + 9):
                return info[0]...
Sorunun itemleri 0'dan itabaren 9a kadar alğılaması eklediğim itemler seviyesiz olduğu için olmuyordu
Sorunu çözmüş bulunuyorum konu kapanabilir yapamayanlar içinde ek olarak bu kodu bırakıyorum
Bu kod satırı sayesinde hem yeni itemlere cevher basılabiliyor hemde normel standart itemlerede basılabiliyor

constInfo.py:
Genişlet Daralt Kopyala
//pack>constInfo.py 'AÇ'
//Arat
//def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType):

//Kod bloğunu komple değiştir

def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType):
    # --- Yeni Ekleme: Yeni takıların tam eşleşmesini doğrular (Artı basma payı dahil) ---
    for info in JewelAccessoryInfos:
        if item.ARMOR_WRIST == subType:
            if vnum >= info[1] and vnum <= (info[1] + 9):
                return info[0]
        elif item.ARMOR_NECK == subType:
            if vnum >= info[2] and vnum <= (info[2] + 9):
                return info[0]
        elif item.ARMOR_EAR == subType:
            if vnum >= info[3] and vnum <= (info[3] + 9):
                return info[0]
    # ---------------------------------------------------------------------------------

    ret = vnum
    item_base = (vnum / 10) * 10
    for info in JewelAccessoryInfos:
        if item.ARMOR_WRIST == subType:
            if info[1] == item_base:
                return info[0]
        elif item.ARMOR_NECK == subType:
            if info[2] == item_base:
                return info[0]
        elif item.ARMOR_EAR == subType:
            if info[3] == item_base:
                return info[0]
 
    if vnum >= 16210 and vnum <= 16219:
        return 50625

    if item.ARMOR_WRIST == subType:
        WRIST_ITEM_VNUM_BASE = 14000
        ret -= WRIST_ITEM_VNUM_BASE
    elif item.ARMOR_NECK == subType:
        NECK_ITEM_VNUM_BASE = 16000
        ret -= NECK_ITEM_VNUM_BASE
    elif item.ARMOR_EAR == subType:
        EAR_ITEM_VNUM_BASE = 17000
        ret -= EAR_ITEM_VNUM_BASE

    type = ret/20

    if type<0 or type>=len(ACCESSORY_MATERIAL_LIST):
        type = (ret-170) / 20
        if type<0 or type>=len(ACCESSORY_MATERIAL_LIST):
            return 0

    return ACCESSORY_MATERIAL_LIST[type]
 

Dosya Eklentileri

  • CevherFixi.webp
    CevherFixi.webp
    102,4 KB · Gösterim: 9
Son düzenleme:
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst