Ir para conteúdo

Blackonix Random Exp 0.1


Posts Recomendados

Esse é outro script rejeitado pela BlackOnix.

 

Foi desenvolvido por Lews e idealizado por Nostradamus e feito na época da Ixidor ainda.

Como fizemos um melhor, iremos dar release nesse antigo.

 

Foi testado no Forgotten e SVN, mas deve funcionar em outras versões também.

 

Detalhes:

 

Data: 11/03/2007

Autor: Lews

OBS: Rejeitado da BlackOnix

 

Vamos ao código:

 

Creature.cpp

 

Em:

 

int64_t Creature::getGainedExperience(Creature* attacker) const

 

Troque:

 

return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE));

 

Por:

 

#ifdef __IXIDOR_RAND_EXP__
Player* player = attacker->getPlayer();
if(player){
   int32_t randomExp = random_range(0, 100);
   int32_t x = (uint32_t)g_config.getNumber(ConfigManager::DOUBLE_EXP_CHANCE);
   int32_t y = (uint32_t)g_config.getNumber(ConfigManager::TRIPLE_EXP_CHANCE);
   int32_t z = (uint32_t)g_config.getNumber(ConfigManager::HALF_EXP_CHANCE);
   if(randomExp <= x){
	  g_game.addAnimatedText(attacker->getPosition(), 906, "DoubleExp"); //azul
	  return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) * 2);
   }
   else if(randomExp <= x+y){
	  g_game.addAnimatedText(attacker->getPosition(), 966, "TripleExp"); // 966, laranja
	  return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) * 3);
   }
   else if(randomExp <= x+y+z){
	  g_game.addAnimatedText(attacker->getPosition(), 906, "Half Exp!"); //preto
	  return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) / 2);
   }
   else{
	  //g_game.addAnimatedText(attacker->getPosition(), 906, "NormalExp!");
	  return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE));
   }
}
else
   return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE));
#else
return (int64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE));
#endif

 

 

 

Configmanager.cpp

 

Adicione:

 

#ifdef __IXIDOR_RAND_EXP__
m_confInteger[DOUBLE_EXP_CHANCE] = getGlobalNumber(L, "doubleExpChance", 5);
m_confInteger[TRIPLE_EXP_CHANCE] = getGlobalNumber(L, "tripleExpChance", 2);
m_confInteger[HALF_EXP_CHANCE] = getGlobalNumber(L, "halfExpChance", 2);
#endif

 

Configmanager.h

 

	#ifdef __IXIDOR_RAND_EXP__
DOUBLE_EXP_CHANCE,
TRIPLE_EXP_CHANCE,
HALF_EXP_CHANCE,
#endif

 

No linker adicione:

 

-D__IXIDOR_RAND_EXP__

 

E por fim, no config.lua:

 

-- random exp chance (in %)
doubleExpChance = 5
tripleExpChance = 2
halfExpChance = 2

 

Esse código irá randomizar a chance de se pegar o dobro, triplo ou mesmo metade da experiência.

 

 

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

Bom!!!

nao sei pq a ekipe reijeitou esse script mtu bom!!!

Rejeita outros scripts ae equip!! o do barquinho e outro!! Zuera!!

Parabens vo coloka aki pra ve se funfa!!!

Grato, Clic.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 7 months later...
  • 3 weeks later...
×
×
  • Criar Novo...