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

мНет описания правки
Полностью удалено содержимое страницы
Метка: очистка
 
(не показано 148 промежуточных версий этого же участника)
Строка 1: Строка 1:
local weaponData = mw.loadData("Модуль:IanComradeBot/prototypes/weapon.json/data")


local p = {}
function p.main(frame)
    local mode = frame.args[1]
    local id = frame.args[2]
    if not id then
        return "Ошибка: не задан параметр id."
    end
    local entry = nil
    for _, weapon in ipairs(weaponData) do
        if weapon.id == id then
            entry = weapon
            break
        end
    end
    if not entry then
        return "Оружие с id '" .. tostring(id) .. "' не найдено."
    end
    if mode == "melee" then
        local melee = entry.MeleeWeapon
        if not melee then
            return "Нет данных о MeleeWeapon для оружия '" .. tostring(id) .. "'."
        end
        local oneHandDamage = melee.damage and melee.damage.types
        if not oneHandDamage then
            return "Нет данных о повреждениях (MeleeWeapon.damage.types) для оружия '" .. tostring(id) .. "'."
        end
        local twoHandDamage = entry.DamageOtherOnHit
                                and entry.DamageOtherOnHit.damage
                                and entry.DamageOtherOnHit.damage.types
        local lines = {}
        if twoHandDamage then
            -- Секция для одноручного хвата
            table.insert(lines, "В одноручном хвате:")
            for dmgType, value in pairs(oneHandDamage) do
                table.insert(lines, value .. " " .. dmgType)
            end
            -- Секция для двуручного хвата
            table.insert(lines, "В двуручном хвате:")
            for dmgType, value in pairs(twoHandDamage) do
                table.insert(lines, value .. " " .. dmgType)
            end
        else
            for dmgType, value in pairs(oneHandDamage) do
                table.insert(lines, value .. " " .. dmgType)
            end
        end
        return table.concat(lines, "<br />")
    elseif mode == "attackRate" then
        local melee = entry.MeleeWeapon
        if not melee then
            return "Нет данных о MeleeWeapon для оружия '" .. tostring(id) .. "'."
        end
        if melee.attackRate then
            return tostring(melee.attackRate)
        else
            return "1"
        end
    else
        return "Неверный режим: " .. tostring(mode)
    end
end
return p