Модуль:Песочница/Pok
Материал из Space Station 14 Вики
Для документации этого модуля может быть создана страница Модуль:Песочница/Pok/doc
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