- 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 10 Ay 26 Gün
- Başarım Puanı
- 327
- MmoLira
- 9,296
- DevLira
- 45
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!
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ü:
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.
- Katılım
- 20 Eki 2017
- Konular
- 468
- Mesajlar
- 9,380
- Çözüm
- 271
- Online süresi
- 11mo 27d
- Reaksiyon Skoru
- 8,233
- Altın Konu
- 47
- TM Yaşı
- 8 Yıl 7 Ay 21 Gün
- Başarım Puanı
- 326
- Yaş
- 25
- MmoLira
- 97,141
- DevLira
- 242
akıyo maşallah
teşekkürler
teşekkürler- 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
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:
- 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 10 Ay 26 Gün
- Başarım Puanı
- 327
- MmoLira
- 9,296
- DevLira
- 45
akıyo maşallahteşekkürler
Rica ederimPaylaşım için teşekkürler. Her giren oyuncu için bu koordinatları serverden alıyordu. Bu tarz sabit değerleri yerel dosyalardan alması daha iyi olur.










