Psych0SoociaL 1
Psych0SoociaL
onur akbaş 1
onur akbaş
noisiv 1
noisiv
xranzei 1
xranzei
Bvural41 1
Bvural41
D 1
delimuratt
ShadowFon 1
ShadowFon
shrpnl 1
shrpnl
DEVLOPER 1
DEVLOPER
Manwe Work 1
Manwe Work
Agora Metin2 1
Agora Metin2
Karan2offical 1
Karan2offical
Hikaye Ekle
Kaynak ikonu

Altın Konu GameForge Atlas Güncellemesi 1

indirmek için izniniz yok

CаstieL

Level 8
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye
Fahri Üye
TM Üye
Katılım
17 Tem 2018
Konular
533
Mesajlar
3,963
Çözüm
34
Online süresi
11mo 8d
Reaksiyon Skoru
1,769
Altın Konu
50
TM Yaşı
7 Yıl 11 Ay 6 Gün
Başarım Puanı
327
MmoLira
9,341
DevLira
45
Ticaret - 0%
0   0   0

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

webzen CPythonMiniMap :: __ LoadAtlasMarkInfo fonksiyonunu değiştirdi. HEADER_GC_WARP paketini kaldırdı official sunucılarda artık NPC konumlarını vs serverden değil clientten çekiyor.

Eskiden konum bilgisi bu şekilde gözükürdü:
Kod:
#TokenIndex Türü PosX PosY ToolTipText
0 WARP 140900 13900 "ąÚ¶óÇö"

Yeni olan işe bu şekilde:
Kod:
#TokenIndex PosX PosY NPCVnum
0 44100 3300 20081

