Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Cannn6161 1
Cannn6161
B 1
berione65
sen272 1
sen272
Mt2Hizmet 1
Mt2Hizmet
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Cevaplanmadı CEVHER SORUNU

Katılım
13 Mar 2026
Konular
9
Mesajlar
65
Çözüm
2
Online süresi
1d 3h
Reaksiyon Skoru
13
Altın Konu
0
TM Yaşı
2 Ay 25 Gün
Başarım Puanı
13
MmoLira
1,138
DevLira
0
Ticaret - 0%
0   0   0

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!

Oyuna yeni kolye küpe takıları ekledim item vnumları 95009 dan başlıyor bu takıları eklerken abonoz küpeyi kopyaladım örneğin fakat yeni takılara elmas ile cevher slotu açtığımda bu slotlara cevher ekleyemiyorum.
 
char_item.cpp veya bazı altyapılarda item.cpp olabilir.
ITEM_METIN veya GetRefineMineral tarzında bi kod satırı olmalı arama yap bakalım
if (item->GetVnum() >= 14000 && item->GetVnum() <= 14509) bu tarz bi kod olabilir.
95009'u da oraya dahil et bi dene
C++:
        case ITEM_METIN:
            {
                LPITEM item2;

                if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
                    return false;

                if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
                    return false;

                if (item2->GetType() == ITEM_PICK) return false;
                if (item2->GetType() == ITEM_ROD) return false;

                int i;

                for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                {
                    DWORD dwVnum;

                    if ((dwVnum = item2->GetSocket(i)) <= 2)
                        continue;

                    TItemTable * p = ITEM_MANAGER::instance().GetTable(dwVnum);

                    if (!p)
                        continue;

                    if (item->GetValue(5) == p->alValues[5])
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("같은 종류의 메틴석은 여러개 부착할 수 없습니다."));
                        return false;
                    }
                }

                if (item2->GetType() == ITEM_ARMOR)
                {
                    if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
                        return false;
                    }
                }
                else if (item2->GetType() == ITEM_WEAPON)
                {
                    if (!IS_SET(item->GetWearFlag(), WEARABLE_WEAPON))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 무기에 부착할 수 없습니다."));
                        return false;
                    }
                }
                else
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("부착할 수 있는 슬롯이 없습니다."));
                    return false;
                }

                for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                {
                    if (item2->GetSocket(i) >= 1 && item2->GetSocket(i) <= 2 && item2->GetSocket(i) >= item->GetValue(2))
                    {
                        #ifdef ENABLE_ADDSTONE_FAILURE
                        if (number(1, 100) <= 30)
                        #else
                        if (true)
                        #endif
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("메틴석 부착에 성공하였습니다."));
                            item2->SetSocket(i, item->GetVnum());
                        }
                        else
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("메틴석 부착에 실패하였습니다."));
                            item2->SetSocket(i, ITEM_BROKEN_METIN_VNUM);
                        }

                        LogManager::instance().ItemLog(this, item2, "SOCKET", item->GetName());
                        ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (METIN)");
                        break;
                    }
                }

                if (i == ITEM_SOCKET_MAX_NUM)
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("부착할 수 있는 슬롯이 없습니다."));
            }
            break;

        case ITEM_AUTOUSE:
        case ITEM_MATERIAL:
        case ITEM_SPECIAL:
        case ITEM_TOOL:
        case ITEM_LOTTERY:
            break;

        case ITEM_TOTEM:
            {
                if (!item->IsEquipped())
                    EquipItem(item);
            }
            break;

        case ITEM_BLEND:

            sys_log(0,"ITEM_BLEND!!");
            if (Blend_Item_find(item->GetVnum()))
            {
                int        affect_type        = AFFECT_BLEND;
                int        apply_type        = aApplyInfo[item->GetSocket(0)].bPointType;
                int        apply_value        = item->GetSocket(1);
                int        apply_duration    = item->GetSocket(2);

                if (FindAffect(affect_type, apply_type))
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                }
                else
                {
                    if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                    }
                    else
                    {
                        AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, false);
                        item->SetCount(item->GetCount() - 1);
                    }
                }
            }
            break;

        case ITEM_NONE:
            sys_err("Item type NONE %s", item->GetName());
            break;

        default:
            sys_log(0, "UseItemEx: Unknown type %s %d", item->GetName(), item->GetType());
            return false;
    }

    return true;
}
 
