cube.cpp
inlucuieste functia cu asta:
void Cube_request_result_list(LPCHARACTER ch)
{
RETURN_IF_CUBE_IS_NOT_OPENED(ch);
LPCHARACTER npc = ch->GetQuestNPC();
if (NULL == npc)
return;
DWORD npcVNUM = npc->GetRaceNum();
if (!FN_check_valid_npc(npcVNUM)) // @fixme127
{
if (test_server)
dev_log(LOG_DEB0, "cube not valid NPC");
return;
}
size_t resultCount = 0;
std::string& resultText = cube_result_info_map_by_npc[npcVNUM];
if (resultText.length() == 0)
{
resultText.clear();
const TCubeResultList& resultList = cube_info_map[npcVNUM];
for (TCubeResultList::const_iterator iter = resultList.begin(); resultList.end() != iter; ++iter)
{
const SCubeMaterialInfo& materialInfo = *iter;
char temp[128];
sprintf(temp, "%d,%d", materialInfo.reward.vnum, materialInfo.reward.count);
resultText += std::string(temp) + "/";
}
resultCount = resultList.size();
if (resultText.size() != 0) // @fixme127
resultText.erase(resultText.size() - 1);
size_t resultTextSize = resultText.size() < 20 ? 20 - resultText.size() : resultText.size() - 20;
if (resultTextSize >= CHAT_MAX_LEN)
{
sys_err("[CubeInfo] Too long cube result list text. (NPC: %d, length: %d)", npcVNUM, resultText.size());
resultText.clear();
resultCount = 0;
}
}
// (Server -> Client) /cube r_list npcVNUM resultCount vnum1,count1/vnum2,count2,/vnum3,count3/...
// (Server -> Client) /cube r_list 20383 4 123,1/125,1/128,1/130,5
ch->ChatPacket(CHAT_TYPE_COMMAND, "cube r_list %d %d %s", npcVNUM, resultCount, resultText.c_str());
}