Hikayeler

Reklam vermek için turkmmo@gmail.com

Sutaşı Bar Envanteri

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

Kemer envanterini revize ederek sorunsuzca kullanabilirsin, mesela kemer itemi takıldığında açılan kemer envanter slotları kontrollerini kaldırıp, kemer itemi gerekmeden açık kalmasını sağlayabilirsin. Çözemezsen müsait bir zamanımda ilgileneceğim.
 
İyi olur valla bende yarın bakıcam buna
 
Anlatımlı olarak yazdım sana

belt_inventory_Helper.h:
static bool CanMoveIntoBeltInventory(LPITEM item)
    {
        if (NULL == item)
            return false;

        if (item->GetType() != ITEM_USE)
            return false;

        switch (item->GetSubType())
        {
            case USE_POTION:
            case USE_POTION_NODELAY:
            case USE_POTION_CONTINUE:
            case USE_POTION_TOWER:
            case USE_POTION_NODELAY_TOWER:
                return true;
            default:
                return false;
        }

        return false;
    }

burayı düzenle sana örnek olsun diye yazdım eğer pot felan girsin istemez isen içine // Standart Tip ve Alt Tip Kontrolleri (Mevcut yapı) kontrolünü // komple kapat

Kod:
static bool CanMoveIntoBeltInventory(LPITEM item)
    {
        if (NULL == item)
            return false;

        // --- VNUM KONTROLÜ BAŞLANGICI ---
        DWORD itemVnum = item->GetVnum();

        // Sadece bu VNUM'lara özel olarak direkt giriş izni ver (Tipine bakmadan)
        if (itemVnum == 50051 || itemVnum == 50052)
        {
            return true;
        }
      
        // Eğer spesifik bir VNUM'u özellikle ENGELLEMEK istersen:
        // if (itemVnum == 27001)
        //    return false;
        // --- VNUM KONTROLÜ BİTİŞİ ---

        // Standart Tip ve Alt Tip Kontrolleri (Mevcut yapı)
        if (item->GetType() != ITEM_USE)
            return false;

        switch (item->GetSubType())
        {
            case USE_POTION:
            case USE_POTION_NODELAY:
            case USE_POTION_CONTINUE:
            case USE_POTION_TOWER:
            case USE_POTION_NODELAY_TOWER:
                return true;
            default:
                return false;
        }

        return false;
    }

bu şekilde değiştirirsen sürekli açık kalır kemer envanteri
aynı dosya:
static bool IsAvailableCell(WORD cell, int beltGrade /* int beltLevel */)
    {
        // Orijinal kuralı ve kemer derecesi kontrolünü sildik.
        // Artık 16 hücrenin tamamı kemer olsa da olmasa da her zaman kullanılabilir.
        return true;
    }

root içerisinde uiinventory.py aç
uiinventory.py:
def RefreshSlot(self):
        getItemVNum = ReprGetItemIndex(player.BELT_INVENTORY)
        getItemCount = ReprGetItemCount(player.BELT_INVENTORY)

        for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
            slotNumber = item.BELT_INVENTORY_SLOT_START + i
            self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), getItemCount(slotNumber))
            self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)

            if player.IsAvailableBeltInventoryCell(slotNumber):
                self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
            else:
                self.wndBeltInventorySlot.DisableCoverButton(slotNumber)

        self.wndBeltInventorySlot.RefreshSlot()

uiinventory.py:
def RefreshSlot(self):
        getItemVNum = ReprGetItemIndex(player.BELT_INVENTORY)
        getItemCount = ReprGetItemCount(player.BELT_INVENTORY)

        for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
            slotNumber = item.BELT_INVENTORY_SLOT_START + i
            self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), getItemCount(slotNumber))
            self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)

            # Kemer takılı olup olmadığını kontrol eden sistemi devre dışı bıraktık.
            # Artık tüm slotlar kemer olsa da olmasa da açık (kullanılabilir) görünecek.
            self.wndBeltInventorySlot.EnableCoverButton(slotNumber)

        self.wndBeltInventorySlot.RefreshSlot()
 
