Yardım K envanter

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

CalvinGiorgio

Kurumsal Üye
Kurumsal Üye
Üye
Mesaj
665
Çözümler
14
Beğeni
85
Puan
539
Ticaret Puanı
0
Filesimde ekli olan "k" ek envanterdir.
Benzerlerinden yola çıkarak anlatımlarına baktım fakat kaldıramadım. Yardımcı olabilicek varsa sevinirim.
klen.jpg
 
Aynı sistemi bugün söktüm. Game kısmında sistem ifdef ile ekli service.h yada commondefine.h içinde sistemin definesinin adı neyse onu bul sil yada başına // koy aynı şekilde client sourcede yaparsan sistem kapanır.
 
Aynı sistemi bugün söktüm. Game kısmında sistem ifdef ile ekli service.h yada commondefine.h içinde sistemin definesinin adı neyse onu bul sil yada başına // koy aynı şekilde client sourcede yaparsan sistem kapanır.
onun adını bulamadığım için konu açtım zaten bulabilsem anlayabilsem dediğin yolu izledim fakat bulamadım
 
exchange.cpp aç checkspace yazıp ara o kod bloğunda illaki kodlaması olacak. genelde sistemin adı special_storage oluyor.
 
exchange.cpp aç checkspace yazıp ara o kod bloğunda illaki kodlaması olacak. genelde sistemin adı special_storage oluyor.
Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    PyModule_AddIntConstant(poModule, "ENABLE_SPECIAL_STORAGE", 1);
#else
    PyModule_AddIntConstant(poModule, "ENABLE_SPECIAL_STORAGE", 0);
#endif
bu şekilde buluyorum acaba doğru mu ?
 
commondefine.h içinden ve locale.inc.h içinden bunu ENABLE_SPECIAL_STORAGE sil yada kapat sistem kapanır.
 
commondefine.h içinden ve locale.inc.h içinden bunu ENABLE_SPECIAL_STORAGE sil yada kapat sistem kapanır.
client üzerinden de kaldırmam gerekiyor yenisini eklemek istiyorum ondan dolayı

interfacemodule.py
Kod:
    def ToggleInventoryWindow(self):
        if app.ENABLE_PLAYER_SECURITY_SYSTEM and player.IsSecurityActivate():
            return
        if False == player.IsObserverMode():
            if False == self.wndInventory.IsShow():
                self.wndInventory.Show()
                self.wndInventory.SetTop()
                if app.ENABLE_SPECIAL_STORAGE:
                    if constInfo.SpecialInventoryMode == 1:
                        constInfo.IsSpecialInventoryOpen=1
                        self.wndSpecialStorage.Show()
            else:
                self.wndInventory.OverOutItem()
                self.wndInventory.Close()
                if app.ENABLE_SPECIAL_STORAGE:
                    if constInfo.SpecialInventoryMode == 1:
                        constInfo.IsSpecialInventoryOpen=0

bunu tamamen silmeli miyim ?
 
Pack kısmından kaldıracaksan zaten client sourceden kapattığında pack kısmıda kapanır ama kodları komple silecem diyorsan işin zor. if app.ENABLE_SPECIAL_STORAGE: bu kodları kaldırman gerekiyor ama tab ayarına dikkat etmelisin. Örnek attığının silinmiş hali.
Python:
    def ToggleInventoryWindow(self):
        if False == player.IsObserverMode():
            if False == self.wndInventory.IsShow():
                self.wndInventory.Show()
                self.wndInventory.SetTop()
            else:
                self.wndInventory.OverOutItem()
                self.wndInventory.Close()
 
Pack kısmından kaldıracaksan zaten client sourceden kapattığında pack kısmıda kapanır ama kodları komple silecem diyorsan işin zor. if app.ENABLE_SPECIAL_STORAGE: bu kodları kaldırman gerekiyor ama tab ayarına dikkat etmelisin. Örnek attığının silinmiş hali.
Python:
    def ToggleInventoryWindow(self):
        if False == player.IsObserverMode():
            if False == self.wndInventory.IsShow():
                self.wndInventory.Show()
                self.wndInventory.SetTop()
            else:
                self.wndInventory.OverOutItem()
                self.wndInventory.Close()
yeni k envanter ekleyeceğim bana izlemem gereken yolu söyler misin şuan üstünde ekli var diye ben silmeye çalışıyorum eğer silmeden eklemeyi denersem sorun olur mu ?
 
Niye siliyorsun? Hangi k envanteri ekleyeceksin?
envanterin sayısını arttırmak istiyorum sayısı derken çeşitleri yani
şuanki envanter çeşiti
+basma malzemesi - beceri kitabı - taşlar

benim istediğim envanter görseli:
Linkleri görebilmek için giriş yap veya kayıt ol.


