Ir para conteúdo

Pergunta

Fala Galera do xtibia!

 

estou tentando fazer um metodo para contar as pokeball que o player esta carregar e usar no carry system do server no metodo hasCapaticy da source player.cpp, porem o metodo que eu fiz essa fazendo o servidor crashar ao logar, gostaria de saber oque pode server 

double PlayerpokemonCountIn(const Item* item) const{	double count = 0;          if(item->getPokeball() >= 1)        count += 1;    const Container* container;    if(container = item->getContainer()){        for(ContainerIterator it = container->begin(), end = container->end(); it != end; ++it)      	{             if(it->getPokeball() >= 1){                    count += 1;                }        }    }    return count;}

 metodo getPokeball da source item.cpp

double Item::getPokeball() const{	if(isStackable())		return items[id].pokeball * std::max((int32_t)1, (int32_t)count);	return items[id].pokeball;}

usou tfs 0.4 3777 

 

desde já agradeço a ajuda de todos.

 

obs: o prefixo de topico nao possui 0.4 somente 0.3 ou tfs 1.x

Link para o comentário
https://xtibia.com/forum/topic/240850-metodo-faz-server-crashar/
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

compila com flag de debug "-g" e habilite para gerar coredump, em linux basta o seguinte comando pra ele começar a gerar o dump:

 

# ulimit -c unlimited

 

Dai é só reproduzir o crash, e abrir o core quando gerar, algo assim:
 

# gdb ./tfs core

 

Isso vai dar um detalhamento do crash

Não perca tempo tentando descobrir lendo o code, é mais rapido com o coredump

 

 

Quanto ao código, se é para retornar a quantidade de pokemons, pra que raios usa double?

Bom, não sei como é a implementaçao desse pokeball, mas acredito que esteja tentando fazer algo assim:

double PlayerpokemonCountIn(const Item* item) const{	double count = 0.0f;      	if(item->getPokeball() >= 1.0f)		count += 1.0f;	const Container* container;	if(container = item->getContainer())		for(ContainerIterator it = container->begin(), end = container->end(); it != end; ++it)			if(Item* tmp = (*it)->getItem())				if(tmp->getPokeball() >= 1.0f)					count++;	return count;}

 

Link para o comentário
https://xtibia.com/forum/topic/240850-metodo-faz-server-crashar/#findComment-1693875
Compartilhar em outros sites

×
×
  • Criar Novo...