Модуль:UnitData

Версия от 05:27, 12 декабря 2021; JustPlayer (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

local p = {}

local lib = require('Module:Feature') local libItem = require('Module:ItemData')

function p.get(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end

local get = require ('Module:UnitData/getter')

   local unit     = args['unit'] or args[1]
   local datatype = args['datatype'] or args[2]
   local output   = args['output'] or args[3] or nil
   
   local result = get[datatype](unit)
   
   if output ~= nil and type(result) == "table" then
       if output == "csv" then
           return lib.tbl_concat{result}
       elseif output == "custom" then 
           return frame:preprocess(lib.tbl_concat({result, prepend = args['prepend'], append = args['append'], separator = args['separator'], index = args["index"]}))
       elseif output == "template" then 
           return frame:preprocess(lib.tbl_concat{result, prepend = "{{" .. args['t_name'] .. "|", append = "}}", separator = args['separator']})
       end
   elseif result == nil then
       return ""
   else
       return result
   end

end

function p.getUnitAbility(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end

local get = require ('Module:UnitData/getter') local unit = args['unit'] or args[1] local ability = "abilities" local str = ""

local result = get[ability](unit)

for k, v in ipairs(result) do

   	if tonumber(args['index']) == k then
   		str = mw.ustring.format('%s/%s/%s/%s', v[1], v[2], v[3], v[4])
   	end
   end
   
   return str

end

function p.getUnitSource(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end

local get = require ('Module:UnitData/getter') local data = require ('Module:RecipeData/data') local loot_data = require ('Module:ItemData/loot') local boss_data = require ('Module:BossData/data') local item_data = require ('Module:ItemData/data') local unit = args['unit'] or args[1] local source = "source"

local str = mw.ustring.format('

Способ получения

')

local result = get[source](unit) local data = data[unit]

if (result == "Крафт") then if (data) == nil then return "" end

str = str .. mw.ustring.format('

')

for k, v in ipairs(data) do str = str .. mw.ustring.format('Шаблон:Rp', item, k) end

str = str .. mw.ustring.format('

')

elseif (result == "Сундук") then

str = str .. mw.ustring.format('

')

for k, v in ipairs(loot_data) do for k1, v1 in ipairs(v) do if (v[k1][1] == item) then for k2, v2 in pairs(item_data) do for k3, v3 in pairs(item_data[k2]["loot"]) do if (v3[1] == k) then str = str .. mw.ustring.format('%s', libItem.getItemIcon(k2, "100px")) end end end end end end

str = str .. mw.ustring.format('

')

elseif (result == "Босс") then

str = str .. mw.ustring.format('

')

for k, v in pairs(boss_data) do for k2, v2 in pairs(boss_data[k]["loot"]) do if (v2[1] == item) then str = str .. mw.ustring.format('Файл:%s', boss_data[k]["icon"], k) end end end

str = str .. mw.ustring.format('

')

elseif (result == "Крафт/Сундук") then

str = str .. mw.ustring.format('

')

for k, v in ipairs(data) do str = str .. mw.ustring.format('Шаблон:Rp', item, k) end

str = str .. mw.ustring.format('

') str = str .. mw.ustring.format('

')

for k, v in ipairs(loot_data) do for k1, v1 in ipairs(v) do if (v[k1][1] == item) then for k2, v2 in pairs(item_data) do for k3, v3 in pairs(item_data[k2]["loot"]) do if (v3[1] == k) then str = str .. mw.ustring.format('%s', libItem.getItemIcon(k2, "100px")) end end end end end end

str = str .. mw.ustring.format('

')

elseif (result == "Крафт/Босс") then

str = str .. mw.ustring.format('

')

for k, v in ipairs(data) do str = str .. mw.ustring.format('Шаблон:Rp', item, k) end

str = str .. mw.ustring.format('

') str = str .. mw.ustring.format('

')

for k, v in pairs(boss_data) do for k2, v2 in pairs(boss_data[k]["loot"]) do if (v2[1] == item) then str = str .. mw.ustring.format('Файл:%s', boss_data[k]["icon"], k) end end end

str = str .. mw.ustring.format('

')

elseif (result == "Сундук/Босс") then

str = str .. mw.ustring.format('

')

for k, v in ipairs(loot_data) do for k1, v1 in ipairs(v) do if (v[k1][1] == item) then for k2, v2 in pairs(item_data) do for k3, v3 in pairs(item_data[k2]["loot"]) do if (v3[1] == k) then str = str .. mw.ustring.format('%s', libItem.getItemIcon(k2, "100px")) end end end end end end

str = str .. mw.ustring.format('

') str = str .. mw.ustring.format('

')

for k, v in pairs(boss_data) do for k2, v2 in pairs(boss_data[k]["loot"]) do if (v2[1] == item) then str = str .. mw.ustring.format('Файл:%s', boss_data[k]["icon"], k) end end end

str = str .. mw.ustring.format('

')

end

return frame:preprocess(tostring(str)) end

return p