Estou com um problema de loop na minha lista e realmente não sei qual erro estou cometendo.
Faço o loop na lista se não tiver esse player na área ele exclui porem quanto tenho 2 player na área um deles sai dessa área o sistema entra em loop nesse trecho do código.
bool achou = false;
for (Creature* creature : this->blockRespawList) {
SpectatorHashSet listAux;
g_game.map.getSpectators(listAux, this->position, false, true);
for (Creature* creatureAux : listAux) {
if (creatureAux == creature) {
achou = true;
}
}
if (!achou) {
this->removeBlockRespawList(creature);
this->setBlockRespaw(RESPAWN_NONE);
}
}
removeBlockRespawList
auto it = std::find(blockRespawList.begin(), blockRespawList.end(), creature);
if (it != blockRespawList.end()) {
creature->decrementReferenceCounter();
blockRespawList.erase(it);
}
32 minutos atrás, nociam disse:
Boa noite.
Estou com um problema de loop na minha lista e realmente não sei qual erro estou cometendo.
Faço o loop na lista se não tiver esse player na área ele exclui porem quanto tenho 2 player na área um na lista e o outro não o sistema entra em loop nesse trecho do código.
bool achou = false;
for (Creature* creature : this->blockRespawList) {
SpectatorHashSet listAux;
g_game.map.getSpectators(listAux, this->position, false, true);
for (Creature* creatureAux : listAux) {
if (creatureAux == creature) {
achou = true;
}
}
if (!achou) {
this->removeBlockRespawList(creature);
this->setBlockRespaw(RESPAWN_NONE);
}
}
removeBlockRespawList
auto it = std::find(blockRespawList.begin(), blockRespawList.end(), creature);
if (it != blockRespawList.end()) {
creature->decrementReferenceCounter();
blockRespawList.erase(it);
}
info
Grupo: Conde
Registrado: 04/02/13
Posts: 541
Reputação: +90
Gênero: Masculino
Boa noite.
Estou com um problema de loop na minha lista e realmente não sei qual erro estou cometendo.
Faço o loop na lista se não tiver esse player na área ele exclui porem quanto tenho 2 player na área um deles sai dessa área o sistema entra em loop nesse trecho do código.
bool achou = false; for (Creature* creature : this->blockRespawList) { SpectatorHashSet listAux; g_game.map.getSpectators(listAux, this->position, false, true); for (Creature* creatureAux : listAux) { if (creatureAux == creature) { achou = true; } } if (!achou) { this->removeBlockRespawList(creature); this->setBlockRespaw(RESPAWN_NONE); } }removeBlockRespawList
auto it = std::find(blockRespawList.begin(), blockRespawList.end(), creature); if (it != blockRespawList.end()) { creature->decrementReferenceCounter(); blockRespawList.erase(it); }Resolvido pode fechar.
Editado Agosto 4 por nociam