{Ajuda} Adaptar código para TFS 0.4

Clarym
Por Clarym
em Programação
  • 1
  • 2

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

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"?

*Imagine minha assinatura do RG*

Yan Liima

Scripter,Programador,WebMaster.
avatar
Diretor
Diretor

INFOS

Grupo: DiretorRegistrado: 12/05/12Posts: 818Gênero: MasculinoChar no Tibia: [ADM] Night

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

 

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

ALGUNS DOS MEUS TRABALHOS:

Spoiler

WODBOHS[DOWNLOAD]

Newstory dbo+nto+bleach[DOWNLOAD]

 

>> Mais infos <<

- Projetos lançados também feitos por mim {

DBO SKY

POKE SKY

WODBOWARS

Tic-tac-War

Dbo Universe(em desenvolvimento)

}

universe.thumb.png.6840320998d0fc1a4652b3db81a585c0.png

Separador.PNG

Te Ajudei? Rep + e ficamos Quits

imageproxy.png.84dce08dd18d31663a72aa1ce37b858a.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

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

*Imagine minha assinatura do RG*

Yan Liima

Scripter,Programador,WebMaster.
avatar
Diretor
Diretor

INFOS

Grupo: DiretorRegistrado: 12/05/12Posts: 818Gênero: MasculinoChar no Tibia: [ADM] Night

 

É, 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.

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

ALGUNS DOS MEUS TRABALHOS:

Spoiler

WODBOHS[DOWNLOAD]

Newstory dbo+nto+bleach[DOWNLOAD]

 

>> Mais infos <<

- Projetos lançados também feitos por mim {

DBO SKY

POKE SKY

WODBOWARS

Tic-tac-War

Dbo Universe(em desenvolvimento)

}

universe.thumb.png.6840320998d0fc1a4652b3db81a585c0.png

Separador.PNG

Te Ajudei? Rep + e ficamos Quits

imageproxy.png.84dce08dd18d31663a72aa1ce37b858a.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

 

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

*Imagine minha assinatura do RG*

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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.

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

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

*Imagine minha assinatura do RG*

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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.

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

 

 

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;
	}
} 

*Imagine minha assinatura do RG*

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

 

 

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.

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

 

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

*Imagine minha assinatura do RG*

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

 

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.

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

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?

*Imagine minha assinatura do RG*

Skulls

Coordenador de Eventos
avatar
Herói
Herói

INFOS

Grupo: HeróiRegistrado: 26/02/07Posts: 859Gênero: Masculino

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.

Clarym

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 12/09/15Posts: 48

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

*Imagine minha assinatura do RG*

  • 1
  • 2