Hızlı İtem Toplama Sistemi Sorunsuz

melihalbayrak

Geliştirici
Geliştirici
Yardımsever Üye
Usta Üye
Sistem kendi kullandığım bir sistemdir paylaşılan sistemlerden farklıdır. Yerde fazla item varsa veya envanteriniz dolu ve item toplamaya çalıştığınızda karakter ekranına atmaz. Şimdiye kadar bir sorununu görmedim eğer sorun yaşayanlar varsa konu altından belirtsinler.

Sistem MMO TUTKUNLARI için paylaşılmıştır. Başka forum sitelerinde paylaşılması yasaktır.

Aşağıdakini yapamazsanız build alamazsınız!
C++:
Aratılır

bool CPythonItem::GetCloseItem(const TPixelPosition & c_rPixelPosition, DWORD * pdwItemID, DWORD dwDistance)
{
...........
}

Kod bloğu altına eklenir.

#ifdef ENABLE_INSTANT_PICKUP_SYSTEM
bool CPythonItem::GetCloseItemVector(const std::string& myName, const TPixelPosition& c_rPixelPosition, std::vector<DWORD>& itemVidList)
{
DWORD dwCloseItemDistance = 1000 * 1000;

TGroundItemInstanceMap::iterator i;
for (i = m_GroundItemInstanceMap.begin(); i != m_GroundItemInstanceMap.end(); ++i)
{
TGroundItemInstance* pInstance = i->second;

DWORD dwxDistance = DWORD(c_rPixelPosition.x - pInstance->v3EndPosition.x);
DWORD dwyDistance = DWORD(c_rPixelPosition.y - (-pInstance->v3EndPosition.y));
DWORD dwDistance = DWORD(dwxDistance * dwxDistance + dwyDistance * dwyDistance);

if (dwDistance < dwCloseItemDistance && (pInstance->stOwnership == "" || pInstance->stOwnership == myName))
{
itemVidList.push_back(i->first);
}
}

return true;
}
#endif




Linkleri görebilmek için giriş yap veya kayıt ol.
 

Dosya Eklentileri

  • INSTANT_PICKUP_SYSTEM.zip
    3,2 KB · Gösterim: 207
En son bir moderatör tarafından düzenlenmiş:
Paylaşım tarihi, ilk nerede ve kim tarafından paylaşıldığının kanıtı olacaktır zaten. Başka yerlerde paylaşılsa bile gerçeği değiştirmez.
Paylaşım için teşekkürler.
 
Emeğinize sağlık. Benim de düşündüğüm bir yapı var aslında nasıl olabilir bilmiyorum ama çoğu rpg oyununda düşen itemler toplu oluyor. Mesela yerde bir çuval olacak ve onun içinde yanglar ve itemlerin hepsi yer alacak. Hem böylelikle entity fazlalığı düşmüş olur. Sizce bu tarz bir şey Metin2’ye uygun olur mu?
 
Emeğinize sağlık. Benim de düşündüğüm bir yapı var aslında nasıl olabilir bilmiyorum ama çoğu rpg oyununda düşen itemler toplu oluyor. Mesela yerde bir çuval olacak ve onun içinde yanglar ve itemlerin hepsi yer alacak. Hem böylelikle entity fazlalığı düşmüş olur. Sizce bu tarz bir şey Metin2’ye uygun olur mu?
Güzel bir düşünce olabilir neden olmasın. Fakat şöyle ki bu oyunun oyuncuları elbette ondada bir bug yapar item kopyalar core çökertir bişey yapar riskli iş. :) En iyisi tek tek item düşürtmek gibi bence :)
 
Bi ara ciddi ciddi böyle bir şeyi kodlamayı düşündüm hatta sıraya eklemiştim ancak bir türlü fırsat ona gelmedi. :)

Metin2’nin drop olayının güzel yanları var tamam ancak bu şekilde çok fazla lag yapıyor. Yanglar vs.
 
1637699298635.png


bu hata neden olabilir?
 
#include "Locale_inc.h" eklemeyi dene. Büyük ihtimalle makroyu algılamıyordur. Ya da #ifdef kısımlarını silip düz olarak eklemeyi dene.

