Module:GetLootLines
Jump to navigation
Jump to search
Documentation for this module may be created at Module:GetLootLines/doc
local p = {}
local displaynames = mw.loadJsonData("Data:Displaynames")
function p.getTable(data)
function dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
function mysplit(inputstr, sep)
if sep == nil then
sep = "%s"
end
local t={}
for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
table.insert(t, str)
end
return t
end
function getDisplayname(ns, entry)
local name = displaynames[ns .. ":" .. entry]
if name ~= nil then
return name
end
local name = displaynames[ns .. "." .. entry]
if name ~= nil then
return name
end
name = displaynames["item." .. ns .. "." .. entry]
if name ~= nil then
return name
end
name = displaynames["block." .. ns .. "." .. entry]
if name ~= nil then
return name
end
name = ""
for i, c in ipairs(mysplit(entry, "_")) do
if name ~= "" then
name = name .. " "
end
name = name .. c
end
return "''" .. name .. "''"
end
local args = data["args"]
local items = mysplit(args[1], ",")
local quantities = mysplit(args[2], ",")
local chances = mysplit(args[3], ",")
if (#items ~= #quantities) then
return "Error: Parameters are not matching length"
end
local returning = ""
for _, v in ipairs(items) do
local item = string.gsub(v, '^%s*(.-)%s*$', '%1')
local rl = mysplit(item, ":")
local namespace = rl[1]
local entry = rl[2]
local quantity = quantities[_]
local chance = chances[_]
local name = getDisplayname(namespace, entry)
returning = returning .. [[
|-
|]] .. " [[File:".. namespace .. "-" .. entry .. ".png|16px]] " .. name .. " || " .. quantity .. " || " .. chance .. [[
]]
end
return returning
end
return p