Модуль:Песочница/Pok: различия между версиями
Pok (обсуждение | вклад) мНет описания правки |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 1: | Строка 1: | ||
-- | -- Загружаем данные из JSON | ||
local | local weaponData = mw.loadData("Модуль:IanComradeBot/prototypes/weapon.json/data") | ||
local p = {} | local p = {} | ||
function p.main( | --- Функция main принимает два параметра: | ||
-- | --- @param mode string "melee" или "attackRate" | ||
--- @param id string идентификатор оружия | |||
if not | function p.main(mode, id) | ||
return " | local entry = nil | ||
-- Ищем оружие с заданным id | |||
for _, weapon in ipairs(weaponData) do | |||
if weapon.id == id then | |||
entry = weapon | |||
break | |||
end | |||
end | |||
if not entry then | |||
return "Оружие с id '" .. id .. "' не найдено." | |||
end | end | ||
-- | if mode == "melee" then | ||
local melee = entry.MeleeWeapon | |||
if | if not melee then | ||
return "Нет данных о MeleeWeapon для оружия '" .. id .. "'." | |||
end | |||
-- Получаем таблицу повреждений для одноручного хвата | |||
local oneHandDamage = melee.damage and melee.damage.types | |||
if not oneHandDamage then | |||
return "Нет данных о повреждениях (MeleeWeapon.damage.types) для оружия '" .. id .. "'." | |||
end | |||
-- Пытаемся получить данные DamageOtherOnHit для двуручного хвата (если они есть) | |||
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 | |||
-- Если нет DamageOtherOnHit, выводим просто одноручный урон | |||
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 для оружия '" .. id .. "'." | |||
end | |||
if melee.attackRate then | |||
return tostring(melee.attackRate) | |||
else | |||
return "Нет данных об attackRate для оружия '" .. id .. "'." | |||
end | end | ||
else | |||
return "Неверный режим: " .. mode | |||
end | end | ||
end | end | ||
return p | return p | ||