Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:CosmeticCrates: Difference between revisions

From MCC Island Wiki
m forgot to modify that line
wow, Lua's pairs() iterates in an arbitrary order? and this is the solution? okay...
Line 43: Line 43:
local count = 0
local count = 0
for name, chance in pairs(crateData) do
for _, entry in ipairs(crateData) do
if count % 5 == 0 and count > 0 then
if count % 5 == 0 and count > 0 then
result = result .. '|-\n'
result = result .. '|-\n'
end
end
local name, chance = entry[1], entry[2]
local filename = name .. '.png'
local filename = name .. '.png'
local cell
local cell
        if isAnimated(frame, filename) then
if isAnimated(frame, filename) then
            cell = string.format('|{{AFix|%s|link=%s}} [[%s]]<br /> %.2f%%\n', filename, name, name, chance)
cell = string.format('|{{AFix|%s|link=%s}} [[%s]]<br /> %.2f%%\n', filename, name, name, chance)
        else
else
            cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> %.2f%%\n', filename, name, name, chance)
cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> %.2f%%\n', filename, name, name, chance)
        end
end
 
        result = result .. cell
result = result .. cell
        count = count + 1
count = count + 1
    end
end
 
    result = result .. '|}'
result = result .. '|}'
    return result
return result
end
end


return p
return p

Revision as of 20:50, 12 July 2025

Documentation for this module may be created at Module:CosmeticCrates/doc

local getArgs = require('Module:Arguments').getArgs
local errorModule = require('Module:Error')

local data = require("Module:CosmeticCrates/Data")
if not data then
	return "Error: Unable to load data"
end

local p = {}

local function isAnimated(frame, filename)
	if not frame.preprocess then
		return true
	end
	local content = frame:preprocess('{{:' .. filename .. '}}')
	return content:lower():find('animated%s*=%s*yes') ~= nil
end

function p.getChance(frame)
	local args = getArgs(frame)
	local name = args.name
	
	for _, crate in pairs(data) do
		local chance = crate[name]
		if chance then
			return chance .. '%'
		end
	end
	
	return errorModule.error{
		message = 'Cosmetic "' .. name .. '" not found in any crate.',
		tag = 'span'
	}
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 = '{| class="wikitable"\n|-\n'
	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
			cell = string.format('|{{AFix|%s|link=%s}} [[%s]]<br /> %.2f%%\n', filename, name, name, chance)
		else
			cell = string.format('|[[File:%s|150px|center|link=%s]] <br /> [[%s]] <br /> %.2f%%\n', filename, name, name, chance)
		end
		
		result = result .. cell
		count = count + 1
	end
	
	result = result .. '|}'
	return result
end

return p