getPlayerExtraExpRate(cid)
setPlayerExtraExpRate(cid, value)
amazing code but if the server dont have Experience Stage, u must replacewithCode:return (uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE));
Code:return attacker->getPlayer() ? (((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience)) * attacker->getPlayer()->getExpRate()) : ((uint64_t)std::floor(getDamageRatio(attacker) * lostExperience * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)));
Then find this:
Code:
return (result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE) );
and REPLACE with this:
Code:
return ((result * g_config.getNumber(ConfigManager::RATE_EXPERIENCE)) * exp
Segmentation fault.
int LuaScriptInterface::luaSetPlayerExpRate(lua_State *L)
{
uint32_t rate = popNumber(L);
uint32_t cid = popNumber(L);
ScriptEnviroment* env = getScriptEnv();
Player* player = env->getPlayerByUID(cid);
if(player){
player->changePlayerExpRate(rate);
lua_pushnumber(L, LUA_ERROR);
}
else{
reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushnumber(L, LUA_ERROR);
}
return 1;
}
int32_t LuaScriptInterface::luaSetPlayerExpRate(lua_State *L)
{
uint32_t rate = popNumber(L);
uint32_t cid = popNumber(L);
ScriptEnviroment* env = getScriptEnv();
Player* player = env->getPlayerByUID(cid);
if(player){
player->changePlayerExpRate(rate);
lua_pushnumber(L, LUA_ERROR);
}
else{
reportErrorFunc(getErrorDesc(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushnumber(L, LUA_ERROR);
}
return 1;
}