Minimapte boss önizlemesi gösterme;

Forgiven

Discord; burakhangunduz
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
754
Çözümler
60
Beğeni
815
Puan
950
Ticaret Puanı
4
Selamın aleyküm başka bi forumda paylaşımı yapılmış lakin bazı eksik yerleri ve anlatımda sıkıntısı vardı.

Düzelttim sizlere sunuyorum başlıyalım.

Kanıt;
Adsz.png


Locale_inc.h açılır ve eklenir.

C++:
Genişlet Daralt Kopyala
#define BOSS_MARK_SYSTEM // Minimapte boss gösterme

InstanceBase.cpp açılır ve şu satır bulunur.

C++:
Genişlet Daralt Kopyala
BOOL CInstanceBase::IsStone()
{
    return m_GraphicThingInstance.IsStone();
}

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
BOOL CInstanceBase::IsBoss()
{
    if (GetRace() == 691)
        return TRUE;
    if (GetRace() == 692)
        return TRUE;
    if (GetRace() == 693)
        return TRUE;
    if (GetRace() == 791)
        return TRUE;
    if (GetRace() == 991)
        return TRUE;
    if (GetRace() == 992)
        return TRUE;
    if (GetRace() == 993)
        return TRUE;
    if (GetRace() == 1091)
        return TRUE;
    if (GetRace() == 1092)
        return TRUE;
    if (GetRace() == 1093)
        return TRUE;
    if (GetRace() == 1094)
        return TRUE;
    if (GetRace() == 1095)
        return TRUE;
    if (GetRace() == 2191)
        return TRUE;
    if (GetRace() == 1191)
        return TRUE;
    if (GetRace() == 1192)
        return TRUE;
    if (GetRace() == 1304)
        return TRUE;
    if (GetRace() == 1306)
        return TRUE;
    if (GetRace() == 1307)
        return TRUE;
    if (GetRace() == 1901)
        return TRUE;
    if (GetRace() == 1902)
        return TRUE;
    if (GetRace() == 1903)
        return TRUE;
    if (GetRace() == 2206)
        return TRUE;
    if (GetRace() == 2207)
        return TRUE;
    if (GetRace() == 2291)
        return TRUE;
    if (GetRace() == 2306)
        return TRUE;
    if (GetRace() == 2307)
        return TRUE;
    if (GetRace() == 2492)
        return TRUE;
    if (GetRace() == 2493)
        return TRUE;
    if (GetRace() == 2494)
        return TRUE;
    if (GetRace() == 2598)
        return TRUE;
    if (GetRace() == 3090)
        return TRUE;
    if (GetRace() == 3091)
        return TRUE;
    if (GetRace() == 3190)
        return TRUE;
    if (GetRace() == 3191)
        return TRUE;
    if (GetRace() == 3290)
        return TRUE;
    if (GetRace() == 3291)
        return TRUE;
    if (GetRace() == 3390)
        return TRUE;
    if (GetRace() == 3391)
        return TRUE;
    if (GetRace() == 3490)
        return TRUE;
    if (GetRace() == 3491)
        return TRUE;
    if (GetRace() == 3590)
        return TRUE;
    if (GetRace() == 3591)
        return TRUE;
    if (GetRace() == 3690)
        return TRUE;
    if (GetRace() == 3691)
        return TRUE;
    if (GetRace() == 3790)
        return TRUE;
    if (GetRace() == 3791)
        return TRUE;
    if (GetRace() == 3890)
        return TRUE;
    if (GetRace() == 3891)
        return TRUE;
    if (GetRace() == 5001)
        return TRUE;
    if (GetRace() == 5004)
        return TRUE;
    if (GetRace() == 5002)
        return TRUE;
    if (GetRace() == 5161)
        return TRUE;
    if (GetRace() == 5162)
        return TRUE;
    if (GetRace() == 5163)
        return TRUE;
    if (GetRace() == 6091)
        return TRUE;
    if (GetRace() == 6191)
        return TRUE;

    return FALSE;
}
#endif

InstanceBase.h açılır ve şu satır aratılır.

C++:
Genişlet Daralt Kopyala
            NAMECOLOR_WAYPOINT,

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
            NAMECOLOR_BOSS,
#endif

Tekrar aratılır;

C++:
Genişlet Daralt Kopyala
        BOOL                    IsStone();

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
        BOOL                    IsBoss();
#endif

InstanceBaseEffect.cpp açılır ve şu satır aratılır.

C++:
Genişlet Daralt Kopyala
    else if (IsEnemy())
    {
        return NAMECOLOR_MOB;
    }

Bu şekilde değiştirilir;

C++:
Genişlet Daralt Kopyala
    else if (IsEnemy())
    {
#ifdef BOSS_MARK_SYSTEM
        if (IsBoss())
            return NAMECOLOR_BOSS;
#endif

        return NAMECOLOR_MOB;
    }


PythonCharacterManagerModule.cpp açılır ve şu satır aratılır.

C++:
Genişlet Daralt Kopyala
    PyModule_AddIntConstant(poModule, "NAMECOLOR_WAYPOINT", CInstanceBase::NAMECOLOR_WAYPOINT);

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
    PyModule_AddIntConstant(poModule, "NAMECOLOR_BOSS", CInstanceBase::NAMECOLOR_BOSS);
#endif

PythonMiniMap.cpp açılır ve şu satır aratılır.

