Mob Log Fix DirectX9 Version

  • Konuyu açan Konuyu açan beratcanleylek
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 6
  • Gösterim Gösterim 501

beratcanleylek

Üye
Üye
Mesaj
51
Çözümler
3
Beğeni
54
Puan
689
Ticaret Puanı
0
Piyasada Mob Log Fix dosyaları mevcut fakat kendi filesime uyarlamaya çalışırken fark ettim ki DirectX8 sürümü ile uyumlu sadece. ayrıca bazı kodlar eski yapılarda kullanıldığı için yeni sistemler kabul etmiyor ve saçma sapan hatalarla kendini geliştirmeye çalışan arkadaşları hayattan soğutabiliyor.
Ben kendim için uyarlama yaptım ve konusunu göremeyince sizlerle de paylaşmak istedim

Burayı görüntülemek için üye girişi yapmalı veya kayıt olmalısınız.


Takıldığınız bir yer olursa elimden geldiğince yardımcı olacağım.
Umarım faydalı bir konu olur.

NOT: Beni yıllar sonra metin2 geliştirmeye iten hayat utansın.

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

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


Link tekrar güncellendi.
 
Son düzenleme:
bağlantıya erişim yok evet ama üye henüz foruma girmemiş. girince bildirimleri görüp düzeltecektir. lütfen sabırlı olalım.
 
Paylaştığım altyapı dosyalarında zaten bu eklenti mevcut. Tam olarak neyini sen uyarladın açıklayabilirsen buradaki arkadaşlar benim paylaştığım altyapı içerisinden değil, senin paylaştığın konu üzerinden almaya dikkat ederler. Yorumum yanlış anlaşılmasın sadece aradaki farkları arkadaşların anlaması için söyüyorum. Foruma bu şekilde daha katkılı olacağını düşünüyorum.
Bakınmak isteyenler için paylaştığım altyapı linkini bırakıyorum, karşılaştırma yapabilirler;
 
Paylaştığım altyapı dosyalarında zaten bu eklenti mevcut. Tam olarak neyini sen uyarladın açıklayabilirsen buradaki arkadaşlar benim paylaştığım altyapı içerisinden değil, senin paylaştığın konu üzerinden almaya dikkat ederler. Yorumum yanlış anlaşılmasın sadece aradaki farkları arkadaşların anlaması için söyüyorum. Foruma bu şekilde daha katkılı olacağını düşünüyorum.
Bakınmak isteyenler için paylaştığım altyapı linkini bırakıyorum, karşılaştırma yapabilirler;
sanırsam yıllar evvel metin2downloads.to da sende bulunan düzenlemeler paylaşılmıştı, aynısını paylaşmıştır.
 
bağlantıya erişim yok evet ama üye henüz foruma girmemiş. girince bildirimleri görüp düzeltecektir. lütfen sabırlı olalım.
bağlantıya erişim yok, bağlantı özeldir
Virüstotalden sonra link güncelleyince karışıklık olmuş birazdan güncelliyorum. Sabrınız için teşekkür ederim 🙏😊

Piyasada Mob Log Fix dosyaları mevcut fakat kendi filesime uyarlamaya çalışırken fark ettim ki DirectX8 sürümü ile uyumlu sadece. ayrıca bazı kodlar eski yapılarda kullanıldığı için yeni sistemler kabul etmiyor ve saçma sapan hatalarla kendini geliştirmeye çalışan arkadaşları hayattan soğutabiliyor.
Ben kendim için uyarlama yaptım ve konusunu göremeyince sizlerle de paylaşmak istedim

Alıntılarda özel içerikler gözükmez.


Takıldığınız bir yer olursa elimden geldiğince yardımcı olacağım.
Umarım faydalı bir konu olur.

NOT: Beni yıllar sonra metin2 geliştirmeye iten hayat utansın.

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

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


Link tekrar güncellendi.
Güncel açık link paylaşılmıştır.
 
Paylaştığım altyapı dosyalarında zaten bu eklenti mevcut. Tam olarak neyini sen uyarladın açıklayabilirsen buradaki arkadaşlar benim paylaştığım altyapı içerisinden değil, senin paylaştığın konu üzerinden almaya dikkat ederler. Yorumum yanlış anlaşılmasın sadece aradaki farkları arkadaşların anlaması için söyüyorum. Foruma bu şekilde daha katkılı olacağını düşünüyorum.
Bakınmak isteyenler için paylaştığım altyapı linkini bırakıyorum, karşılaştırma yapabilirler;
sanırsam yıllar evvel metin2downloads.to da sende bulunan düzenlemeler paylaşılmıştı, aynısını paylaşmıştır.
Ülkecek biraz gergin olduğumuz şu zamanda @Adalet seni nasıl yanlış anlayabilirim dostum :)
Öncelikle belirtmek isterim ki gidip bu dosyalar için konu açayım paylaşıp ilgi toplayayım diye bir derdim yoktu.
Mob Log Fix Hatası Bu konuyu gördüm ve bende filesime ekleyeceğimi sorunu çözersem paylaşacağımı belirtmiştim. Çözdüm ve paylaştım.
Şimdi senin dosyalarına gelecek olursak dostum.

1. Konu başlığı Mob Log Fix DirectX 9 version olarak göremiyorum server files dosyaları paylaşmışsın.
2. Senden daha az tecrübeli sistem vb. sökmeyi henüz bilmeyen arkadaşlar için zor olacaktır.
3. Konu açıklamasında belirttiğim gibi piyasadaki ve senin client source dosyalarındaki DirectX8 ve bazı eski kod yapıları kullanıldığı için sistemi sökseler dahi çalışmayacaktır.
4. d3dx8 gibi kütüphanelere sahip olmayan sadece DirectX9 uyarlı sistem kullanan arkadaşlar olduğu için bunu paylaşma gereği duydum.

DirectX9 ve eski kod yapılarından kastım şunlardır; Sadece 1 Basit örnek gösteriyorum.

Piyasadaki Mob Log Fix dosyaları ve Eklentili Altyapı Dosyalarında ki Clientsource/EterLib/GrpBase.cpp:
Genişlet Daralt Kopyala
#ifdef ENABLE_FIX_MOBS_LAG
IDirect3DVertexBuffer8* CGraphicBase::m_smallPdtVertexBuffer;
IDirect3DVertexBuffer8 * CGraphicBase::m_largePdtVertexBuffer;
#else
LPDIRECT3DVERTEXBUFFER8    CGraphicBase::ms_alpd3dPDTVB[PDT_VERTEXBUFFER_NUM];
#endif

-----------------------------------------------------------------------------------------

#ifdef ENABLE_FIX_MOBS_LAG
bool CGraphicBase::SetPDTStream(SPDTVertexRaw* pSrcVertices, UINT uVtxCount)
{
    if (!uVtxCount)
    {
        return false;
    }

    assert(uVtxCount <= LARGE_PDT_VERTEX_BUFFER_SIZE);

    if (!uVtxCount)
        return false;

    IDirect3DVertexBuffer8* vb = nullptr;

    if (uVtxCount <= SMALL_PDT_VERTEX_BUFFER_SIZE)
        vb = GetSmallPdtVertexBuffer();
    else
        vb = GetLargePdtVertexBuffer();

    const auto bytes = sizeof(TPDTVertex) * uVtxCount;
  
    TPDTVertex* dst;
    if (FAILED(vb->Lock(0, bytes, DXLOCKTYPE&dst, D3DLOCK_DISCARD)))
    {
        STATEMANAGER.SetStreamSource(0, NULL, 0);
        return false;
    }

    std::memcpy(dst, pSrcVertices, bytes);
    vb->Unlock();
    STATEMANAGER.SetStreamSource(0, vb, sizeof(TPDTVertex));

    return true;
}
#else
bool CGraphicBase::SetPDTStream(SPDTVertexRaw* pSrcVertices, UINT uVtxCount)
{
    if (!uVtxCount)
        return false;

    static DWORD s_dwVBPos=0;

    if (s_dwVBPos>=PDT_VERTEXBUFFER_NUM)
        s_dwVBPos=0;

    IDirect3DVertexBuffer8* plpd3dFillRectVB=ms_alpd3dPDTVB[s_dwVBPos];
    ++s_dwVBPos;

    assert(PDT_VERTEX_NUM>=uVtxCount);
    if (uVtxCount >= PDT_VERTEX_NUM)
        return false;

    TPDTVertex* pDstVertices;
    if (FAILED(
        plpd3dFillRectVB->Lock(0, sizeof(TPDTVertex)*uVtxCount, (BYTE**)&pDstVertices, D3DLOCK_DISCARD)
    ))
    {
        STATEMANAGER.SetStreamSource(0, NULL, 0);
        return false;
    }


    memcpy(pDstVertices, pSrcVertices, sizeof(TPDTVertex)*uVtxCount);

    plpd3dFillRectVB->Unlock();

    STATEMANAGER.SetStreamSource(0, plpd3dFillRectVB, sizeof(TPDTVertex));

    return true;
}
#endif


Benim Mob Log Fix DirectX9 Version adlı dosyaların içinde bulunan ClientSource/EterLib/GrpBase.cpp:
Genişlet Daralt Kopyala
//Mob Log Fix
#ifdef ENABLE_FIX_MOBS_LAG
IDirect3DVertexBuffer9* CGraphicBase::m_smallPdtVertexBuffer;
IDirect3DVertexBuffer9* * CGraphicBase::m_largePdtVertexBuffer;
#else
LPDIRECT3DVERTEXBUFFER9 CGraphicBase::ms_alpd3dPDTVB[PDT_VERTEXBUFFER_NUM];
#endif
//Mob Log Fix END

---------------------------------------------------------------------------

//Mob Log Fix
#ifdef ENABLE_FIX_MOBS_LAG
bool CGraphicBase::SetPDTStream(SPDTVertexRaw* pSrcVertices, UINT uVtxCount)
{
    if (!uVtxCount)
    {
        return false;
    }

    assert(uVtxCount <= LARGE_PDT_VERTEX_BUFFER_SIZE);

    if (!uVtxCount)
        return false;

    IDirect3DVertexBuffer9* vb = nullptr;

    if (uVtxCount <= SMALL_PDT_VERTEX_BUFFER_SIZE)
        vb = GetSmallPdtVertexBuffer();
    else
        vb = GetLargePdtVertexBuffer();

    const auto bytes = sizeof(TPDTVertex) * uVtxCount;

    TPDTVertex* dst;
    if (FAILED(vb->Lock(0, bytes, (void**)&dst, D3DLOCK_DISCARD)))
    {
        STATEMANAGER.SetStreamSource(0, NULL, 0);
        return false;
    }

    std::memcpy(dst, pSrcVertices, bytes);
    vb->Unlock();
    STATEMANAGER.SetStreamSource(0, vb, sizeof(TPDTVertex));

    return true;
}
#else
bool CGraphicBase::SetPDTStream(SPDTVertexRaw* pSrcVertices, UINT uVtxCount)
{
    if (!uVtxCount)
        return false;

    static DWORD s_dwVBPos = 0;

    if (s_dwVBPos >= PDT_VERTEXBUFFER_NUM)
        s_dwVBPos = 0;

    IDirect3DVertexBuffer9* plpd3dFillRectVB = ms_alpd3dPDTVB[s_dwVBPos];
    ++s_dwVBPos;

    assert(PDT_VERTEX_NUM >= uVtxCount);
    if (uVtxCount >= PDT_VERTEX_NUM)
        return false;

    TPDTVertex* pDstVertices;
    if (FAILED(
        plpd3dFillRectVB->Lock(0, sizeof(TPDTVertex) * uVtxCount, (BYTE**)&pDstVertices, D3DLOCK_DISCARD)
    ))
    {
        STATEMANAGER.SetStreamSource(0, NULL, 0);
        return false;
    }

    memcpy(pDstVertices, pSrcVertices, sizeof(TPDTVertex) * uVtxCount);

    plpd3dFillRectVB->Unlock();

    STATEMANAGER.SetStreamSource(0, plpd3dFillRectVB, sizeof(TPDTVertex));

    return true;
}
#endif
//Mob Log Fix END

Kodları karşılaştırdığında arada ki basit ama önemli farkları anlayabilirsin dostum.

Profesyonel dilde anlatacak olursam DirectX9 içerisinde bu kodu "IDirect3DVertexBuffer8" tanımayacak paketin olmadığını belirtecektir.
Ayrıca IDirect3DVertexBuffer9 bu kodlarda ki Lock fonksiyonu bir Void** türü beklerken BYTE** türü dönüşümünü genel olarak bir yapı görür ve algılamaz sonuç hatalar olur.

Umarım bu şekilde hem aklınızdaki sorulara cevap bulmuş hem ön yargılarınızı yıkmış hem de foruma daha katkılı olmuşumdur.

Lütfen sizlerde beni yanlış anlamayın sadece açıklayıcı cevaplar kullanmak istedim. Emekeleriniz için ayrıca teşekkür ederim 🙏☺️
 
Son düzenleme:
Geri
Üst