Module:CosmeticCrates: Difference between revisions
From MCC Island Wiki
More actions
added makeSentence function |
use of Module:Utils |
||
Line 1: | Line 1: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local errorModule = require('Module:Error') | local errorModule = require('Module:Error') | ||
local expand = require('Module:Utils').expand | |||
local isAnimated = require('Module:Utils').isAnimated | |||
local data = require("Module:CosmeticCrates/Data") | local data = require("Module:CosmeticCrates/Data") | ||
Line 8: | Line 10: | ||
local p = {} | local p = {} | ||
local function findCosmetic(name) | local function findCosmetic(name) | ||
Line 58: | Line 52: | ||
if not result then return notFound(name) end | if not result then return notFound(name) end | ||
local | local crate = expand(frame, 'Display Link', result.crate, 'size = 20px') | ||
return string.format( | return string.format( | ||
Line 78: | Line 67: | ||
local result = string.format( | local result = string.format( | ||
'{| class="wikitable"\n|-\n|colspan="5"|[[File:%s.png|20px|link=%s]] %s\n|-\n', | '{| class="wikitable"\n|-\n|colspan="5"|[[File:%s.png|20px|link=%s]] <b>%s</b>\n|-\n', | ||
crate, crate, crate | crate, crate, crate | ||
) | ) | ||
Line 92: | Line 81: | ||
local cell | local cell | ||
if isAnimated(frame, filename) then | if isAnimated(frame, filename) then | ||
local afix = frame | local afix = expand(frame, 'AFix', filename, string.format("link=%s", name)) | ||
cell = string.format('|%s [[%s]]<br /> %.2f%%\n', afix, name, chance) | cell = string.format('|%s [[%s]] <br /> %.2f%%\n', afix, name, chance) | ||
else | else | ||
cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> <b>%.2f%%</b>\n', filename, name, name, chance) | cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> <b>%.2f%%</b>\n', filename, name, name, chance) |
Latest revision as of 08:47, 8 September 2025
Documentation for this module may be created at Module:CosmeticCrates/doc
local getArgs = require('Module:Arguments').getArgs
local errorModule = require('Module:Error')
local expand = require('Module:Utils').expand
local isAnimated = require('Module:Utils').isAnimated
local data = require("Module:CosmeticCrates/Data")
if not data then
return "Error: Unable to load data"
end
local p = {}
local function findCosmetic(name)
for crateName, crateData in pairs(data) do
for _, pair in ipairs(crateData) do
local cosmeticName, chance = pair[1], pair[2]
if cosmeticName == name then
return {
crate = crateName,
chance = chance .. '%'
}
end
end
end
return nil
end
local function notFound(name)
return errorModule.error{
message = 'Cosmetic "' .. name .. '" not found in any crate.',
tag = 'span'
}
end
function p.getCrate(frame)
local args = getArgs(frame)
local name = args.name
local result = findCosmetic(name)
return result and result.crate or notFound(name)
end
function p.getChance(frame)
local args = getArgs(frame)
local name = args.name
local result = findCosmetic(name)
return result and result.chance or notFound(name)
end
function p.makeSentence(frame)
local args = getArgs(frame)
local name = args.name
local result = findCosmetic(name)
if not result then return notFound(name) end
local crate = expand(frame, 'Display Link', result.crate, 'size = 20px')
return string.format(
"'''%s''' chance when opening a %s",
result.chance, crate
)
end
function p.makeTable(frame)
local args = getArgs(frame)
local crate = args.crate
local crateData = data[crate]
if not crateData then return 'No data found for crate: ' .. crate end
local result = string.format(
'{| class="wikitable"\n|-\n|colspan="5"|[[File:%s.png|20px|link=%s]] <b>%s</b>\n|-\n',
crate, crate, crate
)
local count = 0
for _, entry in ipairs(crateData) do
if count % 5 == 0 and count > 0 then
result = result .. '|-\n'
end
local name, chance = entry[1], entry[2]
local filename = name .. '.png'
local cell
if isAnimated(frame, filename) then
local afix = expand(frame, 'AFix', filename, string.format("link=%s", name))
cell = string.format('|%s [[%s]] <br /> %.2f%%\n', afix, name, chance)
else
cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> <b>%.2f%%</b>\n', filename, name, name, chance)
end
result = result .. cell
count = count + 1
end
result = result .. '|}'
return result
end
return p