C++ Hızlı İtem Toplama

XPyrion

Süper Moderatör
Süper Moderatör
Premium Üye
Geliştirici
Yardımsever Üye
Editör
Mesaj
813
Çözümler
41
Beğeni
2.483
Puan
1.679
Ticaret Puanı
0
Merhaba arkadaşlar biliyorum bir çok forumda bu konu mevcut ama elimizin altında olsun istediğim için buraya kod bloğunu bırakıyorum ihtiyacı olan arkadaşlar kullanabilsinler diye.


NOT: Bu tek seferde yerdeki tüm item'leri toplamaz. Sadece seri bir şekilde toplamanıza yarar.


ClientSource/UserInterface/PythonPlayer.cpp:
Genişlet Daralt Kopyala
void CPythonPlayer::SendClickItemPacket(DWORD dwIID)
{
    if (IsObserverMode())
        return;

    static DWORD s_dwNextTCPTime = 0;

    DWORD dwCurTime=ELTimer_GetMSec();

    if (dwCurTime >= s_dwNextTCPTime)
    {
        s_dwNextTCPTime=dwCurTime + 500;

        const char * c_szOwnerName;
        if (!CPythonItem::Instance().GetOwnership(dwIID, &c_szOwnerName))
            return;

        if (strlen(c_szOwnerName) > 0)
        if (0 != strcmp(c_szOwnerName, GetName()))
        {
            CItemData * pItemData;
            if (!CItemManager::Instance().GetItemDataPointer(CPythonItem::Instance().GetVirtualNumberOfGroundItem(dwIID), &pItemData))
            {
                Tracenf("CPythonPlayer::SendClickItemPacket(dwIID=%d) : Non-exist item.", dwIID);
                return;
            }
            if (!IsPartyMemberByName(c_szOwnerName) || pItemData->IsAntiFlag(CItemData::ITEM_ANTIFLAG_DROP | CItemData::ITEM_ANTIFLAG_GIVE))
            {
                PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotPickItem", Py_BuildValue("()"));
                return;
            }
        }

        CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
        rkNetStream.SendItemPickUpPacket(dwIID);
    }
}

İsterseniz yukarıda ki kod bloğunu yorum satırına çevirin ya da isterseniz aşağıda ki kod bloğu ile değiştirin.

ClientSource/UserInterface/PythonPlayer.cpp:
Genişlet Daralt Kopyala
void CPythonPlayer::SendClickItemPacket(DWORD dwIID)
{
    if (IsObserverMode())
        return;

    const char * c_szOwnerName;
    if (!CPythonItem::Instance().GetOwnership(dwIID, &c_szOwnerName))
        return;

    if (strlen(c_szOwnerName) > 0)
    if (0 != strcmp(c_szOwnerName, GetName()))
    {
        CItemData * pItemData;
        if (!CItemManager::Instance().GetItemDataPointer(CPythonItem::Instance().GetVirtualNumberOfGroundItem(dwIID), &pItemData))
        {
            Tracenf("CPythonPlayer::SendClickItemPacket(dwIID=%d) : Non-exist item.", dwIID);
            return;
        }
        if (!IsPartyMemberByName(c_szOwnerName) || pItemData->IsAntiFlag(CItemData::ITEM_ANTIFLAG_DROP | CItemData::ITEM_ANTIFLAG_GIVE))
        {
            PyCallClassMemberFunc(m_ppyGameWindow, "OnCannotPickItem", Py_BuildValue("()"));
            return;
        }
    }

    CPythonNetworkStream& rkNetStream=CPythonNetworkStream::Instance();
    rkNetStream.SendItemPickUpPacket(dwIID);
}




Herkese iyi forumlar.
Sevgi ve sağlıcakla dostlar.
 
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst