Ir para conteúdo
  • 0

{Ajuda} Adaptar código para TFS 0.4


Clarym

Pergunta

Eai galera.

 

Então, achei um código super útil aqui no fórum, mas ele é pra TFS 0.3.6 e eu fui compilar no TFS 0.4 e deu erro, então gostaria de que alguém me ajudasse a adaptar ele. O código é do henriqueberro e aqui está o tópico dele: link

 

Mas pra facilitar aqui está o código:

 

em player.cpp, procure a função:

uint32_t Player::getAttackSpeed()

e​ substituía ela toda por:

uint32_t Player::getAttackSpeed()
{
int32_t weaponAttackSpeed = 0;
int32_t minimumAttackSpeed = 500;

Item* weapon = getWeapon();

if(weapon && weapon->getAttackSpeed() != 0)
    weaponAttackSpeed = floor ((int)weapon->getAttackSpeed());

// FORMULA
int32_t attackSpeed = vocation->getAttackSpeed() - (getSkill(SKILL_CLUB, SKILL_LEVEL) * 20) - weaponAttackSpeed;
    
// CHECA A VELOCIDADE MÍNIMA
if (attackSpeed && attackSpeed < minimumAttackSpeed)
   return minimumAttackSpeed;

return attackSpeed;
}

No tópico diz que se adicionarmos a tag <attribute key="attackspeed" value="X"/> em algum item, o mesmo vai adicionar mais velocidade ao ataque, se eu colocar essa tag e um anel vai funcionar? Igual a tag "increaseMagicPercent"?

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

Posts Recomendados

  • 0
  • Diretor

Tente assim:

uint32_t Player::getAttackSpeed() const
{
int32_t weaponAttackSpeed = 0;
int32_t minimumAttackSpeed = 500;

return ((weapon && weapon->getAttackSpeed() != 0) ? weapon->getAttackSpeed() : (vocation->getAttackSpeed() - getPlayer()->getExtraAttackSpeed() / std::max((size_t)1, getWeapons().size())));
// FORMULA
int32_t attackSpeed = vocation->getAttackSpeed() - (getSkill(SKILL_CLUB, SKILL_LEVEL) * 20) - weaponAttackSpeed;
    
// CHECA A VELOCIDADE MÍNIMA
if (attackSpeed && attackSpeed < minimumAttackSpeed)
   return minimumAttackSpeed;

return attackSpeed;
}

Só não sei se iria funcionar 100% então tu vai ter que testar...


Na verdade acho que nem vai funcionar kkk

 

Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim:

uint32_t Player::getAttackSpeed() const
{
int32_t weaponAttackSpeed = 0;
int32_t minimumAttackSpeed = 500;

return ((weapon && weapon->getAttackSpeed() != 0) ? weapon->getAttackSpeed() : (vocation->getAttackSpeed() - getPlayer()->getExtraAttackSpeed() / std::max((size_t)1, getWeapons().size())));
// FORMULA
int32_t attackSpeed = vocation->getAttackSpeed() - (getSkill(SKILL_CLUB, SKILL_LEVEL) * 20) - weaponAttackSpeed;
    
// CHECA A VELOCIDADE MÍNIMA
if (attackSpeed && attackSpeed < minimumAttackSpeed)
   return minimumAttackSpeed;

return attackSpeed;
}

Só não sei se iria funcionar 100% então tu vai ter que testar...

Na verdade acho que nem vai funcionar kkk

 

 

É, deu erro kkk

 

D:\Source\player.cpp 'const class Player' has no member named 'getExtraAttackSpeed'​

D:\Source\player.cpp *** [Obj/player.o] Error 1

Link para o comentário
Compartilhar em outros sites

  • 0
  • Diretor

 

É, deu erro kkk

 

D:\Source\player.cpp 'const class Player' has no member named 'getExtraAttackSpeed'​

D:\Source\player.cpp *** [Obj/player.o] Error 1

 

kkk tentei agora pouco no meu e compilou, mais acho que não iria funcionar não...

 

Acho que daria para adaptar não, dar deve dá sim, mais aconselho tu ir atrás do cara que fez essa função ai.

Link para o comentário
Compartilhar em outros sites

  • 0

 

kkk tentei agora pouco no meu e compilou, mais acho que não iria funcionar não...

 

Acho que daria para adaptar não, dar deve dá sim, mais aconselho tu ir atrás do cara que fez essa função ai.

 

Eu contatei ele, mas até agora nada... Vamos ver se sai algo

Link para o comentário
Compartilhar em outros sites

  • 0

A source do 0.4 que você está utilizando ajudaria.


Outra coisa, qual erro deu na primeira tentativa?


E sem querer te desanimar, mas já desanimando, tenho convicção de que esse código não deve ser funcional.

O TFS possui uma limitação muito chata relacionada a attack speed que limita sua manipulação à casa de segundos, imposta pelo mark propositalmente.

Porém, há uma pequena correção (pelo menos por 1.2) que permite que o attack speed seja manipulado na casa de milisegundos.

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

  • 0

A source do 0.4 que você está utilizando ajudaria.

