Ir para conteúdo

[c++] passive system


Posts Recomendados

Boa tarde, 

 

O passive system nada mais é do sistema que ficou famoso no mundo do "poketibia", onde o monstro não ataca a menos que o ataquem. Este código foi criado para tfs 1.x, porém adaptei para o tfs 0.4, segue:

 

luascript.cpp

 

procure por:

setFieldBool(L, "hostile", mType->isHostile);

 

e abaixo adicione: 

setFieldBool(L, "passive", mType->isPassive);

 

monster.h

 

procure por:

bool isHostile() const {return mType->isHostile;}  

e adicione:

bool isPassive() const {return mType->isPassive;} 

 

monster.cpp

 

procure por:

bool MonsterselectTarget(Creature* creature)

e embaixo de: 

	if(!isTarget(creature))		return false;

adicione: 

    if (isPassive() && !hasBeenAttacked(creature->getID())) {		return false;	}		

 

monsters.h

 

troque isso: 

bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

por isto: 

bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isPassive, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

 

monsters.cpp

 

troque isso: 

	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false;

por isto: 

	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = isPassive = false;

 

procure por:

					if(readXMLString(tmpNode, "hostile", strValue))						mType->isHostile = booleanString(strValue);

e adicione: 

					if(readXMLString(tmpNode, "passive", strValue))						mType->isPassive = booleanString(strValue);

 

Pronto, agora é só compilar a source e ser feliz.

Ah, antes que eu esqueça. No xml do monstro desejado tem que adicionar: 

<flag passive="1" />

 

Por último, porém não menos importante. Segue o link do código fonte em tfs 1.x: https://gist.github.com/ranisalt/a238128104b7af3a17f1

Que é do também brasileiro Ranieri Althoff , então créditos para ele.

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

21 minutos atrás, Deadpool disse:

Muito bom, como funciona? (existem alguns no forum, porém, não funciona como todos gostariam, haha).

Muito Bom ^^

 

O monstro com a tag passive=0 vai ficar andando sem atacar ninguem, só vai atacar quando o player ou um sumon do player (pokemon) bater nele. Caso este player que atacou fuja ele não irá atacar os outros players, apenas o player que o atacou.

Link para o comentário
Compartilhar em outros sites

35 minutos atrás, boxxer321 disse:

funciona em 0.3.6?

Tem que adaptar amigo, mas acho que pouca coisa. Visto que é bastante parecido com 0.4, talvez funcione. Teste e poste o resultado.

Link para o comentário
Compartilhar em outros sites

nao existem varias funçoes nas sources do 3.0.6 :/ nemhuma dessas estao la 

if(readXMLString(tmpNode, "hostile", strValue))						mType->isHostile = booleanString(strValue);
	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false;
bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

 

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, Josegvb disse:

nao existem varias funçoes nas sources do 3.0.6 :/ nemhuma dessas estao la 

if(readXMLString(tmpNode, "hostile", strValue))						mType->isHostile = booleanString(strValue);
	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false;
bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

 

Tem facil a base para download?

Link para o comentário
Compartilhar em outros sites

32 minutes ago, Kilowog said:

Tem facil a base para download?

 

sim amigo, se vc nao ouviu ainda ta bem atrassado haha nessa semana veio 1 novo servidor no xtibia q ta movimentando muito a comunidade

é esse la 

 

 

se tiver como adatar vai ajudar mts ^^ somos mts quems estamos querendo ajudar nesse novo servidor 

Link para o comentário
Compartilhar em outros sites

Ah, baixei ele, mas não cheguei a ver a source. É que tou em um projeto e é 0.4 =): Quando Chegar em casa eu olho direitinho e posto se conseguir.

Link para o comentário
Compartilhar em outros sites

37 minutes ago, Kilowog said:

Ah, baixei ele, mas não cheguei a ver a source. É que tou em um projeto e é 0.4 =): Quando Chegar em casa eu olho direitinho e posto se conseguir.

 

obrigado estarei acompanhando os topicos qlqr coisa avisa 

Link para o comentário
Compartilhar em outros sites

Eu não testei, mas olhei o fonte do DarkXPoke e tudo que postei aqui, tem lá. As vezes o buscador do devcpp que é meio bugado, em vez de procurar pelo texto todo, busquem por parte dele. Uma dica procurem pela palavra "hostile".

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

34 minutes ago, Kilowog said:

Eu não testei, mas olhei o fonte do DarkXPoke e tudo que postei aqui, tem lá. As vezes o buscador do devcpp que é meio bugado, em vez de procurar pelo texto todo, busquem por parte dele. Uma dica, sempre buscam a palavra "hostile".

 

 

la tem

		bool isHostile() const {             std::string value;             if(getStorage(504, value) && value == "-1")				 value = "0";                         return value == "0" ? false : true;        }

retirei e coloquei 

        bool isHostile() const {return mType->isHostile;}  

        bool isPassive() const {return mType->isPassive;} 

 

mas o problema começa aqui

 

2 hours ago, Kilowog said:

monsters.h

 

troque isso: 

bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

por isto: 

bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isPassive, isLureable,			isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

 

monsters.cpp

 

troque isso: 

	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = false;

por isto: 

	canPushItems = canPushCreatures = isSummonable = isIllusionable = isConvinceable = isLureable = isWalkable = hideName = hideHealth = isPassive = false;

 

procure por:

					if(readXMLString(tmpNode, "hostile", strValue))						mType->isHostile = booleanString(strValue);

e adicione: 

					if(readXMLString(tmpNode, "passive", strValue))						mType->isPassive = booleanString(strValue);

 

nao existe nemhum desses la pelo menos na versao 2 da source q é a que estou usando

tem 1 tag la q diz

    if((isHostile() || isSummon()) && setAttackedCreature(creature) && !isSummon())

mas nao veio parescido algum com o bool isSummonable, isIllusionable, isConvinceable, isAttackable, isHostile, isLureable,

            isWalkable, canPushItems, canPushCreatures, pushable, hideName, hideHealth;

 

=/

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...