C++ 从向量加载所有元素
所以这些代码是游戏的一部分。资源路径的加载存储在向量中,并由指定的mob vnum加载 例如:C++ 从向量加载所有元素,c++,C++,所以这些代码是游戏的一部分。资源路径的加载存储在向量中,并由指定的mob vnum加载 例如: If (vnum === 99) std::string = "Path/path/vnum_99_folder" 这是我的密码 void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes) { if (vnum >= 30000) {
If (vnum === 99)
std::string = "Path/path/vnum_99_folder"
这是我的密码
void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes)
{
if (vnum >= 30000)
{
vec_stPathes.push_back("d:/work/npc2/");
vec_stPathes.push_back("d:/work/npc/");
vec_stPathes.push_back("d:/work/monster/");
vec_stPathes.push_back("d:/work/monster2/");
}
else
{
vec_stPathes.push_back("d:/work/npc/");
vec_stPathes.push_back("d:/work/npc2/");
vec_stPathes.push_back("d:/work/monster/");
vec_stPathes.push_back("d:/work/monster2/");
}
}
void GetRaceResourcePaths(未签名的vnum、std::vector和vec_stpaths)
{
如果(vnum>=30000)
{
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
其他的
{
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
}
上面的代码带有资源路径,存储在向量中。。然后返回大小和加载路径
这里是哪里
CRaceData* CRaceManager::LoadRaceData(DWORD vnum)
{
auto fRaceName = m_kMap_dwRaceKey_stRaceName.find(vnum);
if (m_kMap_dwRaceKey_stRaceName.end() == fRaceName)
{
return NULL;
}
auto &c_rstRaceName = fRaceName->second;
if (c_rstRaceName.empty())
{
return NULL;
}
std::vector <std::string> vec_stFullPathName;
GetRaceResourcePathes(vnum, vec_stFullPathName);
CRaceData* pRaceData = CRaceData::New();
pRaceData->SetRace(vnum);
for (int i = 0; i < vec_stFullPathName.size(); i++)
{
std::string stFullPathName = vec_stFullPathName[i];
{
auto RaceSrcName = m_kMap_stRaceName_stSrcName.find(c_rstRaceName);
if (m_kMap_stRaceName_stSrcName.end() == RaceSrcName)
{
stFullPathName += c_rstRaceName;
}
else
{
stFullPathName += RaceSrcName->second;
}
}
stFullPathName += "/";
std::string stMSMFileName = stFullPathName + c_rstRaceName + ".msm";
if (!pRaceData->LoadRaceData(stMSMFileName.c_str()))
{
if (i != vec_stFullPathName.size() - 1)
{
TraceError("CRaceManager::RegisterRacePath : vnum[%u] LOAD MSMFILE[%s] ERROR. Will Find Another Path.", vnum, stMSMFileName.c_str());
continue;
}
TraceError("CRaceManager::RegisterRacePath : vnum[%u] LOAD MSMFILE[%s] ERROR", vnum, stMSMFileName.c_str());
CRaceData::Delete(pRaceData);
return NULL;
}
std::string stMotionListFileName = stFullPathName;
stMotionListFileName += pRaceData->GetMotionListFileName();
LoadRaceMotionList(*pRaceData, stFullPathName.c_str(), stMotionListFileName.c_str());
return pRaceData;
}
TraceError("CRaceManager::RegisterRacePath : vnum[%u] HAVE NO PATH ERROR", vnum);
CRaceData::Delete(pRaceData);
return NULL;
}
CRaceData*CRaceManager::LoadRaceData(DWORD vnum)
{
自动fRaceName=m_kMap_dwRaceKey_stRaceName.find(vnum);
if(m_kMap_dwRaceKey_stRaceName.end()==fRaceName)
{
返回NULL;
}
自动&CrstraceName=fRaceName->second;
if(c_rstRaceName.empty())
{
返回NULL;
}
std::向量向量向量路径名;
GetRaceResourcePaths(vnum、vec_stFullPathName);
CRaceData*pRaceData=CRaceData::New();
pRaceData->SetRace(vnum);
对于(int i=0;isecond;
}
}
stFullPathName+=“/”;
std::string stMSMFileName=stFullPathName+crstraceName+“.msm”;
如果(!pRaceData->LoadRaceData(stMSMFileName.c_str()))
{
如果(i!=vec\u stFullPathName.size()-1)
{
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]加载MSMFILE[%s]错误。将找到另一个路径。”,vnum,stMSMFileName.c_str());
继续;
}
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]加载MSM文件[%s]错误”,vnum,stMSMFileName.c_str());
CRaceData::删除(pRaceData);
返回NULL;
}
std::string stMotionListFileName=stFullPathName;
stMotionListFileName+=pRaceData->GetMotionListFileName();
LoadRaceMotionList(*pRaceData,stFullPathName.c_str(),stMotionListFileName.c_str());
返回pRaceData;
}
TraceError(“CRaceManager::RegisterRacePath:vnum[%u]没有路径错误”,vnum);
CRaceData::删除(pRaceData);
返回NULL;
}
我想删除那些vnum==检查。。并同时加载所有路径。。不指定vnum
void GetRaceResourcePathes(unsigned vnum, std::vector <std::string> &vec_stPathes)
{
vec_stPathes.push_back("d:/work/npc/");
vec_stPathes.push_back("d:/work/npc2/");
vec_stPathes.push_back("d:/work/monster/");
vec_stPathes.push_back("d:/work/monster2/");
}
void GetRaceResourcePaths(未签名的vnum、std::vector和vec_stpaths)
{
vec stPathes.推回(“d:/work/npc/”;
vec stPathes.推回(“d:/work/npc2/”;
vec stPathes.向后推(“d:/work/monster/”;
vec stPathes.向后推(“d:/work/monster2/”;
}
如果我像上面那样更改GetRaceResourcePaths
,将只加载第一行。。。“work/npc/”其他3个被忽略
怎么了?为什么不加载所有4条路径?您的线路:
return pRaceData;
从for循环内部返回。因此,循环在第一次迭代后不会继续,而LoadRaceData
函数将返回第一次加载的结果。您的行:
return pRaceData;
从for循环内部返回。因此,循环在第一次迭代后不会继续,而
LoadRaceData
函数将返回第一次加载的结果。“出了什么问题?为什么没有加载所有4条路径?”-这个答案解释了问题-至于代码实际要做什么,这是一个不同的问题,如果没有更多关于你的问题的信息,这个问题很难回答。我现在将尝试做4个循环,每个循环都有一个路径“怎么了?为什么不加载所有4个路径?”-这个答案解释了问题-至于代码实际要做什么,这是一个不同的问题,如果没有更多关于你的问题的信息,这个问题很难回答。现在我将尝试做4个循环,每个循环都有一条路径