Yardım m_pointsInstant ile m_PlayerSlots farkı nedir?

  • Konuyu açan Konuyu açan texas1343
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 87
Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

texas1343

MT Üye
MT Üye
Mesaj
576
Çözümler
25
Beğeni
351
Puan
799
Ticaret Puanı
0
m_pointsInstant ile m_PlayerSlots farkı nedir? niye m_PlayerSlots yapmalıyım zararı veya katkısı nedir?

örnek;

m_pointsInstant;
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SWITCHBOT
    case SWITCHBOT:
    {
        LPITEM pOld = m_pointsInstant.pSwitchbotItems[wCell];
        if (pItem && pOld)
        {
            return;
        }

        if (wCell >= SWITCHBOT_SLOT_COUNT)
        {
            sys_err("CHARACTER::SetItem: invalid switchbot item cell %d", wCell);
            return;
        }

        if (pItem)
        {
            CSwitchbotManager::Instance().RegisterItem(GetPlayerID(), pItem->GetID(), wCell);
        }
        else
        {
            CSwitchbotManager::Instance().UnregisterItem(GetPlayerID(), wCell);
        }

        m_pointsInstant.pSwitchbotItems[wCell] = pItem;
    }
    break;
#endif



m_PlayerSlots;
Kod:
Genişlet Daralt Kopyala
#ifdef ENABLE_SWITCHBOT
    case SWITCHBOT:
    {
        LPITEM pOld = m_PlayerSlots->pSwitchbotItems[wCell];
        if (pItem && pOld)
        {
            return;
        }

        if (wCell >= SWITCHBOT_SLOT_COUNT)
        {
            sys_err("CHARACTER::SetItem: invalid switchbot item cell %d", wCell);
            return;
        }

        if (pItem)
        {
            CSwitchbotManager::Instance().RegisterItem(GetPlayerID(), pItem->GetID(), wCell);
        }
        else
        {
            CSwitchbotManager::Instance().UnregisterItem(GetPlayerID(), wCell);
        }

        m_PlayerSlots->pSwitchbotItems[wCell] = pItem;
    }
    break;
#endif
 
.h dosyasında tanımlaması var. Martysama altyapısı kullanıyorsunuz sanırsam. Bu yüzden m_PlayerSlots kullanabilirsiniz. Eğer sizin fileste yoksa m_pointsInstant olanı kullanın

C++:
Genişlet Daralt Kopyala
        CHARACTER_POINT_INSTANT    m_pointsInstant;
        std::unique_ptr<PlayerSlotT> m_PlayerSlots;

C++:
Genişlet Daralt Kopyala
// @fixme199 BEGIN
struct PlayerSlotT {
    LPITEM            pItems[INVENTORY_AND_EQUIP_SLOT_MAX];
    BYTE            bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
    LPITEM            pDSItems[DRAGON_SOUL_INVENTORY_MAX_NUM];
    WORD            wDSItemGrid[DRAGON_SOUL_INVENTORY_MAX_NUM];
    LPITEM            pCubeItems[CUBE_MAX_NUM];
    TItemPosEx        pAcceMaterials[ACCE_WINDOW_MAX_MATERIALS];
    TQuickslot        pQuickslot[QUICKSLOT_MAX_NUM];
};
 
evet martysama kullanıyorum char.h şöyle değişiklik yaptım;


C++:
Genişlet Daralt Kopyala
struct PlayerSlotT {
    std::array<LPITEM,INVENTORY_AND_EQUIP_SLOT_MAX> pItems;
    std::array<BYTE,INVENTORY_AND_EQUIP_SLOT_MAX> bItemGrid;
    std::array<LPITEM,DRAGON_SOUL_INVENTORY_MAX_NUM> pDSItems;
    std::array<WORD,DRAGON_SOUL_INVENTORY_MAX_NUM> wDSItemGrid;
    std::array<LPITEM,CUBE_MAX_NUM> pCubeItems;
#ifdef ENABLE_ACCE_COSTUME_SYSTEM
    std::array<TItemPosEx,ACCE_WINDOW_MAX_MATERIALS> pAcceMaterials;
#endif
#ifdef ENABLE_SWITCHBOT
    std::array<LPITEM, SWITCHBOT_SLOT_COUNT> pSwitchbotItems;
#endif
    std::array<TQuickslot,QUICKSLOT_MAX_NUM> pQuickslot;
};
 
Doğru gözüküyor. Vanilla sourcelerde bu item bilgileri CHARACTER_POINT_INSTANT içerisinde yer alıyor fakat martysama da ayrılmış.
 
m_pointsInstant geçici işlemlerde kullanılır . m_PlayerSlots ise kalıcı olarak işler . Eğer sen efsun botunda kullancaksan bunu m_PlayerSlots kullanman daha iyi olur diye düşünüyorum ileriye dönük şekilde sağlamlık olarak m_PlayerSlots tercih etmek mantıklı ( Switchbot tarzı sistemlerde )
 
m_pointsInstant geçici işlemlerde kullanılır . m_PlayerSlots ise kalıcı olarak işler . Eğer sen efsun botunda kullancaksan bunu m_PlayerSlots kullanman daha iyi olur diye düşünüyorum ileriye dönük şekilde sağlamlık olarak m_PlayerSlots tercih etmek mantıklı ( Switchbot tarzı sistemlerde )
Evet düzeltim m_PlayerSlots olarak birde ek olarak dikkatimi çeken şey şu;

Kod:
Genişlet Daralt Kopyala
LPITEM pOld = m_pointsInstant.pSwitchbotItems[wCell];

Kod:
Genişlet Daralt Kopyala
LPITEM pOld = m_PlayerSlots->pSwitchbotItems[wCell];

-> ve . işaretleri
 
evet martysama kullanıyorum char.h şöyle değişiklik yaptım;


C++:
Genişlet Daralt Kopyala
struct PlayerSlotT {
    std::array<LPITEM,INVENTORY_AND_EQUIP_SLOT_MAX> pItems;
    std::array<BYTE,INVENTORY_AND_EQUIP_SLOT_MAX> bItemGrid;
    std::array<LPITEM,DRAGON_SOUL_INVENTORY_MAX_NUM> pDSItems;
    std::array<WORD,DRAGON_SOUL_INVENTORY_MAX_NUM> wDSItemGrid;
    std::array<LPITEM,CUBE_MAX_NUM> pCubeItems;
#ifdef ENABLE_ACCE_COSTUME_SYSTEM
    std::array<TItemPosEx,ACCE_WINDOW_MAX_MATERIALS> pAcceMaterials;
#endif
#ifdef ENABLE_SWITCHBOT
    std::array<LPITEM, SWITCHBOT_SLOT_COUNT> pSwitchbotItems;
#endif
    std::array<TQuickslot,QUICKSLOT_MAX_NUM> pQuickslot;
};
yani aslında ben böyle kullanılır mı bilmiyorum fakat şu sekilde olsada muhtemelen calısıcaktır


LPENTITY m_pDragonSoulRefineWindowOpener; bunu aratıp
altına

#ifdef ENABLE_SWITCHBOT
LPITEM pSwitchbotItems[SWITCHBOT_SLOT_COUNT];
#endif

bu sekildede calıstırırdı bence martyde cunku mainlinedede bu böyle olmalıydı yanlıs hatırlamıyorsam
 
Geri
Üst