• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Compiling Code for no getting exp for the same ip

Gothric

New Member
Joined
Feb 6, 2010
Messages
264
Reaction score
1
One of users said that it wouldnt work

PHP:
uint64_t Player::getGainedExperience(Creature* attacker, bool useMultiplier /*= true*/) const
{
	if(g_game.getWorldType() == WORLD_TYPE_PVP_ENFORCED){
		Player* attackerPlayer = attacker->getPlayer();
		if(attackerPlayer->getIP() == getIP() && !g_config.getNumber(ConfigManager::GAIN_EXP_FROM_SAME_IP))
            return 0;
		else
		if(attackerPlayer && attackerPlayer != this && skillLoss){
				/*Formula
				a = attackers level * 0.9
				b = victims level
				c = victims experience
 
				y = (1 - (a / b)) * 0.05 * c
				*/
 
				uint32_t a = (int32_t)std::floor(attackerPlayer->getLevel() * 0.9);
				uint32_t b = getLevel();
				uint64_t c = getExperience();
 
				uint64_t result = std::max((uint64_t)0, (uint64_t)std::floor(getDamageRatio(attacker) * std::max((double)0, ((double)(1 - (((double)a / b))))) * 0.05 * c ) );
				double res = (double)result; 
 
				if(useMultiplier)
					return result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE);
				else
					return uint64_t((result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)) * double(attackerPlayer->exp_multiplier));
		}
	}
 
	return 0;
}


Can anyone know what wrong is here? Or maybe its gooD :D
 
Did you test it?
Maybe change g_config.getNumber to g_config.getBool and add "GAIN_EXP_FROM_SAME_IP" under bool_config_t
 

Similar threads

Back
Top