Модуль:Песочница/Pok: различия между версиями

мНет описания правки
мНет описания правки
Строка 3: Строка 3:
-- Функция для загрузки данных плат из JSON-файла
-- Функция для загрузки данных плат из JSON-файла
local function loadData()
local function loadData()
     return mw.text.jsonDecode(mw.title.new("User:IanComradeBot/armor_prototypes.json"):getContent())
     return mw.text.jsonDecode(mw.title.new("User:IanComradeBot/entity_prototypes_armor.json"):getContent())
end
end


Строка 14: Строка 14:
     end
     end
     return nil
     return nil
end
-- Функция для точного округления до ближайшего целого числа
local function round(num)
    return math.floor(num + 0.5)
end
-- Функция для преобразования значения в проценты
local function formatPercentage(value)
    return value and round((1 - value) * 100) .. "%" or "-"
end
end


Строка 21: Строка 31:
     local itemData = findDataById(dataCache, id)
     local itemData = findDataById(dataCache, id)


    -- Если данные для ID найдены, используем их, иначе возвращаем дефолтное значение
    local function formatPercentage(value)
        return value and math.floor((1 - value) * 100) .. "%" or "-"
    end
   
     local protBlunt = formatPercentage(itemData and itemData.Blunt)
     local protBlunt = formatPercentage(itemData and itemData.Blunt)
     local protSlash = formatPercentage(itemData and itemData.Slash)
     local protSlash = formatPercentage(itemData and itemData.Slash)
Строка 41: Строка 46:
     -- Формируем сообщение в зависимости от значений sprintModifier и walkModifier
     -- Формируем сообщение в зависимости от значений sprintModifier и walkModifier
     if sprintModifier and walkModifier then
     if sprintModifier and walkModifier then
         local sprintPercent = math.floor((1 - sprintModifier) * 100)
         local sprintPercent = round((1 - sprintModifier) * 100)
         local walkPercent = math.floor((1 - walkModifier) * 100)
         local walkPercent = round((1 - walkModifier) * 100)
          
          
         if sprintModifier == walkModifier then
         if sprintModifier == walkModifier then