Atk/def/arm Increase

  • 1
  • 2

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

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

[twitter]ThomazYuji[/twitter]

Caidera

avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/07/05Posts: 479

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 =)

Atenciosamente,

Rodrigo

---

Muda-se o ano muda-se a frase... Frase do ano de 2014: "Success consists of going from failure to failure without loss of enthusiasm." - Churchill, W.

Jackson Zani

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 25/02/07Posts: 84

Isso ai é inovador ;b

Quando eu te dei a idéia, não sabia que tu ia fazer :p

Ta muito bom!, não testei ainda,

Mas vou testar!

 

Abraços Nostradamus!

Todos direitos reservados® Administrador - Medieval Works 2009.

Hude

De volta õ/
avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 15/04/07Posts: 70Char no Tibia: ------

Nostra.

Muito bom, você e seus trabalhos magníficos. Você é muito bom no que faz!

Parabéns!

 

Abraços.

Atenciosamente,
Hude.


Sign


Fan Bar;

Lordfire

TFS Maintainer
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 04/10/06Posts: 2605Gênero: MasculinoChar no Tibia: Knight Orion

Magnífico!

Só preciso agora saber o que é declarar valores

Fora isso, código muito bom

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@Jackson Zani

Eu nem ia pois acho inútil, mas como o Tibia Global fez...

[twitter]ThomazYuji[/twitter]

duda123

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 13/02/07Posts: 20

Valeu!!!! Esta muito bom o code... Eu estava precisando de algo parecido... Mas nao tinha nem ideia de como fazer... Agora eh so modificar :) Valeu!

user posted image

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

Obrigado pelos comentários.

Depois irei fazer um configurável por config.lua

[twitter]ThomazYuji[/twitter]

Jvchequer

"Veni, vidi, vici."
avatar
Lenda
Lenda

INFOS

Grupo: LendaRegistrado: 10/10/05Posts: 2161Char no Tibia: Master Chequer

o.O

Realmente muito sinistro \o

 

 

Parabéns pelo CODE nostradamus, está magnífico :]~

 

 

Cya

1271330714-U1306.gif

 

~ Fiz parte da Equipe Xtibia em um tempo que Tibia era minha família. Saudades de todos vocês.

Exordium

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 24/01/06Posts: 190

Ia ser esse tipo de code nu seu servidor certo, mas como tibia jah disponibilizou..

belissimo code cara, tu eh fera :D

Sou fã de:







HugoBeolchi

avatar
Artesão
Artesão

INFOS

Grupo: ArtesãoRegistrado: 17/01/06Posts: 111Char no Tibia: Poler'Taylor

HAhAHa mal o tibia acaba de da o update com sistemas novos e os cara tao ai ja xD

 

vlw mto bom

;)

abraço

tibiaa4e

Ex amante de Tibia
avatar
Conde
Conde

INFOS

Grupo: CondeRegistrado: 18/12/05Posts: 912Gênero: MasculinoChar no Tibia: Kohzete

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

Aposentado de OTserver e Tibia

Meus melhores tutoriais
Enciclopédia Pasta Data
Tutorial de quest

Nostradamus

Serviços Prestados ao XTibia.com
avatar
Visconde
Visconde

INFOS

Grupo: ViscondeRegistrado: 10/06/06Posts: 338Char no Tibia: Setyte Berseker

@tibiaa4e

Eu sempre soube C/C++ (Desde que nos conheçemos)

[twitter]ThomazYuji[/twitter]

GOD_Premia

avatar
Banidos
Banidos

INFOS

Grupo: BanidosRegistrado: 27/05/07Posts: 43Char no Tibia: Racellwin Shilayr

Que cabrero :blink:

Assinatura fora dos padrões XTibia.com!

..::: Sign Antigera =/ to em greve façam uma para o GOD Premia =] :::..


DeadKennedy

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 03/06/07Posts: 150

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

  • 1
  • 2