SN
pedido

Script De Força

Por Snowsz, 06 de jan. de 2013 em Scripts

script
20
2.7k
eduardosm14E
10 de janeiro de 2013 às 23:23

istalar o q mano, o code q o kra pois???

SnowszS
10 de janeiro de 2013 às 23:36

Claro pensa q eu to falando doke ? -.- n torne o topico flood, so quero instala e pronto!

OneshotO
11 de janeiro de 2013 às 11:40

Ensinarei nos mínimos detalhes, de modo que até um leigo qualquer, seguindo os passos conseguiria fazer as modificações corretamente.

 


 

Para seguir os passos abaixo, é recomendável ter em mãos, o código-fonte do seu servidor, ou seja, as sources.

 

1. No seu IDE de preferência, abra o arquivo weapons.cpp, e procure pela função abaixo:

 

int32_t WeaponMelee::getWeaponDamage(const Player* player, const Creature* target, const Item* item, bool maxDamage /*= false*/) const
{
	int32_t attackSkill = player->getWeaponSkill(item);
	int32_t attackValue = std::max((int32_t)0, (int32_t(item->getAttack() + item->getExtraAttack()) - elementDamage));
	float attackFactor = player->getAttackFactor();

	double maxValue = Weapons::getMaxWeaponDamage(player->getLevel(), attackSkill, attackValue, attackFactor);
	if(random_range(1, 100) <= g_config.getNumber(ConfigManager::CRITICAL_HIT_CHANCE))
	{
			maxValue = std::pow(maxValue, g_config.getDouble(ConfigManager::CRITICAL_HIT_MUL));
			player->sendCritical();
	}

	Vocation* vocation = player->getVocation();
	if(vocation && vocation->getMultiplier(MULTIPLIER_MELEE) != 1.0)
			maxValue *= vocation->getMultiplier(MULTIPLIER_MELEE);

	int32_t ret = (int32_t)std::floor(maxValue);
	if(maxDamage)
			return -ret;

	return -random_range(0, ret, DISTRO_NORMAL);
}

 

Precisamos modificar o dano, certo? Então modificaremos o valor de retorno da função.

 

int32_t ret = (int32_t)std::floor(maxValue);

 

Precisamos editar de um modo que, a cada ponto na skill Fist Fighting, o jogador receba 20 de dano extra, certo? Para isso basta adicionar a seguinte linha abaixo:

 

ret += (player->getSkill(SKILL_FIST, SKILL_LEVEL) * 20);

 

Ficando assim:

 

int32_t ret = (int32_t)std::floor(maxValue);
ret += (player->getSkill(SKILL_FIST, SKILL_LEVEL) * 20);

 

Você precisará fazer o mesmo procedimento para as funções que retornam o dano das armas de combate a distância, como bows e crossbows e armas mágicas, como wands e rods. Armas "melee" também possuem uma segunda função, responsável por retornar o dano elemental, como exemplo Fire Sword.

 


 

Como sou muito bonzinho, deixo abaixo o arquivo weapons.cpp.tar.gz com as modificações.

 

weapons.cpp.tar.gz

 

Basta substituir ele na pasta das sources de seu servidor, abrir o projeto no seu IDE de preferência e compilar. Lembre também de deletar qualquer pasta obj/

Editado Janeiro 11 por Oneshot

SnowszS
11 de janeiro de 2013 às 12:05

oneshot muito obrigado rep+, mas so tenho uma duvida, esse download ja esta com bow e tal? se não tiver, é o mesmo procedimento ? para deixar bow e crossbow e tal do mesmo jeito ?

OneshotO
11 de janeiro de 2013 às 12:10

Já está com todas modificações, melee, distance e wands e rods.

 

Movido para Pedidos e dúvidas resolvidos - Scripting

Editado Janeiro 11 por Oneshot