C++:
        case ITEM_METIN:
            {
                LPITEM item2;

                if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell)))
                    return false;

                if (item2->IsExchanging() || item2->IsEquipped()) // @fixme114
                    return false;

                if (item2->GetType() == ITEM_PICK) return false;
                if (item2->GetType() == ITEM_ROD) return false;

                int i;

                for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                {
                    DWORD dwVnum;

                    if ((dwVnum = item2->GetSocket(i)) <= 2)
                        continue;

                    TItemTable * p = ITEM_MANAGER::instance().GetTable(dwVnum);

                    if (!p)
                        continue;

                    if (item->GetValue(5) == p->alValues[5])
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("같은 종류의 메틴석은 여러개 부착할 수 없습니다."));
                        return false;
                    }
                }

                if (item2->GetType() == ITEM_ARMOR)
                {
                    if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
                        return false;
                    }
                }
                else if (item2->GetType() == ITEM_WEAPON)
                {
                    if (!IS_SET(item->GetWearFlag(), WEARABLE_WEAPON))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 무기에 부착할 수 없습니다."));
                        return false;
                    }
                }
                else
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("부착할 수 있는 슬롯이 없습니다."));
                    return false;
                }

                for (i = 0; i < ITEM_SOCKET_MAX_NUM; ++i)
                {
                    if (item2->GetSocket(i) >= 1 && item2->GetSocket(i) <= 2 && item2->GetSocket(i) >= item->GetValue(2))
                    {
                        #ifdef ENABLE_ADDSTONE_FAILURE
                        if (number(1, 100) <= 30)
                        #else
                        if (true)
                        #endif
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("메틴석 부착에 성공하였습니다."));
                            item2->SetSocket(i, item->GetVnum());
                        }
                        else
                        {
                            ChatPacket(CHAT_TYPE_INFO, LC_TEXT("메틴석 부착에 실패하였습니다."));
                            item2->SetSocket(i, ITEM_BROKEN_METIN_VNUM);
                        }

                        LogManager::instance().ItemLog(this, item2, "SOCKET", item->GetName());
                        ITEM_MANAGER::instance().RemoveItem(item, "REMOVE (METIN)");
                        break;
                    }
                }

                if (i == ITEM_SOCKET_MAX_NUM)
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("부착할 수 있는 슬롯이 없습니다."));
            }
            break;

        case ITEM_AUTOUSE:
        case ITEM_MATERIAL:
        case ITEM_SPECIAL:
        case ITEM_TOOL:
        case ITEM_LOTTERY:
            break;

        case ITEM_TOTEM:
            {
                if (!item->IsEquipped())
                    EquipItem(item);
            }
            break;

        case ITEM_BLEND:

            sys_log(0,"ITEM_BLEND!!");
            if (Blend_Item_find(item->GetVnum()))
            {
                int        affect_type        = AFFECT_BLEND;
                int        apply_type        = aApplyInfo[item->GetSocket(0)].bPointType;
                int        apply_value        = item->GetSocket(1);
                int        apply_duration    = item->GetSocket(2);

                if (FindAffect(affect_type, apply_type))
                {
                    ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                }
                else
                {
                    if (FindAffect(AFFECT_EXP_BONUS_EURO_FREE, POINT_RESIST_MAGIC))
                    {
                        ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이미 효과가 걸려 있습니다."));
                    }
                    else
                    {
                        AddAffect(affect_type, apply_type, apply_value, 0, apply_duration, 0, false);
                        item->SetCount(item->GetCount() - 1);
                    }
                }
            }
            break;

        case ITEM_NONE:
            sys_err("Item type NONE %s", item->GetName());
            break;

        default:
            sys_log(0, "UseItemEx: Unknown type %s %d", item->GetName(), item->GetType());
            return false;
    }

    return true;
}

Sorun burada olabilir
[CODE title="sorun"]if (item2->GetType() == ITEM_ARMOR)
{
// Burada hem taşın (item) hem de takılan eşyanın item2
// flag değerinde WEARABLE_BODY Zırh flagıolması şart koşulmuş.
if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
return false;
}
}[/CODE]

bu şekilde düzenleyip dene

[CODE title="fix."]if (item2->GetType() == ITEM_ARMOR)
{
if (item2->GetSubType() != ARMOR_EAR && item2->GetSubType() != ARMOR_NECK && item2->GetSubType() != ARMOR_WRIST)
{
if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
return false;
}
}
}[/CODE]
 
Sorun burada olabilir
[CODE title="sorun"]if (item2->GetType() == ITEM_ARMOR)
{
// Burada hem taşın (item) hem de takılan eşyanın item2
// flag değerinde WEARABLE_BODY Zırh flagıolması şart koşulmuş.
if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
return false;
}
}[/CODE]

bu şekilde düzenleyip dene

[CODE title="fix."]if (item2->GetType() == ITEM_ARMOR)
{
if (item2->GetSubType() != ARMOR_EAR && item2->GetSubType() != ARMOR_NECK && item2->GetSubType() != ARMOR_WRIST)
{
if (!IS_SET(item->GetWearFlag(), WEARABLE_BODY) || !IS_SET(item2->GetWearFlag(), WEARABLE_BODY))
{
ChatPacket(CHAT_TYPE_INFO, LC_TEXT("이 메틴석은 장비에 부착할 수 없습니다."));
return false;
}
}
}[/CODE]
Aslında sorun yok sadece yeni takılara cevher eklenmesi lazım yoksa abanoz küpe vb falan ekleniyor
 
çözülmedi ise anydesk iletin bakalım.
Henüz test etmedim eve geçince ilk iş buna bakıcam fakat dediğim gibi yeni takılara acaba neden cevher eklenmiyor merak ettim sonuçta protoda abonoz küpeyi kopyaladım acaba vnum sınırı falan mı var mantığı anlayamadım
 

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

Geri
Üst