Minimapte boss önizlemesi gösterme;

Forgiven

burakhangunduz
Geliştirici
Yardımsever Üye
Usta Üye
Editör
Mesaj
572
Çözümler
42
Beğeni
589
Puan
939
Ticaret Puanı
0
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++:
#define BOSS_MARK_SYSTEM // Minimapte boss gösterme

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

C++:
BOOL CInstanceBase::IsStone()
{
    return m_GraphicThingInstance.IsStone();
}

Altına eklenir;

C++:
#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++:
            NAMECOLOR_WAYPOINT,

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
            NAMECOLOR_BOSS,
#endif

Tekrar aratılır;

C++:
        BOOL                    IsStone();

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
        BOOL                    IsBoss();
#endif

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

C++:
    else if (IsEnemy())
    {
        return NAMECOLOR_MOB;
    }

Bu şekilde değiştirilir;

C++:
    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++:
    PyModule_AddIntConstant(poModule, "NAMECOLOR_WAYPOINT", CInstanceBase::NAMECOLOR_WAYPOINT);

Altına eklenir;

C++:
#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++:
    m_NPCPositionVector.clear();

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
    m_BossPositionVector.clear();
#endif

Aratılır;

C++:
        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++:
#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++:
    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++:
#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++:
    const std::string strWhiteMark = strImageRoot + "minimap/whitemark.sub";

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
    const std::string strBossMark = strImageRoot + "bossmark.tga";
#endif

Aratılır;

C++:
    m_WhiteMark.SetImagePointer(pSubImage);

Altına eklenir;

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

Aratılır;

C++:
    m_PlayerMark.Destroy();

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
    m_BossMark.Destroy();
#endif

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

C++:
        CGraphicImageInstance            m_WhiteMark;

Altına eklenir;

C++:
#ifdef BOSS_MARK_SYSTEM
        CGraphicExpandedImageInstance    m_BossMark;
#endif

Aratılır;
C++:
        TInstanceMarkPositionVector        m_NPCPositionVector;

Altına eklenir;

C++:
#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:
CHR_NAME_RGB_EMPIRE_PC_C = (23, 30, 138)

Altına eklenir.

Python:
CHR_NAME_RGB_BOSS = (255, 255, 255)

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

Python:
            chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT,

Altına eklenir;

Python:
            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.PNG
 

Dosya Eklentileri

  • bossmark.rar
    941 byte · Gösterim: 6
Anlatım çok güzel olmuş ellerine sağlık minimap altındaki online pazar ve oyuncu olayını paylaşman mümkünmü 😇
 
Geri
Üst