- Katılım
- 30 Kas 2012
- Konular
- 37
- Mesajlar
- 682
- Online süresi
- 4d 21h
- Reaksiyon Skoru
- 37
- Altın Konu
- 0
- TM Yaşı
- 13 Yıl 6 Ay 10 Gün
- Başarım Puanı
- 103
- MmoLira
- 215
- DevLira
- 9
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Yamulmuyorsam pack editleyen bir oyuncu npcleri ip gibi dizebilir.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.
- Katılım
- 22 Haz 2018
- Konular
- 4
- Mesajlar
- 130
- Çözüm
- 1
- Online süresi
- 3d 21h
- Reaksiyon Skoru
- 57
- Altın Konu
- 0
- TM Yaşı
- 7 Yıl 11 Ay 20 Gün
- Başarım Puanı
- 89
- MmoLira
- 244
- DevLira
- 3
eline sağlık.
- Katılım
- 29 Eyl 2009
- Konular
- 1,298
- Mesajlar
- 18,700
- Çözüm
- 203
- Online süresi
- 7mo 18h
- Reaksiyon Skoru
- 9,275
- Altın Konu
- 377
- Başarım Puanı
- 426
- Yaş
- 32
- MmoLira
- 51,333
- DevLira
- 74
Oyun içi dizilimini değil haritadaki dizilimini değiştiriyor. Bu düzenleme yapmadan da o şekilde dizebilir hem. Şuanda M harfine basınca gözüken portallar oradan geliyor.Yamulmuyorsam pack editleyen bir oyuncu npcleri ip gibi dizebilir.











