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

Lua Intentialy reset level on death

fishie

fishies-war
Joined
Oct 27, 2016
Messages
78
Reaction score
2
Hello, ive been trying to get this to work for a while with no success. Ive created a custom war server and i need it so when a player dies his level resets back to basic (level 100) but nothing ive tried has worked.

I had a script created for me by xeraphus but sadly this only worked under basic conditions and eventurely didnt work at all.

local function getExperienceForLevel(lv)
lv = lv - 1
return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

deathStorage = 'EXPERIENCE'

function onPrepareDeath(creature, killer)
local player = creature:getPlayer()
if not player then
return true
end
player:setStorageValue(deathStorage, getExperienceForLevel(100) - player:getExperience())
return true
end

Also this i added to login.lua

function onLogin(player)
local exp = player:getStorageValue(deathStorage)
if exp ~= 0 then
if exp < 0 then
player:removeExperience(exp)
else
player:addExperience(exp)
end
player:setStorageValue(deathStorage, 0)
player:sendTextMessage(MESSAGE_INFO_DESCR, 'Your level has been reset.')
end
Can anyone make a new way of reseting a players level on death? Im using TFS 1.2

Thankyou. Anymore details ive missed please ask
 
Last edited:
Solution
Done it twice because I wasn't sure what you meant. First one I copied it into the script and it didn't work with no errors at all, second one which gave the error was because I made two scripts. :/
my bad i misspelled
Code:
function onPrepareDeath(creature, killer)
    local player = creature:getPlayer()
    if not player then
        return true
    end
    player:setStorageValue('death', 1)
    return true
end

Code:
local function getExpForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

function onLogin(player)
    local resetExperience = getExpForLevel(100)
    local currentExperience = player:getExperience()
    if player:getStorageValue('death') == 1 then
        if...
I used it now, it worked so there was a little problem
To lose the level the player needs to die two times
Or else give at least one relog before die

You done something wrong. This code works perfectly. It's active on my server now
 
my bad i misspelled
Code:
function onPrepareDeath(creature, killer)
    local player = creature:getPlayer()
    if not player then
        return true
    end
    player:setStorageValue('death', 1)
    return true
end

Code:
local function getExpForLevel(lv)
    lv = lv - 1
    return ((50 * lv * lv * lv) - (150 * lv * lv) + (400 * lv)) / 3
end

function onLogin(player)
    local resetExperience = getExpForLevel(100)
    local currentExperience = player:getExperience()
    if player:getStorageValue('death') == 1 then
        if player:getLevel() > 100 then
            player:removeExperience(currentExperience - resetExperience)
        elseif player:getLevel() < 100 then
            player:addExperience(resetExperience - currentExperience)
        end
        player:setStorageValue('death', -1)
    end
    return true
end

this will work, i've tested it
if player is lower than 100 it will add experience to get them back to level 100
if they are over 100 it will remove experience to level 100
can you update this script to let the player ondeath lose 200 levels only?
 
Back
Top