DE

AJuda Estrutura correta

Por deglorio, 12 de abr. de 2016 em Programação

pokemon
5
3.8k
deglorioD
12 de abril de 2016 às 17:17

Boa tarde, estou tentando fazer um código para dar look na pokeball quando dar trade e aparecer os atributos.

			int32_t valuee = (1,50);				if(tradeItem->getIntegerAttribute("boost") >= valuee)				ss << ", Boost: [" << tradeItem->getIntegerAttribute("boost", valuee) << "]";

Apareceu alguns erros e não sei como arrumar

no matching function for call to 'Item::getIntegerAttribute(const char [6], int32_t&)' 

candidates are: const int32_t* ItemAttributes::getIntegerAttribute(const std::string&) const 

 

Alguém me ajuda?

Dmy RecaidaD
13 de abril de 2016 às 06:09

Tenta

 

		int32_t valuee = (1,50);				if(tradeItem->getIntegerAttribute("boost") >= valuee) {                stdostringstream ss;				ss << ", Boost: [" << tradeItem->getIntegerAttribute("boost", valuee) << ]";                client->sendTextMessage(TextMessage(MESSAGE_STATUS_WARNING, ss.str()));           }

se não funcionar,
Mande-me o cpp para eu analisar esse "getIntegerAttribute".

dalvorsnD
13 de abril de 2016 às 12:32

Cara, o que tu quer verificar? esse valor seu ta todo errado, como assim (1, 50) ???

 

O erro ta dizendo que não existe função com esse nome e com esses parametros. O correto é:

 

int32_t getIntegerAttribute(const std::string& key, bool &ok) const;

 

Se você quiser apenas verificar se ele tem o atributo tu tem que usar a função bool hasIntegerAttribute(const std::string& key) ou pode fazer direto com a getInteger mas usando o parametro booleano dela
Imagino que queria fazer algo assim:

    bool hasBoost;    int32_t valuee =  tradeItem->getIntegerAttribute("boost", hasBoost);    if(hasBoost && valuee >= 1 && valuee <= 50)        ss << ", Boost: [" << valuee << "]";

 

Editado Abril 13 por dalvorsn

4 meses depois...
Luga03L
01 de agosto de 2016 às 10:18
Em 13/04/2016 at 12:32, dalvorsn disse:

Cara, o que tu quer verificar? esse valor seu ta todo errado, como assim (1, 50) ???

 

O erro ta dizendo que não existe função com esse nome e com esses parametros. O correto é:

 

int32_t getIntegerAttribute(const std::string& key, bool &ok) const;

 

Se você quiser apenas verificar se ele tem o atributo tu tem que usar a função bool hasIntegerAttribute(const std::string& key) ou pode fazer direto com a getInteger mas usando o parametro booleano dela

Imagino que queria fazer algo assim:

    bool hasBoost;    int32_t valuee =  tradeItem->getIntegerAttribute("boost", hasBoost);    if(hasBoost && valuee >= 1 && valuee <= 50)        ss << ", Boost: [" << valuee << "]";

 

Não seria melhor e mais simples, fazer o onLook funcionar ao dar look no item de trade? Isso iria simplificar bastante, já que o código no onLook funciona perfeitamente!

dalvorsnD
01 de agosto de 2016 às 16:55
6 horas atrás, BielLucena1291 disse:

Não seria melhor e mais simples, fazer o onLook funcionar ao dar look no item de trade? Isso iria simplificar bastante, já que o código no onLook funciona perfeitamente!

Não pelo fato de tu ter que reescrever todo o look, é bem mais chato que simplesmente adicionar uma string no look ja existente