Çözüldü İtemin hangi envantere gitmesini ayarlama

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ı.

maxbro

[GM]MaxBro
MT Üye
Mesaj
515
Çözümler
19
Beğeni
366
Puan
819
Ticaret Puanı
0
Merhaba arkadaşlar son açtığım yardım postunda aradığımı bulamadım. Bende şöyle bir değişiklik yapmak istiyorum. Yerden topladığımız veya npc den aldığımız itemlerin hangi envantere gideceğini nasıl belirleriz. Asıl sorunum gelen itemlerin k envanteri denen yere gitmesi. Bu durum şu an çok büyük bir sorun. 2 gündür uğraşıyorum çözüm bulamadım. Yardımlarınızı bekliyorum
 
Çözüm
Sorun çözülmüştür, çözümü şöyle.
K envanteri itemleri item_proto.txt den "item_material" "item_metin" "ITEM_SKILLBOOK" gibi ayıklamalar yaparak k envanterine atmaktadır. bu itemlerin metin taşlarından düştüğünü varsayarsak, aynı metin taşından düşen "ruh taşı" iteminin item türü olan "ITEM_RESOURCE RESOURCE_METIN" ifadesiyle değiştiğimiz taktirde ayıklamaya takılmayacak ve aldığımız itemler normal envanterimize gelecektir. Bk lar skilleri p olarak başlatıyorsanız onu değişmenize gerek yoktur. Aksine değişmemeniz envanter kirliliği yaratmaması açısından daha verimli olur. Çözüme kavuşmamda yardımcı olan arkadaşlara teşekkür ederim. Yazdığınız bir cümle nereden başlamam gerektiği fikrini verdi ve 2 gün uğraştığım sorunu 10 dakikada...
exchange.cpp de grid kısmı var orda hatanız vardır normal envanteri görmediği için k envantere atabilir
 
item.cpp gir en alta eklenmiştir şu şekilde

Kod:
bool CItem::IsSkillBook()
{
    return GetType() == ITEM_SKILLBOOK;
}

bool CItem::IsUpgradeItem()
{
    switch (GetVnum())
    {
    case 30003:
    case 30004:
 
kaynak dosyalarından silip tekrar build almam mı gerekiyor bu işlemden sonra
 
Bunları kaldırmak yerine üzerinde ifdef bulunur onu service.h içinde bul başına // koy
 
tarif ettiğiniz kodları bulamadım. fakat şöyle bir kod dikkatimi çekti.

#ifdef ENABLE_SPECIAL_STORAGE
else if (UPGRADE_INVENTORY == window_type || BOOK_INVENTORY == window_type || STONE_INVENTORY == window_type)
{
if (m_wCell >= SPECIAL_INVENTORY_MAX_NUM)
{
sys_err("CItem::AddToCharacter: cell overflow: %s to %s cell %d", m_pProto->szName, ch->GetName(), m_wCell);
return false;
}
}
 
onun yerine, şu yeni envantere gönderdiği itemlerin değerlerini değişirsek daha kolay olmazmı, örnek vermek gerekirse;
item_material , item_metin gibi değerlere göre ayıklama işlemi yapıyor sistem. bu değerleri farklı itemlerin değerlerini verirsek sorun daha kolay yoldan çözülmüş olur gibi ama bilemedim. sizin fikrinizi de almak isterim
 
Siz k envanter kullanmak istemiyorsunuz herhalde eğer yanlış anlamadıysam service.h gir #ifdef ENABLE_SPECIAL_STORAGE bul //#ifdef ENABLE_SPECIAL_STORAGE olarak değiştir aynı şeyi client srcdede yap locale.inc.h

Bu şekilde devre dışı bırakmış olursunuz.
 
Sorun çözülmüştür, çözümü şöyle.
K envanteri itemleri item_proto.txt den "item_material" "item_metin" "ITEM_SKILLBOOK" gibi ayıklamalar yaparak k envanterine atmaktadır. bu itemlerin metin taşlarından düştüğünü varsayarsak, aynı metin taşından düşen "ruh taşı" iteminin item türü olan "ITEM_RESOURCE RESOURCE_METIN" ifadesiyle değiştiğimiz taktirde ayıklamaya takılmayacak ve aldığımız itemler normal envanterimize gelecektir. Bk lar skilleri p olarak başlatıyorsanız onu değişmenize gerek yoktur. Aksine değişmemeniz envanter kirliliği yaratmaması açısından daha verimli olur. Çözüme kavuşmamda yardımcı olan arkadaşlara teşekkür ederim. Yazdığınız bir cümle nereden başlamam gerektiği fikrini verdi ve 2 gün uğraştığım sorunu 10 dakikada çözdüm. Tekrardan teşekkürler. Umarım şu post ilerde sorun yaşayan arkadaşlara yardımcı olur. Not: K envanterine gitmesini istediniz itemlerin de kodlarını değişerek oraya gitmesini sağlayabilirsiniz.
 
Son düzenleme:
Çözüm
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst