打开主菜单

少前百科GFwiki β

更改

模块:Gun info/skin

添加2,397字节2024年4月22日 (星期一)
创建页面,内容为“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…”
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 buildArgs()
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 ''
return frame:callParserFunction('#widget', {'DollPage/Pic', buildArgs()})
end

return p