小 (// Edit via Wikiplus) |
(// Edit via Wikiplus) |
||
(未显示2个用户的11个中间版本) | |||
第1行: | 第1行: | ||
-- |
-- @author: 华纹 (User:Blossomstripe on youshou.wiki) |
||
local p = {} |
local p = {} |
||
第7行: | 第7行: | ||
number:出场话数 |
number:出场话数 |
||
camera_type:出场类型 --]] |
camera_type:出场类型 --]] |
||
local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number, |
local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number, |
||
camera_type) |
|||
local results = mw.smw.ask(args) |
local results = mw.smw.ask(args) |
||
第16行: | 第17行: | ||
--[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数 |
--[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数 |
||
node:mw.html |
node:mw.html |
||
results:mw.smw.ask返回的查询结果 |
results:mw.smw.ask返回的查询结果 |
||
--]] |
|||
local ul = node:tag('div'):addClass('characters-list') |
local ul = node:tag('div'):addClass('characters-list') |
||
local frame = mw.getCurrentFrame() |
|||
for _, item in pairs(results) do |
for _, item in pairs(results) do |
||
local li = ul:tag('div') |
local li = ul:tag('div') |
||
li:wikitext(frame:expandTemplate{ title = '角色信息按键', args = { item |
li:wikitext(frame:expandTemplate { title = '角色信息按键', args = { item |
||
['OnCamera:character name'] } }) |
|||
end |
end |
||
第35行: | 第38行: | ||
local results = queryOnNumberAndType(number, camera_type) |
local results = queryOnNumberAndType(number, camera_type) |
||
if (type(results) == 'table') then |
if (type(results) == 'table') then |
||
node = prettyList(node, results) |
|||
end |
end |
||
else |
else |
2023年12月3日 (日) 01:35的最新版本
-- @author: 华纹 (User:Blossomstripe on youshou.wiki)
local p = {}
function p.queryOnNumber(frame)
local function queryOnNumberAndType(number, camera_type)
--[[ 给定出场话数和类型,查询出场角色
number:出场话数
camera_type:出场类型 --]]
local args = string.format('[[OnCamera:number::%d]]|[[OnCamera:type::%s]]|?OnCamera:character_name', number,
camera_type)
local results = mw.smw.ask(args)
return results
end
local function prettyList(node, results)
--[[ 将results给出的角色列表显示出来。要修改角色显示方式,只需修改该函数
node:mw.html
results:mw.smw.ask返回的查询结果
--]]
local ul = node:tag('div'):addClass('characters-list')
local frame = mw.getCurrentFrame()
for _, item in pairs(results) do
local li = ul:tag('div')
li:wikitext(frame:expandTemplate { title = '角色信息按键', args = { item
['OnCamera:character name'] } })
end
return node
end
local number = frame.args[1]
local camera_type = frame.args[2]
local node = mw.html.create('')
-- 若给定出场类型,则仅查询相应出场类型的角色,否则分别查询所有出场类型的角色
if (camera_type and camera_type ~= '') then
local results = queryOnNumberAndType(number, camera_type)
if (type(results) == 'table') then
node = prettyList(node, results)
end
else
for idx_type, camera_type in pairs({ '主要', '次要', '背景' }) do
local results = queryOnNumberAndType(number, camera_type)
if (type(results) == 'table') then
local title = string.format('%s角色', camera_type)
local h4 = node:tag('h4')
h4:wikitext(title)
node = prettyList(node, results)
end
end
end
return node
end
return p