Son düzenleme:
Anlatımlı olarak yazdım sana

belt_inventory_Helper.h:
static bool CanMoveIntoBeltInventory(LPITEM item)
    {
        if (NULL == item)
            return false;

        if (item->GetType() != ITEM_USE)
            return false;

        switch (item->GetSubType())
        {
            case USE_POTION:
            case USE_POTION_NODELAY:
            case USE_POTION_CONTINUE:
            case USE_POTION_TOWER:
            case USE_POTION_NODELAY_TOWER:
                return true;
            default:
                return false;
        }

        return false;
    }

burayı düzenle sana örnek olsun diye yazdım eğer pot felan girsin istemez isen içine // Standart Tip ve Alt Tip Kontrolleri (Mevcut yapı) kontrolünü // komple kapat

Kod:
static bool CanMoveIntoBeltInventory(LPITEM item)
    {
        if (NULL == item)
            return false;

        // --- VNUM KONTROLÜ BAŞLANGICI ---
        DWORD itemVnum = item->GetVnum();

        // Sadece bu VNUM'lara özel olarak direkt giriş izni ver (Tipine bakmadan)
        if (itemVnum == 50051 || itemVnum == 50052)
        {
            return true;
        }
     
        // Eğer spesifik bir VNUM'u özellikle ENGELLEMEK istersen:
        // if (itemVnum == 27001)
        //    return false;
        // --- VNUM KONTROLÜ BİTİŞİ ---

        // Standart Tip ve Alt Tip Kontrolleri (Mevcut yapı)
        if (item->GetType() != ITEM_USE)
            return false;

        switch (item->GetSubType())
        {
            case USE_POTION:
            case USE_POTION_NODELAY:
            case USE_POTION_CONTINUE:
            case USE_POTION_TOWER:
            case USE_POTION_NODELAY_TOWER:
                return true;
            default:
                return false;
        }

        return false;
    }

bu şekilde değiştirirsen sürekli açık kalır kemer envanteri
aynı dosya:
static bool IsAvailableCell(WORD cell, int beltGrade /* int beltLevel */)
    {
        // Orijinal kuralı ve kemer derecesi kontrolünü sildik.
        // Artık 16 hücrenin tamamı kemer olsa da olmasa da her zaman kullanılabilir.
        return true;
    }

root içerisinde uiinventory.py aç
uiinventory.py:
def RefreshSlot(self):
        getItemVNum = ReprGetItemIndex(player.BELT_INVENTORY)
        getItemCount = ReprGetItemCount(player.BELT_INVENTORY)

        for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
            slotNumber = item.BELT_INVENTORY_SLOT_START + i
            self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), getItemCount(slotNumber))
            self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)

            if player.IsAvailableBeltInventoryCell(slotNumber):
                self.wndBeltInventorySlot.EnableCoverButton(slotNumber)
            else:
                self.wndBeltInventorySlot.DisableCoverButton(slotNumber)

        self.wndBeltInventorySlot.RefreshSlot()

uiinventory.py:
def RefreshSlot(self):
        getItemVNum = ReprGetItemIndex(player.BELT_INVENTORY)
        getItemCount = ReprGetItemCount(player.BELT_INVENTORY)

        for i in xrange(item.BELT_INVENTORY_SLOT_COUNT):
            slotNumber = item.BELT_INVENTORY_SLOT_START + i
            self.wndBeltInventorySlot.SetItemSlot(slotNumber, getItemVNum(slotNumber), getItemCount(slotNumber))
            self.wndBeltInventorySlot.SetAlwaysRenderCoverButton(slotNumber, True)

            # Kemer takılı olup olmadığını kontrol eden sistemi devre dışı bıraktık.
            # Artık tüm slotlar kemer olsa da olmasa da açık (kullanılabilir) görünecek.
            self.wndBeltInventorySlot.EnableCoverButton(slotNumber)

        self.wndBeltInventorySlot.RefreshSlot()
Deniyecem teşekkür ettim
 

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

Geri
Üst