| 🌟 | 現在、 鉄壁HSは通常HSと同じダメージになります。LMG及びDMR、チャージライフル、ハンマーポイント弾を除き、すべてのダメージ値が一致していることを確認しています。  | 
「モジュール:Utility/Image」の版間の差分
		
		
		
		
		
		ナビゲーションに移動
		検索に移動
		
				
		
		
	
 (適切に設定がロードされていなかった不具合の修正)  | 
				 (物資投下武器時の連射速度上昇の画像読み込みに対応)  | 
				||
| (同じ利用者による、間の23版が非表示) | |||
| 1行目: | 1行目: | ||
local p = {}  | local p = {}  | ||
local cfg = mw.loadData('Module:Utility/Image/configuration')  | local cfg = mw.loadData('Module:Utility/Image/configuration')  | ||
local aw = require('Module:Utility/Library')  | |||
local nu = require('Module:Utility/Name')  | |||
local function buildClasses(base, params)  | local function buildClasses(base, params)  | ||
| 17行目: | 20行目: | ||
end  | end  | ||
local function   | local function imagecore(cfg2, name, opts, altname)  | ||
	if opts.link and opts.link ~= '' then  | 	if opts.link and opts.link ~= '' then  | ||
		opts.link = string.format(opts.link, name)  | 		opts.link = string.format(opts.link, name)  | ||
	end  | 	end  | ||
	local filename  = string.format(cfg2.filename, name)  | 	local filename  = opts.filename or string.format(cfg2.filename, name)  | ||
	local classtext = buildClasses(cfg.classes, opts)  | 	local classtext = buildClasses(cfg2.classes or cfg.classes, opts)  | ||
	return string.format(  | 	return string.format(  | ||
		'[[File:%s|%dpx|link=%s|alt=%s|class=%s]]',  | 		'[[File:%s|%dpx|link=%s|alt=%s|class=%s]]',  | ||
		filename, opts.size, opts.link, name, classtext)  | 		filename, opts.size, opts.link, altname or name, classtext)  | ||
end  | |||
function p.attachment(name, level, opts)  | |||
	local newopts = opts and aw.shallowCopy(opts) or {}  | |||
	newopts.link   = newopts.link   or cfg.attachment.default_link or cfg.default_link  | |||
	newopts.rarity = newopts.rarity or cfg.levels[math.min(5, 1 + level)]  | |||
	newopts.size   = newopts.size   or cfg.attachment.default_size or cfg.default_size  | |||
	return imagecore(cfg.attachment, name, newopts)  | |||
end  | |||
function p.gear(id, level, opts)  | |||
	local newopts = opts and aw.shallowCopy(opts) or {}  | |||
	newopts.link   = newopts.link   or cfg.gear.default_link or cfg.default_link  | |||
	newopts.rarity = newopts.rarity or cfg.levels[math.min(6, 1 + level)]  | |||
	newopts.size   = newopts.size   or cfg.gear.default_size or cfg.default_size  | |||
	local lang    = newopts.lang or 'ja'  | |||
	local name    = nu.gear(id, 'ja')  | |||
	local altname = nu.gear(id, lang)  | |||
	if id == 'backpack' then  | |||
		newopts.filename = string.format(cfg.gear.filename_backpack, math.max(1, math.min(level, 3)))  | |||
	end  | |||
	return imagecore(cfg.gear, name, newopts, altname)  | |||
