◆少前百科是非盈利性、非官方的少女前线维基百科。
◆如果您发现某些内容错误/空缺,请勇于修正/添加!参与进来其实很容易!点这里 加入少前百科
◆有任何意见、建议、纠错,欢迎在 GFwiki:反馈与建议 提出和讨论。编辑事务讨论QQ群:597764980,微博@GFwiki少前百科
◆To foreigners,You can use twitter to contact us.
Icon Nyto Silver.png

“模块:Gun info/skin”的版本间的差异

来自少前百科GFwiki
跳转至: 导航搜索
(创建页面,内容为“local p = {} local gunId local gunData local dialog local skinData = mw.loadData('Module:Gun info/skin data') local modL2D = { [55] = true, [56] = true, [57] = t…”)
 
 
第45行: 第45行:
 
end
 
end
  
local function buildArgs()
+
local function buildParams()
 
local frame = mw.getCurrentFrame()
 
local frame = mw.getCurrentFrame()
 
local gunCode = string.gsub(gunData.code, ' ', '_')
 
local gunCode = string.gsub(gunData.code, ' ', '_')
第88行: 第88行:
 
gunData = mw.loadData(dataPage)[gunId]
 
gunData = mw.loadData(dataPage)[gunId]
 
dialog = args['获取台词'] and mw.text.trim(args['获取台词']) or ''
 
dialog = args['获取台词'] and mw.text.trim(args['获取台词']) or ''
return frame:callParserFunction('#widget', {'DollPage/Pic', buildArgs()})
+
local params = buildParams()
 +
params[1] = 'DollPage/Pic'
 +
return frame:callParserFunction('#widget', params)
 
end
 
end
  
 
return p
 
return p

2024年4月22日 (一) 00:05的最新版本

此模块的文档可以在模块:Gun info/skin/doc创建

local p = {}
local gunId
local gunData
local dialog
local skinData = mw.loadData('Module:Gun info/skin data')

local modL2D = {
	[55] = true,
	[56] = true,
	[57] = true,
	[65] = true,
	[101] = true,
	[103] = true,
	[122] = true,
	[143] = true
}

local function filepath(filename, frame)
	local ret = frame:callParserFunction('filepath', filename)
	return ret ~= '' and string.gsub(ret, 'https?://[w.]-gfwiki%.org', '') or ''
end

local function findPics(name, frame)
	local url, dUrl = filepath(name .. '_HD.png', frame)
	if url ~= '' then
		dUrl = filepath(name .. '_D_HD.png', frame)
	else
		url = filepath(name .. '.png', frame)
		dUrl = filepath(name .. '_D.png', frame)
	end
	return url, dUrl
end

local function findVoice(gunCode, frame)
	local fileName = string.format(
		'%s%s_GAIN_JP.',
		string.upper(string.sub(gunCode, 1, 1)),
		string.sub(gunCode, 2)
	)
	local url = filepath(fileName .. 'wav', frame)
	if url == '' then
		url = filepath(fileName .. 'mp3', frame)
	end
	return url
end

local function buildParams()
	local frame = mw.getCurrentFrame()
	local gunCode = string.gsub(gunData.code, ' ', '_')
	local imgName = 'Pic_' .. gunCode
	local args = {
		dollname = mw.ustring.gsub(gunData.name, '\194\160', ' '),
		dollvoice = findVoice(gunCode, frame),
		pic1name = '默认立绘',
		line1 = dialog,
		pic1a = 0
	}
	args.pic1, args.pic1d = findPics(imgName, frame)
	
	if gunData['mod'] then
		args.pic2name = '心智升级'
		args.line2 = dialog
		args.pic2, args.pic2d = findPics(imgName .. 'Mod', frame)
		args.pic2a = modL2D[gunData.id] and 2 or 0
	end

	local offset = gunData['mod'] and 2 or 1
	for i, v in ipairs(gunData.skins) do
		local skin = skinData[v]
		if skin then
			local n = tostring(i + offset)
			local pic = 'pic' .. n
			local fileName = imgName .. '_' .. tostring(v)
			args[pic .. 'name'] = skin.name
			args['line' .. n] = skin.dialog
			args[pic], args[pic .. 'd'] = findPics(fileName, frame)
			args[pic .. 'a'] = skin['type'] or 0
		end
	end
	return args
end

function p.skinInfo(frame)
	local args = frame:getParent().args
	gunId = args['编号']
	gunId = tonumber(gunId)
	local dataPage = 'Module:Gun_info/data' .. (gunId < 1000 and '' or '_extra')
	gunData = mw.loadData(dataPage)[gunId]
	dialog = args['获取台词'] and mw.text.trim(args['获取台词']) or ''
	local params = buildParams()
	params[1] = 'DollPage/Pic'
	return frame:callParserFunction('#widget', params)
end

return p