Ir para conteúdo

Atk/def/arm Increase


Posts Recomendados

ATK/DEF/ARM Increase

 

Explicação: No Tibia 8.0 nós temos algumas armas que aumentam a Def (e.g: You see a XXXX. (Atk: YY Def: ZZ + A)

Fiz semelhante, mas a diferença é que ele pode aumentar o ataque ou mesmo a armor.

 

Esse é meu primeiro código em OTServ, não tive recursos de testar, mas acho que está 100%

 

Vamos ao código

 

Items.cpp

 

Em ItemType::ItemType()

 

Adicione:

 

atkbonus = 0;
armbonus = 0;
defbonus = 0;

 

 

Depois de:

 

							else if(strcasecmp(strValue.c_str(), "attack") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
								it.attack = intValue;
							}
						}
						else if(strcasecmp(strValue.c_str(), "armor") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
								it.armor = intValue;
							}
						}
						else if(strcasecmp(strValue.c_str(), "defense") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
								it.defense= intValue;
							}
						}

 

Adicione:

 

							
							  else if(strcasecmp(strValue.c_str(), "atkincrease") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
									 it.atkbonus = intValue;
							}
						}
							  else if(strcasecmp(strValue.c_str(), "armincrease") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
									 it.armbonus = intValue;
							}
						}
							  else if(strcasecmp(strValue.c_str(), "defincrease") == 0){
							if(readXMLInteger(itemAttributesNode, "value", intValue)){
									 it.defbonus = intValue;
							}
						}

 

Troque:

 

 return baseDefense + (defense * shieldSkill) / 100;

 

Por:

 

	
if(getDefBonus) {
 return getDefBonus() + baseDefense + (defense * shieldSkill) / 100;
 }
else if(getArmBonus) {
  return getArmBonus() + baseDefense + (defense * shieldSkill) / 100;
}
else if(getDefBonus && getArmBonus) {
  return getArmBonus() + getDefBonus() + baseDefense + (defense * shieldSkill) / 100;
}
else {
   return baseDefense + (defense * shieldSkill) / 100;
}

 

 

Items.h

 

Declare esses valores:

 

	int32_t			atkbonus;
int32_t			armbonus;
int32_t			defbonus;

 

 

E depois de:

 

int32_t getAttack() const {return items[id].attack;}
int32_t getArmor() const {return items[id].armor;}
int32_t getDefense() const {return items[id].defence;}

 

Adicione:

 

int32_t getAtkBonus() const {return items[id].atkbonus;}
int32_t getArmBonus() const {return items[id].armbonus;}
int32_t getDefBonus() const {return items[id].defbonus;}

 

 

Troque:

 

				if(getAttack())
				s << article(it.name) << " (Atk:" << (int32_t)getAttack() << " Def:" << (int32_t)getDefense() << ").";
			else
				s << article(it.name) << " (Def:" << (int32_t)getDefense() << ").";
		}
		else if(getArmor())
			s << article(it.name) << " (Arm:" << (int32_t)getArmor() << ").";

 

Por:

 

 

			if(getAttack()) {
				if(getAtkBonus()) {
					s << article(it.name) << " (Atk:" << (int32_t)getAttack() << " + " << (int32_t)getAtkBonus() << " Def:" << (int32_t)getDefense() << ").";
				}
				else if(getDefBonus()) {
					  s << article(it.name) << " (Atk:" << (int32_t)getAttack() << " Def:" << (int32_t)getDefense() << " + " << (int32_t)getDefBonus() << ").";
				}
				else if(getAtkBonus() && getDefBonus()) {
					s << article(it.name) << " (Atk:" << (int32_t)getAttack() << " + " << (int32_t)getAtkBonus() << " Def:" << (int32_t)getDefense() << " + " << (int32_t)getDefBonus() << ").";
				}
				else {
					s << article(it.name) << " (Atk:" << (int32_t)getAttack() << " Def:" << (int32_t)getDefense() << ").";	
				}
		}
		else if(getArmor()) {
			if(getArmBonus()) {
				s << article(it.name) << " (Arm:" << (int32_t)getArmor() << ") +" << (int32_t)getArmBonus();
			}
			else {
				s << article(it.name) << " (Arm:" << (int32_t)getArmor() << ").";
			}
		}
		else {
				if(getDefBonus()) {
					s << article(it.name) << " (Def:" << (int32_t)getDefense() << " + " << (int32_t)getDefBonus() << ").";
				}
				else {	
					s << article(it.name) << " (Def:" << (int32_t)getDefense() << ").";
				}
		}

 

Weapons.cpp

 

Troque:

 

int32_t attackValue = item->getAttack();

 

Por:

	if(item->getAtkBonus())
	int32_t attackValue = item->getAttack() + item->getAtkBonus();
else
	int32_t attackValue = item->getAttack();

 

Para usar é fácil:

 

<attribute key="atkincrease" value="3"/>
<attribute key="defincrease" value="5"/>
<attribute key="armincrease" value="4"/>

 

Basta por isso em algum item no items.xml

Caso não queira por increases, basta deixar sem.

 

 

Código desenvolvido totalmente por mim

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

Enfu i.i'

Sinistro

 

Agora só precisa fazer um code de quebrar a sword ou algo semelhante... Para que tenha que procurar um blacksmith para consertar ou incrementar =)

Link para o comentário
Compartilhar em outros sites

Eita po...

até o nostradamus aprendeu c++ só eu que naum ¬¬

 

Belo code

Tinha um amigo que se matava por esse code

 

O maldito do frerety teve preguissa de fazer ahauaahuauhauhau

Até que sumiu e eu nunca + vi o maldito

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

po...

to chocadoO

:wacko: :blink: :wacko:

#####, se tem uma ekipe neah???

di ot e etc... se n tiver

 

meu ot vai fik online soh anu que vem, to fazendo o mapa xD

vai ser tipow 24 hrs, 300 play+

ot vai ser o capetaaa

uashaush

i preciso dum cara aew, tipow oc xD

se tiver afim, comunique - me!

 

manerissimo

no more

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...