Ir para conteúdo
  • 0

colocar nível limite


Nightstar

Pergunta

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

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...