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.


info
Grupo: Campones
Registrado: 23/08/17
Posts: 15
Reputação: 0
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