[MINIMAP(C++)]Metinkő/Boss

Indította Chookez, 2018-02-15, 08:21:43

2018-02-15, 08:21:43 Utolsó szerkesztés: 2019-03-08, 09:57:47 Szerző: Chookez™
Üdv. Ez a kis okosság arra jó, hogy a kis térképen(Minimap) kijelzi a Metinköveket és annak nevét.
A használatához elengedhetetlen a forrás használata. :)

Nyisd meg: InstanceBase.h

Keres:
            NAMECOLOR_WAYPOINT,

Add alá ezt:
            NAMECOLOR_METIN,



Nyisd meg: PythonCharacterManagerModule.cpp

Keres:
    PyModule_AddIntConstant(poModule, "NAMECOLOR_MOB", CInstanceBase::NAMECOLOR_NORMAL_MOB);

Add alá ezt:
    PyModule_AddIntConstant(poModule, "NAMECOLOR_METIN", CInstanceBase::NAMECOLOR_METIN);



Nyisd meg: InstanceBaseEffect.cpp

Keres:
    else if (IsPoly())
    {
        return NAMECOLOR_MOB;
    }


Add alá ezt:
    else if (IsStone())
    {
        return NAMECOLOR_METIN;
    }




Nyisd meg: PythonMiniMap.cpp

Keres:
    m_NPCPositionVector.clear();

Add alá ezt:
    m_MetinPositionVector.clear();



Keres:
        else if (pkInstEach->IsNPC())
        {
            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;

            m_NPCPositionVector.push_back(aMarkPosition);
        }


Add alá ezt:
        else if (pkInstEach->IsStone())
        {
            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;

            m_MetinPositionVector.push_back(aMarkPosition);
        }




Keres:
    // NPC
    STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_NPC));
    aIterator = m_NPCPositionVector.begin();
    while (aIterator != m_NPCPositionVector.end())
    {
        TMarkPosition & rPosition = *aIterator;
        m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
        m_WhiteMark.Render();
        ++aIterator;
    }


Add alá ezt:
    // Metin
    STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_METIN));
    aIterator = m_MetinPositionVector.begin();
    while (aIterator != m_MetinPositionVector.end())
    {
        TMarkPosition & rPosition = *aIterator;
        m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
        m_WhiteMark.Render();
        ++aIterator;
    }




Nyisd meg: PythonMiniMap.h

Keres:
TInstanceMarkPositionVector m_NPCPositionVector;

Add alá ezt:
TInstanceMarkPositionVector m_MetinPositionVector;



A forrás részével meg is vagyunk. Jöhet a kliens rész (Python).

Nyisd meg: root/colorinfo.py

Keres:
CHR_NAME_RGB_WARP = (136, 218, 241)

Add alá ezt: (A későbbiekben, ha szeretnéd itt változtathatod a megjelenő név színét)
CHR_NAME_RGB_METIN = (240, 255, 255)



Nyisd meg: root/introloading.py

Keres:
            chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT,

Add alá ezt:
            chrmgr.NAMECOLOR_METIN : colorInfo.CHR_NAME_RGB_METIN,



Kész is vagyunk. A végeredmény pedig így néz ki:



Figyelem: Ez a leírás más fórumon is megtalálható.

_________________________________________________________________________________________

Kis térképen főszörnyek kijelzése:
Használatához elengedhetetlen a forrás használata!

Nyisd meg: InstanceBase.h

Keres:
NAMECOLOR_WAYPOINT,

Add alá ezt:
NAMECOLOR_BOSS,

Keres:
        BOOL                    IsEnemy();

Add alá ezt:
        BOOL                    IsBoss();

Nyisd meg: InstanceBase.cpp

Keres:
BOOL CInstanceBase::IsFlag()
{
if (GetRace() == 20035)
return TRUE;
if (GetRace() == 20036)
return TRUE;
if (GetRace() == 20037)
return TRUE;

return FALSE;
}


Add alá ezt:
BOOL CInstanceBase::IsBoss()
{
const CPythonNonPlayer::TMobTable *pkTab = CPythonNonPlayer::Instance().GetTable(GetRace());

if (pkTab->bRank >= 4 && !IsStone() && pkTab->bType == 0)
return TRUE;

return FALSE;
}


Itt módosíthatod hogy melyik rangú főszörnyeket jelezze ki a kis térképen.

Nyisd meg: InstanceBaseEffect.cpp

Keres:
else if (IsEnemy())
{
return NAMECOLOR_MOB;
}


Add alá ezt:
else if (IsEnemy())
{
if (IsBoss())
return NAMECOLOR_BOSS;

return NAMECOLOR_MOB;
}


Nyisd meg: PythonCharacterManagerModule.cpp

Keres:
PyModule_AddIntConstant(poModule, "NAMECOLOR_WAYPOINT", CInstanceBase::NAMECOLOR_WAYPOINT);

Add alá ezt:
PyModule_AddIntConstant(poModule, "NAMECOLOR_BOSS", CInstanceBase::NAMECOLOR_BOSS);

Nyisd meg: PythonMiniMap.h

Keres:
TInstanceMarkPositionVector        m_NPCPositionVector;

Add alá ezt:
TInstanceMarkPositionVector        m_BossPositionVector;

Nyisd meg: PythonMiniMap.cpp

Keres:
m_NPCPositionVector.clear();

Add alá ezt:
m_BossPositionVector.clear();

Keres:
// NPC
STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_NPC));
aIterator = m_NPCPositionVector.begin();
while (aIterator != m_NPCPositionVector.end())
{
TMarkPosition & rPosition = *aIterator;
m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
m_WhiteMark.Render();
++aIterator;
}


Add alá ezt:
   // Boss
    STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_BOSS));
    aIterator = m_BossPositionVector.begin();
    while (aIterator != m_BossPositionVector.end())
    {
        TMarkPosition & rPosition = *aIterator;
        m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY);
        m_WhiteMark.Render();
        ++aIterator;
    }


Keres:
else if (pkInstEach->IsEnemy())
{
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;

m_MonsterPositionVector.push_back(aMarkPosition);
}


Add alá ezt:
else if (pkInstEach->IsBoss())
{
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;

m_BossPositionVector.push_back(aMarkPosition);
}


A forrás részével meg is vagyunk. Jöhet a kliens rész (Python).

Nyisd meg: root/colorinfo.py

Keres:
CHAT_RGB_WHISPER = (74, 225, 74)

Add alá ezt:
CHR_NAME_RGB_BOSS = (9, 22, 255)

Nyisd meg: root/introloading.py

Keres:
            chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT,

Add alá ezt:
chrmgr.NAMECOLOR_BOSS : colorInfo.CHR_NAME_RGB_BOSS,

Ha mindent pontosan megcsináltál, tökéletesen működnie kell.

Figyelem: Ez a leírás más fórumon is megtalálható.