Metin2Games Discord sunucusuna katılmak ve anlık destek almak için tıkla!
1

fkgamesofficial

Founder & Gaming Enthusiast
Kayıtlı
22 Gün
Katılım
14 Eki 2026
Konular
45
Mesajlar
46
Tepkime puanı
15
Online süresi
2h 38m
Puan
18
Konum
Türkiye
Ne İşe Yarar?
  • Çökme Önleme: Hatalı veya eksik _point.txt satırları nedeniyle Debug modda client'ın kapanmasını önler.
  • Hata Raporlama: Hatalı dosyayı, satır sayısını ve ilk hatalı satırın içeriğini syserr dosyasına kaydeder.
  • Güvenli Yükleme: Hatalı satırları atlayarak minimap ve atlas yükleme işleminin sorunsuz devam etmesini sağlar.

Kod:
locale\locale\tr\map klasöründeki txt lerde format hatası yaparsanız debug modda client açılmıyor onun için düzeltme

#define WJ_ENABLE_ATLAS_MARK_INFO_SHORT_LINE_FIX

void CPythonMiniMap::__LoadAtlasMarkInfo()
{
    ClearAtlasMarkInfo();
    ClearGuildArea();

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

    CMapOutdoor& rkMap=rkBG.GetMapOutdoorRef();

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

    CTokenVectorMap stTokenVectorMap;

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

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

#ifdef WJ_ENABLE_ATLAS_MARK_INFO_SHORT_LINE_FIX
    DWORD dwSkippedLineCount = 0;
    std::string strFirstSkippedLine;

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

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

        const CTokenVector & rVector = stTokenVectorMap[szMarkInfoName];

#ifdef WJ_ENABLE_ATLAS_MARK_INFO_SHORT_LINE_FIX
        BYTE byLineType = TYPE_COUNT;
        if (rVector.size() >= 4)
        {
            for (int iType = 0; iType < TYPE_COUNT; ++iType)
            {
                if (0 == rVector[0].compare(strType[iType]))
                    byLineType = (BYTE)iType;
            }
        }

        if (TYPE_COUNT == byLineType)
        {
            if (0 == dwSkippedLineCount++)
            {
                strFirstSkippedLine = szMarkInfoName;
                for (DWORD j = 0; j < rVector.size(); ++j)
                    strFirstSkippedLine += " " + rVector[j];
            }
            continue;
        }

#endif
        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;

        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;
        }
    }
#ifdef WJ_ENABLE_ATLAS_MARK_INFO_SHORT_LINE_FIX

    if (dwSkippedLineCount)
        TraceError("CPythonMiniMap::__LoadAtlasMarkInfo %s: %u line(s) not in <num> <type> <x> <y> <name> format, skipped (first: %s)", szAtlasMarkInfoFileName, dwSkippedLineCount, strFirstSkippedLine.c_str());
#endif
}
 
Community platform by XenForo® © 2010-2026 XenForo Ltd.
© 2020-2026 Metin2Games - Tüm Hakları Saklıdır.
Geri
Üst