C++:
Genişlet Daralt Kopyala
    m_NPCPositionVector.clear();

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
    m_BossPositionVector.clear();
#endif

Aratılır;

C++:
Genişlet Daralt Kopyala
        if (pkInstEach->IsPC() && !pkInstEach->IsInvisibility())
        {
            if (pkInstEach == CPythonCharacterManager::Instance().GetMainInstancePtr())
                continue;

            aMarkPosition.m_fX = ( m_fWidth - (float)m_WhiteMark.GetWidth() ) / 2.0f + fDistanceFromCenterX + m_fScreenX;
            aMarkPosition.m_fY = ( m_fHeight - (float)m_WhiteMark.GetHeight() ) / 2.0f + fDistanceFromCenterY + m_fScreenY;
            aMarkPosition.m_eNameColor=pkInstEach->GetNameColorIndex();
            if (aMarkPosition.m_eNameColor==CInstanceBase::NAMECOLOR_PARTY)
                m_PartyPCPositionVector.push_back(aMarkPosition);
            else
                m_OtherPCPositionVector.push_back(aMarkPosition);
        }
Kod bloğunun altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
        else if (pkInstEach->IsBoss())
        {
            aMarkPosition.m_fX = (m_fWidth - (float)m_BossMark.GetWidth()) / 2.0f + fDistanceFromCenterX + m_fScreenX;
            aMarkPosition.m_fY = (m_fHeight - (float)m_BossMark.GetHeight()) / 2.0f + fDistanceFromCenterY + m_fScreenY;

            m_BossPositionVector.push_back(aMarkPosition);
        }
#endif

Aratılır;

C++:
Genişlet Daralt Kopyala
    if (m_fScale >= 2.0f)
    {
        // Monster
        STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_MOB));//m_MarkTypeToColorMap[TYPE_MONSTER]);
        aIterator = m_MonsterPositionVector.begin();
        while (aIterator != m_MonsterPositionVector.end())
        {
            TMarkPosition & rPosition = *aIterator;
            m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
            m_WhiteMark.Render();
            ++aIterator;
        }

Kod bloğunun altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
        STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_BOSS));
        aIterator = m_BossPositionVector.begin();
        while (aIterator != m_BossPositionVector.end())
        {
            TMarkPosition & rPosition = *aIterator;
            m_BossMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
            m_BossMark.Render();
            ++aIterator;
        }
#endif

Aratılır;

C++:
Genişlet Daralt Kopyala
    const std::string strWhiteMark = strImageRoot + "minimap/whitemark.sub";

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
    const std::string strBossMark = strImageRoot + "bossmark.tga";
#endif

Aratılır;

C++:
Genişlet Daralt Kopyala
    m_WhiteMark.SetImagePointer(pSubImage);

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
    pSubImage = (CGraphicSubImage *)CResourceManager::Instance().GetResourcePointer(strBossMark.c_str());
    m_BossMark.SetImagePointer(pSubImage);
#endif

Aratılır;

C++:
Genişlet Daralt Kopyala
    m_PlayerMark.Destroy();

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
    m_BossMark.Destroy();
#endif

PythonMiniMap.h açılır ve şu satır aratılır.

C++:
Genişlet Daralt Kopyala
        CGraphicImageInstance            m_WhiteMark;

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
        CGraphicExpandedImageInstance    m_BossMark;
#endif

Aratılır;
C++:
Genişlet Daralt Kopyala
        TInstanceMarkPositionVector        m_NPCPositionVector;

Altına eklenir;

C++:
Genişlet Daralt Kopyala
#ifdef BOSS_MARK_SYSTEM
        TInstanceMarkPositionVector        m_BossPositionVector;
#endif

SRC ile işimiz bitti.
Gelelim phyton kısmına..

Root içerisindeki colorinfo.py açılır ve aratılır.

Python:
Genişlet Daralt Kopyala
CHR_NAME_RGB_EMPIRE_PC_C = (23, 30, 138)

Altına eklenir.

Python:
Genişlet Daralt Kopyala
CHR_NAME_RGB_BOSS = (255, 255, 255)

Ardından introloading.py açılır ve aratılır.

Python:
Genişlet Daralt Kopyala
            chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT,

Altına eklenir;

Python:
Genişlet Daralt Kopyala
            chrmgr.NAMECOLOR_BOSS : colorInfo.CHR_NAME_RGB_BOSS,


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

içindeki dosyayı etc packini açın ymirwork/ui kısmına atın packi kapatın.

şimdiden hayırlı olsun :)
 
Adamın hası gene paylaşım yapmış :)
Paylaşım için teşekkürler
:bigdance2:
 
Ellerine sağlık kardeşim paylaşım için teşekkürler.
 
Tek tek race tanıtmak yerine mob rank çeksen daha kolay olmaz mıydı
 
Demek istediğim

return GetMobRank() >= MOB_RANK_BOSS;
 
Bossmark dosyası eksik eklyebilir misiniz? Ya da tga'nın hangi boyutlarda olması gerekiyor?
 
bossmark tga'nın linki kırılmış, @SemihSEL tarafından test edilmiş olup eksik tga nın konuya eklemebilmesi için aşağıda sunulmuştur. Sistem hayla aktif ve çalışır durumdadır.
Kanıt;
test.webp
 

Dosya Eklentileri

Anlatım çok güzel olmuş ellerine sağlık minimap altındaki online pazar ve oyuncu olayını paylaşman mümkünmü 😇
 
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