Değiştirilmiş kod bloğu bu şekildedir.
C++:
void CPythonMiniMap::__LoadAtlasMarkInfo()
{
    ClearAtlasMarkInfo();
    ClearGuildArea();

    CPythonBackground& rkBG=CPythonBackground::Instance();
    if (!rkBG.IsMapOutdoor())
        return;

    CMapOutdoor& rkMap=rkBG.GetMapOutdoorRef();

    // LOCALE
    char szAtlasMarkInfoFileName[64+1];
    _snprintf(szAtlasMarkInfoFileName, sizeof(szAtlasMarkInfoFileName), "%s/map/%s_point.txt", LocaleService_GetLocalePath(), rkMap.GetName().c_str());
    // END_OF_LOCALE

    CTokenVectorMap stTokenVectorMap;
    if (!LoadMultipleTextData(szAtlasMarkInfoFileName, stTokenVectorMap))
    {
        Tracef(" CPythonMiniMap::__LoadAtlasMarkInfo File Load %s ERROR\n", szAtlasMarkInfoFileName);
        return;
    }

#ifndef ENABLE_GF_ATLAS_MARK_INFO
    const std::string strType[TYPE_COUNT] = { "OPC", "OPCPVP", "OPCPVPSELF", "NPC", "MONSTER", "WARP", "WAYPOINT" };
#endif

    for (DWORD i = 0; i < stTokenVectorMap.size(); ++i)
    {
        char szMarkInfoName[32+1];
        _snprintf(szMarkInfoName, sizeof(szMarkInfoName), "%lu", i);

        if (stTokenVectorMap.end() == stTokenVectorMap.find(szMarkInfoName))
            continue;

        const CTokenVector & rVector = stTokenVectorMap[szMarkInfoName];

#ifdef ENABLE_GF_ATLAS_MARK_INFO
        const std::string& c_rstrPositionX = rVector[0].c_str();
        const std::string& c_rstrPositionY = rVector[1].c_str();
        const std::string& c_rstrVnum = rVector[2].c_str();
        const DWORD c_dwVnum = atoi(c_rstrVnum.c_str());

        const CPythonNonPlayer::TMobTable* c_pMobTable = CPythonNonPlayer::Instance().GetTable(c_dwVnum);
        if (c_pMobTable)
        {
            TAtlasMarkInfo aAtlasMarkInfo;
            aAtlasMarkInfo.m_fX = atof(c_rstrPositionX.c_str());
            aAtlasMarkInfo.m_fY = atof(c_rstrPositionY.c_str());
            aAtlasMarkInfo.m_strText = c_pMobTable->szLocaleName;
            if (c_pMobTable->bType == CActorInstance::TYPE_NPC)
                aAtlasMarkInfo.m_byType = TYPE_NPC;
            else if (c_pMobTable->bType == CActorInstance::TYPE_WARP)
            {
                aAtlasMarkInfo.m_byType = TYPE_WARP;
                int iPos = aAtlasMarkInfo.m_strText.find(" ");
                if (iPos >= 0)
                    aAtlasMarkInfo.m_strText[iPos] = 0;

            }
            else if (c_pMobTable->bType == CActorInstance::TYPE_STONE && c_dwVnum >= 20702 && c_dwVnum <= 20706)
                aAtlasMarkInfo.m_byType = TYPE_NPC;

            aAtlasMarkInfo.m_fScreenX = aAtlasMarkInfo.m_fX / m_fAtlasMaxX * m_fAtlasImageSizeX - (float)m_WhiteMark.GetWidth() / 2.0f;
            aAtlasMarkInfo.m_fScreenY = aAtlasMarkInfo.m_fY / m_fAtlasMaxY * m_fAtlasImageSizeY - (float)m_WhiteMark.GetHeight() / 2.0f;

            switch (aAtlasMarkInfo.m_byType)
            {
            case TYPE_NPC:
                m_AtlasNPCInfoVector.push_back(aAtlasMarkInfo);
                break;
            case TYPE_WARP:
                m_AtlasWarpInfoVector.push_back(aAtlasMarkInfo);
                break;
            }
        }
#else
        const std::string & c_rstrType = rVector[0].c_str();
        const std::string & c_rstrPositionX = rVector[1].c_str();
        const std::string & c_rstrPositionY = rVector[2].c_str();
        const std::string & c_rstrText = rVector[3].c_str();

        TAtlasMarkInfo aAtlasMarkInfo;
        //memset(&aAtlasMarkInfo, 0, sizeof(aAtlasMarkInfo));

        for ( int i = 0; i < TYPE_COUNT; ++i)
        {
            if (0 == c_rstrType.compare(strType[i]))
                aAtlasMarkInfo.m_byType = (BYTE)i;
        }
        aAtlasMarkInfo.m_fX = atof(c_rstrPositionX.c_str());
        aAtlasMarkInfo.m_fY = atof(c_rstrPositionY.c_str());
        aAtlasMarkInfo.m_strText = c_rstrText;

        aAtlasMarkInfo.m_fScreenX = aAtlasMarkInfo.m_fX / m_fAtlasMaxX * m_fAtlasImageSizeX - (float)m_WhiteMark.GetWidth() / 2.0f;
        aAtlasMarkInfo.m_fScreenY = aAtlasMarkInfo.m_fY / m_fAtlasMaxY * m_fAtlasImageSizeY - (float)m_WhiteMark.GetHeight() / 2.0f;

        switch(aAtlasMarkInfo.m_byType)
        {
            case TYPE_NPC:
                m_AtlasNPCInfoVector.push_back(aAtlasMarkInfo);
                break;
            case TYPE_WARP:
                m_AtlasWarpInfoVector.push_back(aAtlasMarkInfo);
                break;
        }
#endif
    }
}

Serverden paketi kaldırmayı unutmayın.Örnek localede konuya ekliyorum.​
 

Ekli dosyalar

En Çok Reaksiyon Alan Mesajlar

Paylaşım için teşekkürler. Her giren oyuncu için bu koordinatları serverden alıyor diye biliyorum. Bu tarz sabit değerleri yerel dosyalardan alması daha iyi olur. Eski halinde sadece portallar bulunuyordu.
akıyo maşallah :) teşekkürler
 
Paylaşım için teşekkürler. Her giren oyuncu için bu koordinatları serverden alıyor diye biliyorum. Bu tarz sabit değerleri yerel dosyalardan alması daha iyi olur. Eski halinde sadece portallar bulunuyordu.
 
Son düzenleme:
Çok teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst