• 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!

No exp from same IP on pvp-enforced (avesta)

Hellrage

Worr
Joined
Oct 30, 2007
Messages
2,477
Reaction score
5
Location
Sweden
Hello, I followed this guide: http://otland.net/f35/no-exp-same-ip-when-killing-another-player-pvp-enforced-hardcore-74764/

Here is what I changed (other parts that you need to change are working, so I dont post them). When I kill myself with mc I still get exp, why doesnt it work?

[cpp]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;
}[/cpp]
 
Back
Top