跳转到内容
开关侧边栏
搜索
创建账号
个人工具
创建账号
登录
导航
首页
最近更改
随机页面
玩法条目
界面
机制
旅程
Rating
解歌系统
版本更新日志
列表条目
定数表
曲目列表
曲包列表
曲师列表
谱师列表
画师列表
徽章列表
友情链接
Arcaea中文维基
工具
链入页面
相关更改
特殊页面
页面信息
查看“Module:SongUnlock”的源代码
模块
讨论
English
阅读
查看源代码
查看历史
更多
阅读
查看源代码
查看历史
←
Module:SongUnlock
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local data = require("Module:Rotaeno Data") local getArgs = require('Module:Arguments').getArgs local function packName(name) if string.find(name, "%[") then return name else return "[["..name.."]]" end end local function makeInvokeFunc(funcName) return function(frame) local args = getArgs(frame) return p[funcName](args) end end p.main = makeInvokeFunc('_main') function p._main(args)-- 生成HTML的主函数 部分代码来源:[[Module:Songtable]] local function doArgExist(a) -- 必须放在这,免得出问题 local arg = args[a] return type(arg) == "string" and arg ~= ""; end local function getResult(func,tag) if type(func) == "function" then return func(tag);end return tag:wikitext(tostring(func)) end local function getCondition(lvl) local needRa; if type(lvl) == "nil" then needRa = "[音律值要求]" elseif lvl > 12.9 then needRa = 12; -- 13 elseif lvl > 12.6 then needRa = 11.7; -- 12+ elseif lvl > 11.9 then needRa = 11.0; -- 12 elseif lvl > 11.6 then needRa = 10.7; -- 11+ else needRa = 10; -- 11~8 end return '<span style="color:#e65100">难度Ⅲ</span>评级达到S 或 [[音律值]]达到' .. tostring(needRa); end -- 从参数或者页面名称读取曲目名称 local songName if args['曲名'] then songName = args['曲名'] else songName = mw.getCurrentFrame():preprocess("{{FULLPAGENAME}}") end -- 如果是从页面名读取的,那可能因为mediawiki限制导致页面名和曲名不符。如果有这个转换规则的话,使用转换JSON进行转换。 local covList = mw.text.jsonDecode(mw.getCurrentFrame():expandTemplate{ title = 'Transition.json' })["displayNameToSongName"] if covList[songName] then songName = covList[songName] end -- 生成查找函数。 local query if args['id'] then query = data.singleSongInformation(args['id'], "id") else query = data.singleSongInformation(songName, "name") end local DefaultValue; local isDefault = { not doArgExist("难度I解禁方法"), not doArgExist("难度II解禁方法"), not doArgExist("难度III解禁方法"), not doArgExist("难度IV解禁方法"), type(args["disableAuto"]) == "nil", -- 用于判断应不应该初始化难度IV解禁方法的文本 } local unlockCondition; if args["曲目解禁方法"] then -- 老版本/自定义 unlockCondition = args["曲目解禁方法"]; elseif args["需求旅行者徽章"] then -- unlockCondition = "使用" .. args["需求旅行者徽章"] .. "个旅行者徽章解锁" elseif args["需求等级"] then -- unlockCondition = "等级达到" .. args["需求等级"] elseif args["旅程模式"] then -- unlockCondition = "于旅程模式 星球“" .. args["旅程模式"] .. "”内解锁" elseif args["章节挑战"] then -- unlockCondition = "于旅程模式 星球“" .. args["章节挑战"] .. "”内解锁章节挑战" DefaultValue = "通关 “" .. args["章节挑战"] .. "” 章节挑战对应难度后解锁" isDefault[5] = false; elseif args["曲包"] then -- if packName(args["曲包"]) == "[[星际之声]]" then unlockCondition = "购买单曲 [" .. songName .. "]" else unlockCondition = function(tag) --"购买歌曲包 [‌" .. packName(args["曲包"]) .. "‌]" return tag:wikitext("购买歌曲包 [") :tag("span"):wikitext(packName(args["曲包"])):done() :wikitext("]") end end else -- 假设前面的条件没一个满足,那么理论上是忘写了 unlockCondition = "[待补充]" end if isDefault[5] then -- 初始化难度IV解禁方法 args["难度IV解禁方法"] = args["难度IV解禁方法"] or getCondition(query("rating4")); isDefault[4] = false; end DefaultValue = args["defaultValue"] or DefaultValue or "-" --- 构建HTML --- local box = mw.html.create("table"):addClass("rotable unlockTable") local function getDefValue(start) local tmp = 1; for i=start+1,4 do if isDefault[i] then tmp = tmp + 1; else return tmp; end end return tmp; end -- 第一行:通用条件 local tag = box:tag("tr"):tag("th"):wikitext("曲目解锁"):attr("rowspan", "5"):css("width", "6em"):done() :tag("td"):wikitext("通用条件"):css("width", "8em"):done() :tag("td"); tag = getResult(unlockCondition,tag):done() :done(); -- 第二行:难度I tag = box:tag("tr") :tag("td"):wikitext("难度Ⅰ"):css("color", "#43a047"):done() if isDefault[1] then tag = tag:tag("td"):wikitext(DefaultValue):attr("rowspan",getDefValue(1)); else tag = tag:tag("td"):wikitext(args["难度I解禁方法"]) end tag:done() -- 第三行:难度II tag = box:tag("tr") :tag("td"):wikitext("难度Ⅱ"):css("color", "#1565c0"):done() if isDefault[2] then if not isDefault[1] then tag = tag:tag("td"):wikitext(DefaultValue):attr("rowspan",getDefValue(2)); end else tag = tag:tag("td"):wikitext(args["难度II解禁方法"]) end tag:done() -- 第四行:难度III tag = box:tag("tr") :tag("td"):wikitext("难度Ⅲ"):css("color", "#e65100"):done() if isDefault[3] then if not isDefault[2] then tag = tag:tag("td"):wikitext(DefaultValue):attr("rowspan",getDefValue(3)); end else tag = tag:tag("td"):wikitext(args["难度III解禁方法"]) end tag:done() -- 第五行:难度IV tag = box:tag("tr") :tag("td"):wikitext("难度Ⅳ"):css("color", "#ab47bc"):done() if isDefault[4] then if not isDefault[3] then tag = tag:tag("td"):wikitext(DefaultValue); end else tag = tag:tag("td"):wikitext(args["难度IV解禁方法"]) end tag:done() return tostring(box) end return p
本页使用的模板:
Module:SongUnlock/doc
(
查看源代码
)
返回
Module:SongUnlock
。