end  | |||
function p.ammo(id, opts)  | |||
	opts      = opts      or { lang = 'ja' }  | |||
	opts.lang = opts.lang or 'ja'  | |||
	local linkname, name, altname  | |||
	if aw.stringends(id, '_revved_up') then  | |||
		local baseid  | |||
		if aw.stringstarts(id, 'special_') then  | |||
			baseid = string.sub(id, 9, string.len(id) - 10)  | |||
		else  | |||
			baseid = string.sub(id, 1, string.len(id) - 10)  | |||
		end  | |||
		linkname = nu.ammo(baseid)  | |||
		name     = '連射速度上昇時' .. linkname  | |||
		altname  = '連射速度上昇時' .. nu.ammo(baseid, opts.lang)  | |||
	elseif aw.stringends(id, '_amped') then  | |||
		local baseid = string.sub(id, 1, string.len(id) - 6)  | |||
		linkname = nu.ammo(baseid)  | |||
		name     = '増幅時' .. linkname  | |||
		altname  = '増幅時' .. nu.ammo(baseid, opts.lang)  | |||
	else  | |||
		linkname = nu.ammo(id)  | |||
		name     = linkname  | |||
		altname  = nu.ammo(id, opts.lang)  | |||
	end  | |||
	local newopts = opts and aw.shallowCopy(opts) or {}  | |||
	newopts.link = newopts.link or cfg.ammo.default_link or cfg.default_link  | |||
	newopts.size = newopts.size or cfg.ammo.default_size or cfg.default_size  | |||
	if newopts.link and newopts.link ~= '' then  | |||
		newopts.link = string.format(newopts.link, linkname)  | |||
	end  | |||
	local filename  = string.format(cfg.ammo.filename, name)  | |||
	return string.format(  | |||
		'[[File:%s|x%dpx|link=%s|alt=%s]]',  | |||
		filename, newopts.size, newopts.link, altname)  | |||
end  | |||
local function image(cfg2, name, opts, altname, rarity)  | |||
	opts = opts and aw.shallowCopy(opts) or {}  | |||
	opts.link   = opts.link   or cfg2.items and cfg2.items[name].default_link   or cfg2.default_link   or cfg.default_link  | |||
	opts.rarity = opts.rarity or cfg2.items and cfg2.items[name].default_rarity or cfg2.default_rarity or cfg.default_rarity  | |||
	opts.size   = opts.size   or cfg2.items and cfg2.items[name].default_size   or cfg2.default_size   or cfg.default_size  | |||
	return imagecore(cfg2, name, opts, altname)  | |||
end  | end  | ||
function p.hopup(name, opts)  | function p.grenade(name, opts)  | ||
	return image(cfg.hopup, name, opts)  | 	return image(cfg.grenade, name, opts)  | ||
end  | |||
function p.hopup(id, opts)  | |||
	opts = opts or {}  | |||
	local name    = nu.hopup(id, 'ja')  | |||
	local altname = nu.hopup(id, opts and opts.lang)  | |||
	if not opts.rarity then  | |||
		opts.rarity = mw.loadData('Module:Stat/Hopup')[id].rarity  | |||
	end  | |||
	return image(cfg.hopup, name, opts, altname, rarity)  | |||
end  | end  | ||
| 44行目: | 123行目: | ||
function p.scope(name, opts)  | function p.scope(name, opts)  | ||
	return image(cfg.scope, name, opts)  | 	return image(cfg.scope, name, opts)  | ||
end  | |||
function p.passive(id, opts)  | |||
	local name = nu.passive(id, 'ja')  | |||
	local altname = nu.passive(id, opts and opts.lang)  | |||
	return image(cfg.passive, name, opts, altname)  | |||
end  | |||
function p.tactical(id, opts)  | |||
	local name = nu.tactical(id, 'ja')  | |||
	local altname = nu.tactical(id, opts and opts.lang)  | |||
	return image(cfg.tactical, name, opts, altname)  | |||
end  | end  | ||
return p  | return p  | ||
2022年8月10日 (水) 14:01時点における最新版
このモジュールについての説明文ページを モジュール:Utility/Image/doc に作成できます
local p = {}
local cfg = mw.loadData('Module:Utility/Image/configuration')
local aw = require('Module:Utility/Library')
local nu = require('Module:Utility/Name')
local function buildClasses(base, params)
	local classes = {}
	for _, value in ipairs({ 'body', 'rarity', 'size' }) do
		local baseClassName = base[value]
		local param = params[value]
		if param ~= nil then
			local classname = string.format(baseClassName, param)
			table.insert(classes, classname)
		else
			table.insert(classes, baseClassName)
		end
	end
	return table.concat(classes, ' ')
end
local function imagecore(cfg2, name, opts, altname)
	if opts.link and opts.link ~= '' then
		opts.link = string.format(opts.link, name)
	end
	
	local filename  = opts.filename or string.format(cfg2.filename, name)
	local classtext = buildClasses(cfg2.classes or cfg.classes, opts)
	return string.format(
		'[[File:%s|%dpx|link=%s|alt=%s|class=%s]]',
		filename, opts.size, opts.link, altname or name, classtext)
end
function p.attachment(name, level, opts)
	local newopts = opts and aw.shallowCopy(opts) or {}
	newopts.link   = newopts.link   or cfg.attachment.default_link or cfg.default_link
	newopts.rarity = newopts.rarity or cfg.levels[math.min(5, 1 + level)]
	newopts.size   = newopts.size   or cfg.attachment.default_size or cfg.default_size
	return imagecore(cfg.attachment, name, newopts)
end
function p.gear(id, level, opts)
	local newopts = opts and aw.shallowCopy(opts) or {}
	newopts.link   = newopts.link   or cfg.gear.default_link or cfg.default_link
	newopts.rarity = newopts.rarity or cfg.levels[math.min(6, 1 + level)]
	newopts.size   = newopts.size   or cfg.gear.default_size or cfg.default_size
	
	local lang    = newopts.lang or 'ja'
	local name    = nu.gear(id, 'ja')
	local altname = nu.gear(id, lang)
	if id == 'backpack' then
		newopts.filename = string.format(cfg.gear.filename_backpack, math.max(1, math.min(level, 3)))
	end
	return imagecore(cfg.gear, name, newopts, altname)
end
function p.ammo(id, opts)
	opts      = opts      or { lang = 'ja' }
	opts.lang = opts.lang or 'ja'
	
	local linkname, name, altname
	if aw.stringends(id, '_revved_up') then
		local baseid
		if aw.stringstarts(id, 'special_') then
			baseid = string.sub(id, 9, string.len(id) - 10)
		else
			baseid = string.sub(id, 1, string.len(id) - 10)
		end
		linkname = nu.ammo(baseid)
		name     = '連射速度上昇時' .. linkname
		altname  = '連射速度上昇時' .. nu.ammo(baseid, opts.lang)
	elseif aw.stringends(id, '_amped') then
		local baseid = string.sub(id, 1, string.len(id) - 6)
		linkname = nu.ammo(baseid)
		name     = '増幅時' .. linkname
		altname  = '増幅時' .. nu.ammo(baseid, opts.lang)
	else
		linkname = nu.ammo(id)
		name     = linkname
		altname  = nu.ammo(id, opts.lang)
	end
	local newopts = opts and aw.shallowCopy(opts) or {}
	newopts.link = newopts.link or cfg.ammo.default_link or cfg.default_link
	newopts.size = newopts.size or cfg.ammo.default_size or cfg.default_size
	
	if newopts.link and newopts.link ~= '' then
		newopts.link = string.format(newopts.link, linkname)
	end
	
	local filename  = string.format(cfg.ammo.filename, name)
	return string.format(
		'[[File:%s|x%dpx|link=%s|alt=%s]]',
		filename, newopts.size, newopts.link, altname)
end
local function image(cfg2, name, opts, altname, rarity)
	opts = opts and aw.shallowCopy(opts) or {}
	opts.link   = opts.link   or cfg2.items and cfg2.items[name].default_link   or cfg2.default_link   or cfg.default_link
	opts.rarity = opts.rarity or cfg2.items and cfg2.items[name].default_rarity or cfg2.default_rarity or cfg.default_rarity
	opts.size   = opts.size   or cfg2.items and cfg2.items[name].default_size   or cfg2.default_size   or cfg.default_size
	return imagecore(cfg2, name, opts, altname)
end
function p.grenade(name, opts)
	return image(cfg.grenade, name, opts)
end
function p.hopup(id, opts)
	opts = opts or {}
	
	local name    = nu.hopup(id, 'ja')
	local altname = nu.hopup(id, opts and opts.lang)
	if not opts.rarity then
		opts.rarity = mw.loadData('Module:Stat/Hopup')[id].rarity
	end
	return image(cfg.hopup, name, opts, altname, rarity)
end
function p.item(name, opts)
	return image(cfg.item, name, opts)
end
function p.scope(name, opts)
	return image(cfg.scope, name, opts)
end
function p.passive(id, opts)
	local name = nu.passive(id, 'ja')
	local altname = nu.passive(id, opts and opts.lang)
	return image(cfg.passive, name, opts, altname)
end
function p.tactical(id, opts)
	local name = nu.tactical(id, 'ja')
	local altname = nu.tactical(id, opts and opts.lang)
	return image(cfg.tactical, name, opts, altname)
end
return p