colocar nível limite

Nightstar
em Scripts

Nightstar

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/08/17Posts: 14

Eu tava buscando um script para colocar um bloqueio em upar de nível que só é liberado se tiver uma certa storage. Buscando em foruns, encontrei esse script que estará logo a seguir, porém ele é para tfs 1.x, mas gostaria que fosse para tfs 0.4. Como fazer?

 

-- Put this in data/global.lua
function getExpForLevel(level)
    level = level - 1
    return ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3
end

-- Put this in data/events/scripts/player.lua before Player:onGainExperience (outside of function)
local level_tiers = {
    {level = 20, storage = 50000, value = 1}, -- level, quest_storage, value_required
    {level = 40, storage = 50001, value = 1},
    {level = 60, storage = 50002, value = 1},
}

-- Put this in data/events/scripts/player.lua within Player:onGainExperience before "return exp"
for _, array in pairs(level_tiers) do
    if self:getStorageValue(array.storage) < array.value then
        local current_exp, level_exp = self:getExperience(), getExpForLevel(array.level)
        if (current_exp + exp) > level_exp then
            exp = math.max(0, level_exp - current_exp)
            break
        end
    end
end

 

El Rusher

avatar
Cavaleiro
Cavaleiro

INFOS

Grupo: CavaleiroRegistrado: 05/10/17Posts: 185Gênero: Masculino

Abra o arquivo constants.lua e adicione a função getExpForLevel:
 

-- constants.lua

function getExpForLevel(level)
    level = level - 1
    return ((50 * level * level * level) - (150 * level * level) + (400 * level)) / 3
end


Abra o arquivo player.lua localizado em data/events/scripts/ e adicione o código para verificar o bloqueio de nível dentro do evento onGainExperience:
 

-- player.lua

local level_tiers = {
    {level = 20, storage = 50000, value = 1}, -- level, quest_storage, value_required
    {level = 40, storage = 50001, value = 1},
    {level = 60, storage = 50002, value = 1},
}

function Player:onGainExperience(source, exp, rawExp)
    local experience = exp
    for _, array in ipairs(level_tiers) do
        if self:getStorageValue(array.storage) < array.value then
            local current_exp, level_exp = self:getExperience(), getExpForLevel(array.level)
            if (current_exp + experience) > level_exp then
                experience = math.max(0, level_exp - current_exp)
                break
            end
        end
    end

    return experience
end


Isso adicionará a verificação do bloqueio de nível ao evento onGainExperience, garantindo que os jogadores não possam ganhar experiência além do limite permitido para o seu nível, a menos que cumpram os requisitos de armazenamento definidos nas level_tiers.