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

RevScripts Player:onGainExperience

alcapone

Member
Joined
Jan 13, 2021
Messages
247
Reaction score
19
Lua:
function Player:onGainExperience(source, exp, rawExp)
    if not source or source:isPlayer() then
        return exp
    end
    
 

     if self:getStorageValue(config.storageResets) == 1 then
    
    local expStage = getRateFromTable(experienceStagesreset1, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
   else   
    local expStage = getRateFromTable(experienceStages, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
end
 
 
    return (exp / 100 * ((expStage * 100 + 1.5)))
end

I deleted other parts of the code so there isn't a giant code

what I'm trying to do is if the player has X storage he activates getRateFromTable X if he has Y activates getRateFromTable y


error:
data/events/scripts/player.lua:920: attempt to perform arithmetic on global 'expStage' (a nil value)
 
Solution
Lua:
function Player:onGainExperience(source, exp, rawExp)
    if not source or source:isPlayer() then
        return exp
    end
    
    local expStage = nil
    if self:getStorageValue(config.storageResets) == 1 then
       expStage = getRateFromTable(experienceStagesreset1, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
    else   
       expStage = getRateFromTable(experienceStages, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
    end
 
 
    return (exp / 100 * ((expStage * 100 + 1.5)))
end

oh god, sorry, little bit drunk
expStage returning nothing, u can show this func getRateFromTable
function getRateFromTable(t, level, default)
for _, rate in ipairs(t) do
if level >= rate.minlevel and (not rate.maxlevel or level <= rate.maxlevel) then
return rate.multiplier
end
end
return default
end
 
which line has problem? (Error says its 920 line, could you copy me the 920 line of player.lua) anyway maybe t (table name) is wrong.
 
which line has problem? (Error says its 920 line, could you copy me the 920 line of player.lua) anyway maybe t (table name) is wrong.
local expStage = getRateFromTable(experienceStagesreset1, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))

the error is that the 'local' is not able to read more I don't know how I could do that
 
show me this table experienceStagesreset1, pretty sure it doesnt exsists
experienceStagesreset1 = {
{
minlevel = 1,
maxlevel = 750,
multiplier = 75
},
{
minlevel = 750,
maxlevel = 1000,
multiplier = 50
},
{
minlevel = 801,
maxlevel = 5000,
multiplier = 5
}
}

this is in a file of stages taking the 'if' the location works, the error is when you leave the location inside the check with if


1667351253871.png
 
Lua:
function Player:onGainExperience(source, exp, rawExp)
    if not source or source:isPlayer() then
        return exp
    end
    
    local expStage = nil
    if self:getStorageValue(config.storageResets) == 1 then
       expStage = getRateFromTable(experienceStagesreset1, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
    else   
       expStage = getRateFromTable(experienceStages, self:getLevel(), configManager.getNumber(configKeys.RATE_EXP))
    end
 
 
    return (exp / 100 * ((expStage * 100 + 1.5)))
end

oh god, sorry, little bit drunk
 
Solution
Back
Top