Teşekkürler ancak aynı hata devam ediyor. Stdafx.h dosyasına kaydettim sonra düzenlenen dosyalara baktım stdafx.h include edilmemiş, dosyaya include ettim ancak sonuç aynı.

1637748593796.png

1637748606741.png


Hata veren kısım burası;
1637748783546.png
 
Teşekkürler ancak aynı hata devam ediyor. Stdafx.h dosyasına kaydettim sonra düzenlenen dosyalara baktım stdafx.h include edilmemiş, dosyaya include ettim ancak sonuç aynı.

8463 eklentisini görüntüle
8464 eklentisini görüntüle

Hata veren kısım burası;
8465 eklentisini görüntüle
O zaman aklıma gelen diğer ihtimal, PythonPlayerInput.cpp dosyasında #include "PythonItem.h" olmaması. Eğer bu da olmazsa bilemiyorum sistemin kodlarıma bakmadım hiç ve şu an mobilim.
 
Teşekkürler ancak aynı hata devam ediyor. Stdafx.h dosyasına kaydettim sonra düzenlenen dosyalara baktım stdafx.h include edilmemiş, dosyaya include ettim ancak sonuç aynı.

8463 eklentisini görüntüle
8464 eklentisini görüntüle

Hata veren kısım burası;
8465 eklentisini görüntüle
Sorun include değil

PythonItem.cpp:
Aratılır

bool CPythonItem::GetCloseItem(const TPixelPosition & c_rPixelPosition, DWORD * pdwItemID, DWORD dwDistance)
{
...........
}

Kod bloğu altına eklenir.

#ifdef ENABLE_INSTANT_PICKUP_SYSTEM
bool CPythonItem::GetCloseItemVector(const std::string& myName, const TPixelPosition& c_rPixelPosition, std::vector<DWORD>& itemVidList)
{
    DWORD dwCloseItemDistance = 1000 * 1000;

    TGroundItemInstanceMap::iterator i;
    for (i = m_GroundItemInstanceMap.begin(); i != m_GroundItemInstanceMap.end(); ++i)
    {
        TGroundItemInstance* pInstance = i->second;

        DWORD dwxDistance = DWORD(c_rPixelPosition.x - pInstance->v3EndPosition.x);
        DWORD dwyDistance = DWORD(c_rPixelPosition.y - (-pInstance->v3EndPosition.y));
        DWORD dwDistance = DWORD(dwxDistance * dwxDistance + dwyDistance * dwyDistance);

        if (dwDistance < dwCloseItemDistance && (pInstance->stOwnership == "" || pInstance->stOwnership == myName))
        {
            itemVidList.push_back(i->first);
        }
    }

    return true;
}
#endif
 
Sorun include değil

PythonItem.cpp:
Aratılır

bool CPythonItem::GetCloseItem(const TPixelPosition & c_rPixelPosition, DWORD * pdwItemID, DWORD dwDistance)
{
...........
}

Kod bloğu altına eklenir.

#ifdef ENABLE_INSTANT_PICKUP_SYSTEM
bool CPythonItem::GetCloseItemVector(const std::string& myName, const TPixelPosition& c_rPixelPosition, std::vector<DWORD>& itemVidList)
{
    DWORD dwCloseItemDistance = 1000 * 1000;

    TGroundItemInstanceMap::iterator i;
    for (i = m_GroundItemInstanceMap.begin(); i != m_GroundItemInstanceMap.end(); ++i)
    {
        TGroundItemInstance* pInstance = i->second;

        DWORD dwxDistance = DWORD(c_rPixelPosition.x - pInstance->v3EndPosition.x);
        DWORD dwyDistance = DWORD(c_rPixelPosition.y - (-pInstance->v3EndPosition.y));
        DWORD dwDistance = DWORD(dwxDistance * dwxDistance + dwyDistance * dwyDistance);

        if (dwDistance < dwCloseItemDistance && (pInstance->stOwnership == "" || pInstance->stOwnership == myName))
        {
            itemVidList.push_back(i->first);
        }
    }

    return true;
}
#endif

Teşekkürler, bu şekilde çözüldü.

Toplama menzili için DWORD dwCloseItemDistance = 1000 * 1000; bu kısımı genişletmem gerek değil mi?
 
Geri