istersen tüm yaptığım işlemleri geri alabilirim nasıl yönlendirirsen öyle hareket edeceğim
 
Türkmmo daki sistemimi eklemeyi düşünüyorsun? öyle bir niyetin varsa hiç uğraşma direk paranı emeğini götür bir çöpün içinde at. Sabahtan beri senin silmek istediğin sistemi söküyorum ayarlıyorum sen silmeyi düşünüyorsun. :) Ek seçenek eklemek kolay ama kodlarda mantık yürütmen gerekiyor yükseltme sandık taş menüleri var diyelim bu menülerin kodlarının her birini kopyalayıp isimlerini belirleyeceksin bilgin yoksa zor bir iş az biraz anlayana kolay.

Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    else if (item->IsUpgradeItem())
        item->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
    else if (item->IsBook())
        item->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
    else if (item->IsStone())
        item->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
#endif

Mesela burada 3 seçenek upgrade book stone. Bunun altına atıyorum efsun istiyorsun

Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    else if (item->IsUpgradeItem())
        item->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
    else if (item->IsBook())
        item->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
    else if (item->IsStone())
        item->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
    else if (item->IsEfsun())
        item->AddToCharacter(ch, TItemPos(EFSUN_INVENTORY, iEmptyPos));
#endif

bu şekilde ekleme yapmak gerekiyor tek kodlarda bunlar değil tabi bütün sistemin kodlarını aratıp her birine ekleme yapmak gerekiyor. O forumdaki çöp sistemi ekleyip sorunlarıyla uğraşacağına bu dediğim ile uğraş tecrübe bilgi edinirsin en azından.
 
Türkmmo daki sistemimi eklemeyi düşünüyorsun? öyle bir niyetin varsa hiç uğraşma direk paranı emeğini götür bir çöpün içinde at. Sabahtan beri senin silmek istediğin sistemi söküyorum ayarlıyorum sen silmeyi düşünüyorsun. :) Ek seçenek eklemek kolay ama kodlarda mantık yürütmen gerekiyor yükseltme sandık taş menüleri var diyelim bu menülerin kodlarının her birini kopyalayıp isimlerini belirleyeceksin bilgin yoksa zor bir iş az biraz anlayana kolay.

Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    else if (item->IsUpgradeItem())
        item->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
    else if (item->IsBook())
        item->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
    else if (item->IsStone())
        item->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
#endif

Mesela burada 3 seçenek upgrade book stone. Bunun altına atıyorum efsun istiyorsun

Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    else if (item->IsUpgradeItem())
        item->AddToCharacter(ch, TItemPos(UPGRADE_INVENTORY, iEmptyPos));
    else if (item->IsBook())
        item->AddToCharacter(ch, TItemPos(BOOK_INVENTORY, iEmptyPos));
    else if (item->IsStone())
        item->AddToCharacter(ch, TItemPos(STONE_INVENTORY, iEmptyPos));
    else if (item->IsEfsun())
        item->AddToCharacter(ch, TItemPos(EFSUN_INVENTORY, iEmptyPos));
#endif

bu şekilde ekleme yapmak gerekiyor tek kodlarda bunlar değil tabi bütün sistemin kodlarını aratıp her birine ekleme yapmak gerekiyor. O forumdaki çöp sistemi ekleyip sorunlarıyla uğraşacağına bu dediğim ile uğraş tecrübe bilgi edinirsin en azından.
tamam forumdaki çöp sistemi unutalım şuan bana 1 tane sandık için nasıl ekleme yaparım tek tek anlatırsan geri kalan bölümleri çiçektir efsundur kendim eklerim eğerki anlatabiirsen tabiki
 
tamam forumdaki çöp sistemi unutalım şuan bana 1 tane sandık için nasıl ekleme yaparım tek tek anlatırsan geri kalan bölümleri çiçektir efsundur kendim eklerim eğerki anlatabiirsen tabiki
Örnek verdimya onun gibi yapacaksın. Dosyalarında ENABLE_SPECIAL_STORAGE bunu aratacaksın her çıkan sonuçta ekleme yapacaksın. Mesela length.h dosyası;

#ifdef ENABLE_SPECIAL_STORAGE
UPGRADE_INVENTORY,
BOOK_INVENTORY,
STONE_INVENTORY,
#endif

Bunun içine ekleyeceksin mesela char.h dosyası

#ifdef ENABLE_SPECIAL_STORAGE
LPITEM GetUpgradeInventoryItem(WORD wCell) const;
LPITEM GetBookInventoryItem(WORD wCell) const;
LPITEM GetStoneInventoryItem(WORD wCell) const;
#endif

buna ekleme yapacaksın.

char_item.cpp

