Ir para conteúdo
  • 0

using PlayerList c++


nociam

Pergunta

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);
	}

 

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);
	}

 

Resolvido pode fechar.

	bool achou = false;
	auto it = blockRespawList.begin(), end = blockRespawList.end();
	while (it != end) {
		Creature* creature = *it;
		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);
		}
		++it;
	}

 

Editado por nociam
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

×
×
  • Criar Novo...