ON

Fist Fighting/Attackspeed

Por Oneshot, 08 de jan. de 2013 em Linguagens de Programação

tibia
otserv
21
7k
OneshotO
08 de janeiro de 2013 às 14:17

Nome: Fist Fighting/Attackspeed

Tipo: C++

Autor: Oneshot

 


 

Já vi alguns pedidos no fórum sobre a skill Fist Fighting, onde quanto mais você treinasse ela, mais rápido você atacaria no jogo, e parece que isto é um feature do Tibia. Como é uma modificação muito fácil nas sources, resolvi passar aí para a galera.

 

Por padrão, o intervalo entre ataques do Tibia é 2000ms, ou seja, um ataque físico a cada dois segundos. Eu fiz uma pequena modificação nas sources onde o Fist Fighting seria inversamente proporcional ao tal intervalo, ou seja, quanto maior o valor da skill, menor seria o intervalo.

 

Fiz de um modo que um jogador com Fist Fighting de nível 200, então, teria uma redução de 75% no intervalo de ataque, ou seja, um ataque a cada meio segundo ou dois ataques por segundo

 

Leve em consideração que ele pega como base o attackspeed da vocação ou da arma usada, ou seja, se seu servidor já tem o tal chamado "fast attack", de nada adianta adicionar esse código C++.

 

 


 

Abra seu player.cpp, procure por isso:

 

Player::getAttackSpeed()

 

Substitua toda a função, dependendo da versão de seu servidor:

 

0.3.6

uint32_t Player::getAttackSpeed()
{
Item* weapon = getWeapon();
if(weapon && weapon->getAttackSpeed() != 0)
	return std::ceil(weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)));

return std::ceil(vocation->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)));
}

 

0.4

uint32_t Player::getAttackSpeed() const
{
return std::ceil(((weapon && weapon->getAttackSpeed() != 0) ? weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)) : (vocation->getAttackSpeed() / std::max((size_t)1, getWeapons().size()) * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)))));
}

 


 

Isso adiciona uma utilidade para a skill Fist Fighting que em muitos dos servidores é algo deixado de lado e inútil.

 

Abraços.

Editado Janeiro 10 por Oneshot

tonynamoralT
09 de janeiro de 2013 às 18:54

Eu tentei mudar para sword , mais só funciono no meu GOD . e tipo , nenhum outros GODS nem players funcionaram .

OneshotO
09 de janeiro de 2013 às 19:27

Leve seu computador, dedicado, servidor e etcétera, para se benzer.

 

Abraços.

tonynamoralT
09 de janeiro de 2013 às 21:39

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk....

 

Xorei véi . mais ai, ele da uns warnings . é normal?

OneshotO
10 de janeiro de 2013 às 10:48

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk....

 

Xorei véi . mais ai, ele da uns warnings . é normal?

 

Cara, na boa, está totalmente funcional sem nenhum bug. É uma modificação ridícula que não acarreta nenhuma mudança drástica no servidor.

 

Se não está funcionando aí, o problema é aí, não com meu código.

 

Abraços.

tonynamoralT
10 de janeiro de 2013 às 12:30

Oh , mais tipo . ele da uns warnings antes de compilar. isso é normal?

 

542005_329010943880335_936887275_n.jpg

Editado Janeiro 10 por tonynamoral

SnowszS
11 de janeiro de 2013 às 20:43

Completamente infuncional o codigo no 0.3.6pl1 tfs 8.54.

OneshotO
11 de janeiro de 2013 às 22:57

Completamente infuncional o codigo no 0.3.6pl1 tfs 8.54.

 

Desculpe minha grosseria, mas infelizmente só aí no seu servidor problemático. Testei aqui.

 

Grande abraço.

Editado Janeiro 11 por Oneshot

SnowszS
12 de janeiro de 2013 às 06:26

Sempre da warning e umas coisinhas, mas conssegui resolver mudando parte do codigo.

OneshotO
12 de janeiro de 2013 às 09:20

Sempre da warning e umas coisinhas, mas conssegui resolver mudando parte do codigo.

 

Certo, depois poste a sua resolução aqui.

 

Abraços.

Editado Janeiro 12 por Oneshot

SubwatS
12 de janeiro de 2013 às 09:27

cara você podia parar de ser antipático neh cara, parece que ta mal comido na moralzinha mesmo, relaxa ae.

testei esse code aqui e funcionou perfeitamente btw.

rogeriomatxR
16 de janeiro de 2013 às 00:05

Nome: Fist Fighting/Attackspeed

Tipo: C++

Autor: Oneshot

 


 

Já vi alguns pedidos no fórum sobre a skill Fist Fighting, onde quanto mais você treinasse ela, mais rápido você atacaria no jogo, e parece que isto é um feature do Tibia. Como é uma modificação muito fácil nas sources, resolvi passar aí para a galera.

 

Por padrão, o intervalo entre ataques do Tibia é 2000ms, ou seja, um ataque físico a cada dois segundos. Eu fiz uma pequena modificação nas sources onde o Fist Fighting seria inversamente proporcional ao tal intervalo, ou seja, quanto maior o valor da skill, menor seria o intervalo.

 

Fiz de um modo que um jogador com Fist Fighting de nível 200, então, teria uma redução de 75% no intervalo de ataque, ou seja, um ataque a cada meio segundo ou dois ataques por segundo

 

Leve em consideração que ele pega como base o attackspeed da vocação ou da arma usada, ou seja, se seu servidor já tem o tal chamado "fast attack", de nada adianta adicionar esse código C++.

 

 


 

Abra seu player.cpp, procure por isso:

 

Player::getAttackSpeed()

 

Substitua toda a função, dependendo da versão de seu servidor:

 

0.3.6

uint32_t Player::getAttackSpeed()
{
Item* weapon = getWeapon();
if(weapon && weapon->getAttackSpeed() != 0)
	return std::ceil(weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)));

return std::ceil(vocation->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)));
}

 

0.4

uint32_t Player::getAttackSpeed() const
{
return std::ceil(((weapon && weapon->getAttackSpeed() != 0) ? weapon->getAttackSpeed() * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)) : (vocation->getAttackSpeed() / std::max((size_t)1, getWeapons().size()) * (1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)))));
}

 


 

Isso adiciona uma utilidade para a skill Fist Fighting que em muitos dos servidores é algo deixado de lado e inútil.

 

Abraços.

 

Desculpe está revivendo o tópico, enfim para deixar que um player com fist 90 ganhe 50% de attack com faço? meixo aqui

(1 - (getSkill(SKILL_FIST, SKILL_LEVEL) * 0.00375)))));

RHCPR
16 de janeiro de 2013 às 00:52

Funcionou aqui nas últimas revs também (rev5914), rep+ (:

OneshotO
16 de janeiro de 2013 às 07:25

@rogeriok

 

Mude o 0.00375 para 0.0055

Editado Janeiro 17 por Oneshot

1 mês depois...
xgamexX
06 de fevereiro de 2013 às 14:25

Ola Boa Tarde, como coloco para ele inicar o fast attack quando o fist chegar no 60 desde ja obrigado