#ifdef ENABLE_SPECIAL_STORAGE
LPITEM CHARACTER::GetUpgradeInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(UPGRADE_INVENTORY, wCell));
}
LPITEM CHARACTER::GetBookInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(BOOK_INVENTORY, wCell));
}
LPITEM CHARACTER::GetStoneInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(STONE_INVENTORY, wCell));
}
#endif

Char item.cpp dosyasında bir başka kod buna ekleme yapacaksın;
Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    case UPGRADE_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSUItemGrid[wCell])
        {
            if (m_pointsInstant.wSSUItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSUItemGrid[p])
                        if (m_pointsInstant.wSSUItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSUItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
    case BOOK_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSBItemGrid[wCell])
        {
            if (m_pointsInstant.wSSBItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSBItemGrid[p])
                        if (m_pointsInstant.wSSBItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSBItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
    case STONE_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSSItemGrid[wCell])
        {
            if (m_pointsInstant.wSSSItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSSItemGrid[p])
                        if (m_pointsInstant.wSSSItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSSItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
#endif

Böyle eklemeler yapacaksın dosyalarında arattıktan sonra bütün kodlar çıkacak zaten.
 
Örnek verdimya onun gibi yapacaksın. Dosyalarında ENABLE_SPECIAL_STORAGE bunu aratacaksın her çıkan sonuçta ekleme yapacaksın. Mesela length.h dosyası;

#ifdef ENABLE_SPECIAL_STORAGE
UPGRADE_INVENTORY,
BOOK_INVENTORY,
STONE_INVENTORY,
#endif

Bunun içine ekleyeceksin mesela char.h dosyası

#ifdef ENABLE_SPECIAL_STORAGE
LPITEM GetUpgradeInventoryItem(WORD wCell) const;
LPITEM GetBookInventoryItem(WORD wCell) const;
LPITEM GetStoneInventoryItem(WORD wCell) const;
#endif

buna ekleme yapacaksın.

char_item.cpp

#ifdef ENABLE_SPECIAL_STORAGE
LPITEM CHARACTER::GetUpgradeInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(UPGRADE_INVENTORY, wCell));
}
LPITEM CHARACTER::GetBookInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(BOOK_INVENTORY, wCell));
}
LPITEM CHARACTER::GetStoneInventoryItem(WORD wCell) const
{
return GetItem(TItemPos(STONE_INVENTORY, wCell));
}
#endif

Char item.cpp dosyasında bir başka kod buna ekleme yapacaksın;
Kod:
#ifdef ENABLE_SPECIAL_STORAGE
    case UPGRADE_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSUItemGrid[wCell])
        {
            if (m_pointsInstant.wSSUItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSUItemGrid[p])
                        if (m_pointsInstant.wSSUItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSUItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
    case BOOK_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSBItemGrid[wCell])
        {
            if (m_pointsInstant.wSSBItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSBItemGrid[p])
                        if (m_pointsInstant.wSSBItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSBItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
    case STONE_INVENTORY:
    {
        WORD wCell = Cell.cell;
        if (wCell >= SPECIAL_INVENTORY_MAX_NUM)
            return false;
        iExceptionCell++;
        if (m_pointsInstant.wSSSItemGrid[wCell])
        {
            if (m_pointsInstant.wSSSItemGrid[wCell] == iExceptionCell)
            {
                if (bSize == 1)
                    return true;
                int j = 1;
                do
                {
                    int p = wCell + (5 * j);
                    if (p >= SPECIAL_INVENTORY_MAX_NUM)
                        return false;
                    if (m_pointsInstant.wSSSItemGrid[p])
                        if (m_pointsInstant.wSSSItemGrid[p] != iExceptionCell)
                            return false;
                } while (++j < bSize);
                return true;
            }
            else
                return false;
        }
        if (1 == bSize)
            return true;
        else
        {
            int j = 1;
            do
            {
                int p = wCell + (5 * j);
                if (p >= SPECIAL_INVENTORY_MAX_NUM)
                    return false;
                if (m_pointsInstant.bItemGrid[p]) // old bItemGrid
                    if (m_pointsInstant.wSSSItemGrid[p] != iExceptionCell)
                        return false;
            } while (++j < bSize);
            return true;
        }
    }
    break;
#endif

Böyle eklemeler yapacaksın dosyalarında arattıktan sonra bütün kodlar çıkacak zaten.
anlaşılan kolay değilmiş.
 
Bende şuan senin dediğin şekilde kendime ekleme yapıyorum ve kopyala yapıştır yaparak kolayca olacak şey değil. Referans istiyorsan türkmmoda pachi tunga filesi var sabitte onun içindeki k envanterinde 6 bölümlüsü var ondan bakabilirsin.
 
Geri
Üst