Metin2 Hungarian Forum

Metin2 => Privát szerverek => Szerver készítés => A témát indította: Chookez Dátum 2018-02-15, 08:21:43

Cím: [MINIMAP(C++)]Metinkő/Boss
Írta: Chookez Dátum 2018-02-15, 08:21:43
Ü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,

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2FjdnlT%2F44e6c42494.png&hash=000232e85e2a354d21efe8f3b2e5b4c331ae44c4)

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);

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2Fjdno0%2F0a47377989.png&hash=5b2fbf283ee5c09c6bcf7ec01d180d6fbca13da5)

Nyisd meg: InstanceBaseEffect.cpp

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


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


(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2FjdnpO%2F1076e830b1.png&hash=24921f5f920604ec00cddc4d4c67367541bc76f0)

Nyisd meg: PythonMiniMap.cpp

Keres:
    m_NPCPositionVector.clear();

Add alá ezt:
    m_MetinPositionVector.clear();

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2FjdnrQ%2Fd08919d084.png&hash=1556e5887253eb046d53fedc2ea5cd35cf3f7e00)

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);
        }


(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2FjdnuM%2Ff39fa095e2.png&hash=c81d2fe55ac4c0aef4c1a755a1b0bd1220a221c7)

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;
    }


(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2Fjdnwd%2F44a7fa46f8.png&hash=0c71a5ea238f2129c052ba8d86ccd33094cda590)

Nyisd meg: PythonMiniMap.h

Keres:
TInstanceMarkPositionVector m_NPCPositionVector;

Add alá ezt:
TInstanceMarkPositionVector m_MetinPositionVector;

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2Fjexye%2Ff1d38ff30e.png&hash=317e728bc3a2221befd53ff117ecf441247d82e2)

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)

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2Fjdnz3%2F84f60e93ba.png&hash=882c73f0b9a908e24af6dc40835caecfb2600697)

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,

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fpuu.sh%2FjdnB9%2Fe200633f41.png&hash=4f1d2ee2ce96f0535127eb7203378deda02f284c)

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

(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FUFIGpU6.png&hash=e85e515a2597687dd09ec93a319dc7f0873f81d7)

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ó.
EhPortal 1.39 © 2025, WebDev