|
|
| (не показано 149 промежуточных версий этого же участника) |
| Строка 1: |
Строка 1: |
| -- Загружаем данные из JSON
| |
| local weaponData = mw.loadData("Модуль:IanComradeBot/prototypes/weapon.json/data")
| |
|
| |
|
| local p = {}
| |
|
| |
| --- Функция main принимает два параметра:
| |
| --- @param mode string "melee" или "attackRate"
| |
| --- @param id string идентификатор оружия
| |
| function p.main(mode, id)
| |
| -- Проверка на наличие id
| |
| if id == nil then
| |
| return "Ошибка: не задан параметр id."
| |
| end
| |
|
| |
| local entry = nil
| |
| -- Поиск записи по заданному id (предполагается, что weaponData — массив записей)
| |
| 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
| |
| -- Если тип присутствует в одноручном хвате, выводим так же
| |
| if oneHandDamage[dmgType] then
| |
| table.insert(lines, value .. " " .. dmgType)
| |
| else
| |
| table.insert(lines, value .. " " .. dmgType)
| |
| end
| |
| 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
| |
|
| |
| -- Если attackRate отсутствует, возвращаем "1"
| |
| if melee.attackRate then
| |
| return tostring(melee.attackRate)
| |
| else
| |
| return "1"
| |
| end
| |
|
| |
| else
| |
| return "Неверный режим: " .. tostring(mode)
| |
| end
| |
| end
| |
|
| |
| return p
| |