Ir para conteúdo
  • 0

Script De Força


Snowsz

Pergunta

Bom eu queria pedir um script desse modo, o player tem o first skill né ?, então, eu quero por para ser impossivel upar o first skill, mas a cada 1 de first skill que o player consseguir ele ficara com +20 de hit, tipo, para aumentar o first skill eu quero um item, quando der use ele ganha +1 de first skill!

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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 por Oneshot
Link para o comentário
Compartilhar em outros sites

  • 0

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 ?

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...