Outra coisa, qual erro deu na primeira tentativa?

 

É a distro TFS 0.4 rev 3884 que eu baixei em outkro fórutkm mas acho que não posso linkar aqui então eu coloquei no dropbox: link

 

os erros:

4256 \Source\player.cpp prototype for 'uint32_t Player::getAttackSpeed()' does not match any in class 'Player' 
710 \Source\player.h uint32_t Player::getAttackSpeed() const
 710 \Bony TheForgotten - Source\player.h *** [Obj/player.o] Error 1

Link para o comentário
Compartilhar em outros sites

  • 0

Só repetindo pq vc nao viu:

E sem querer te desanimar, mas já desanimando, tenho convicção de que esse código não deve ser funcional.

O TFS possui uma limitação muito chata relacionada a attack speed que limita sua manipulação à casa de segundos, imposta pelo mark propositalmente.

Porém, há uma pequena correção (pelo menos por 1.2) que permite que o attack speed seja manipulado na casa de milisegundos.

 

Em todo caso, darei uma olhada.

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

E sem querer te desanimar, mas já desanimando, tenho convicção de que esse código não deve ser funcional. O TFS possui uma limitação muito chata relacionada a attack speed que limita sua manipulação à casa de segundos, imposta pelo mark propositalmente. Porém, há uma pequena correção (pelo menos por 1.2) que permite que o attack speed seja manipulado na casa de milisegundos.

 

olha, eu testei um código de attack speed que funcionou em 0.4, aqui:

uint32_t Player::getAttackSpeed() const
{
	int32_t SpeedAttack;
	SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_FIST, SKILL_LEVEL) * 10);

	if (SpeedAttack < 500) {
		return 500;
	} else {
		return (uint32_t) SpeedAttack;
	}
} 
Link para o comentário
Compartilhar em outros sites

  • 0

 

 

olha, eu testei um código de attack speed que funcionou em 0.4, aqui:

uint32_t Player::getAttackSpeed() const
{
	int32_t SpeedAttack;
	SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_FIST, SKILL_LEVEL) * 10);

	if (SpeedAttack < 500) {
		return 500;
	} else {
		return (uint32_t) SpeedAttack;
	}
} 

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

 

 

olha, eu testei um código de attack speed que funcionou em 0.4, aqui:

uint32_t Player::getAttackSpeed() const
{
	int32_t SpeedAttack;
	SpeedAttack = vocation->getAttackSpeed() - (getSkill(SKILL_FIST, SKILL_LEVEL) * 10);

	if (SpeedAttack < 500) {
		return 500;
	} else {
		return (uint32_t) SpeedAttack;
	}
} 

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

Link para o comentário
Compartilhar em outros sites

  • 0

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

 

aaah certo, entendi agora. Mas assim, preciso mais desse código pelo atributo do item... Então isso não seria algo tão absurdo

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

 

Você não entendeu, funcionar funciona. Mas ele só vai alterar o attackspeed de seg em seg.. Você ter 1500 de attspeed (teoricamente 1 tapa a cada 1.5 segundos) é exatamente igual a ter 2000, assim como ter 100 é exatamente igual a ter 1000. No TFS originalmente não tem segundo quebrado para ataque speed.

 

aah sim, entendi. Mas eu quero mesmo pelo atributo do item... Então isso não seria algo tão terrível

Link para o comentário
Compartilhar em outros sites

  • 0

 

aaah certo, entendi agora. Mas assim, preciso mais desse código pelo atributo do item... Então isso não seria algo tão absurdo

Considerando que 3000 de attackspeed é igual a 1 tapa a cada TRÊS segundos, algo já absurdamente lento, você tem no máximo 3 níveis de ataque speed, o que não justifica usar ataque speed ahuehuaehuae. Considerando que o attspeed base padrão das vocações normalmente é 1500, cai para 2 o número.

Link para o comentário
Compartilhar em outros sites

  • 0

Considerando que 3000 de attackspeed é igual a 1 tapa a cada TRÊS segundos, algo já absurdamente lento, você tem no máximo 3 níveis de ataque speed, o que não justifica usar ataque speed ahuehuaehuae. Considerando que o attspeed base padrão das vocações normalmente é 1500, cai para 2 o número.

Realmente, olhando assim uheuehe Mas da pra adaptar o código?

Link para o comentário
Compartilhar em outros sites

  • 0

Então, um amigo meu falou que nas versões antigas o tfs atualizava o attspeed de 500ms em 500ms, o que torna mais viavel uma alteração assim, ainda que bem tosco. Acredito que dê pra adaptar o codigo sim, so nao vou conseguir olhar nesse exato momento o que ta errado.

Link para o comentário
Compartilhar em outros sites

  • 0

Então, um amigo meu falou que nas versões antigas o tfs atualizava o attspeed de 500ms em 500ms, o que torna mais viavel uma alteração assim, ainda que bem tosco. Acredito que dê pra adaptar o codigo sim, so nao vou conseguir olhar nesse exato momento o que ta errado.

 

Ah sim, tudo bem. Da uma olhada quando você tiver um tempo livro então...

up

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...