Quest:修订间差异
来自蒙纳多研究本部
无编辑摘要 |
MWBot |
||
| (未显示同一用户的2个中间版本) | |||
| 第1行: | 第1行: | ||
local p = {} | local p = {} | ||
local post = require("Module:RequestHelper").post | local post = require("Module:RequestHelper").post | ||
local getArgs = require("Module:Arguments").getArgs | |||
local html = require("Module:Html") | |||
local compress = html.compress | |||
local addlink = html.addlink | |||
-- local getArgs = require("Module:Arguments").getArgs | -- local getArgs = require("Module:Arguments").getArgs | ||
local function itemName(data) | local function itemName(data) | ||
| 第19行: | 第15行: | ||
end | end | ||
local function | local function slot(data) | ||
if | if data.itemID.uni_flag == 0 then | ||
return "[" .. data.itemID.jwl_slot .. "]" | |||
end | end | ||
return | return "" | ||
end | end | ||
function p.template(frame, data) | function p.template(frame, data) | ||
local questInfo = "" | local questInfo = "" | ||
do -- 任务内容 | do -- 任务内容 | ||
| 第74行: | 第68行: | ||
end | end | ||
if #data.menu. | if #data.menu.info_end_B > 0 then | ||
questInfo = | questInfo = | ||
mw.ustring.format( | mw.ustring.format( | ||
| 第121行: | 第115行: | ||
end | end | ||
local | local reward_A = | ||
data.reward_A1 and | |||
data. | |||
mw.ustring.format( | mw.ustring.format( | ||
[[<div class="medium-6 columns"> | [[<div class="medium-6 columns"> | ||
<div class="light-box"> | <div class="light-box"> | ||
<div style="text-align: center"> | <div style="text-align: center">A</div> | ||
<hr /> | <hr /> | ||
<div style="padding: 0 8px">%s</div> | <div style="padding: 0 8px">%s</div> | ||
| 第137行: | 第129行: | ||
</div> | </div> | ||
</div>]], | </div>]], | ||
data.reward_B1 and addlink(itemName(data.reward_B1), "物品") or "------", | data.reward_A1 and addlink(itemName(data.reward_A1), "物品") .. slot(data.reward_A1) or "------", | ||
data.reward_B2 and addlink(itemName(data.reward_B2), "物品") or " ", | data.reward_A2 and addlink(itemName(data.reward_A2), "物品") .. slot(data.reward_A2) or " ", | ||
data.reward_B3 and addlink(itemName(data.reward_B3), "物品") or " " | data.reward_A3 and addlink(itemName(data.reward_A3), "物品") .. slot(data.reward_A3) or " " | ||
) or | |||
"" | |||
local reward_B = | |||
data.reward_B1 and | |||
mw.ustring.format( | |||
[[<div class="medium-6 columns"> | |||
<div class="light-box"> | |||
<div style="text-align: center">B</div> | |||
<hr /> | |||
<div style="padding: 0 8px">%s</div> | |||
<hr /> | |||
<div style="padding: 0 8px">%s</div> | |||
<hr /> | |||
<div style="padding: 0 8px">%s</div> | |||
</div> | |||
</div>]], | |||
data.reward_B1 and addlink(itemName(data.reward_B1), "物品") .. slot(data.reward_B1) or "------", | |||
data.reward_B2 and addlink(itemName(data.reward_B2), "物品") .. slot(data.reward_B1) or " ", | |||
data.reward_B3 and addlink(itemName(data.reward_B3), "物品") .. slot(data.reward_B1) or " " | |||
) or | ) or | ||
"" | "" | ||
| 第184行: | 第196行: | ||
) | ) | ||
) | ) | ||
end | |||
if data.flg_s > 0 then | |||
otherCondition = | |||
otherCondition .. mw.ustring.format([[<hr /><div style="text-align: center;">主线进度: %s</div>]], data.flg_s) | |||
end | end | ||
| 第191行: | 第207行: | ||
else | else | ||
npcName = addlink(data.npc_id.name, "NPC") | npcName = addlink(data.npc_id.name, "NPC") | ||
end | |||
if data.npc_id.range_s ~= data.npc_id.range_e and npcName ~= "剧情任务" then | |||
npcName = npcName .. " " .. data.npc_id.range_s .. ":00 - " .. data.npc_id.range_e .. ":00" | |||
end | end | ||
| 第231行: | 第247行: | ||
<div class="light-box">评价<div style="float:right">%s</div></div> | <div class="light-box">评价<div style="float:right">%s</div></div> | ||
</div> | </div> | ||
%s | |||
%s | %s | ||
</div> | </div> | ||
| 第273行: | 第280行: | ||
data.reward_exp * 10 or "", | data.reward_exp * 10 or "", | ||
data.up_famous_A or "", | data.up_famous_A or "", | ||
reward_A, | |||
reward_B, | reward_B, | ||
frame:expandTemplate {title = "QuestBox/title", args = {"任务内容"}}, | frame:expandTemplate {title = "QuestBox/title", args = {"任务内容"}}, | ||
| 第298行: | 第302行: | ||
for _, v in ipairs({"A1", "A2", "A3", "B1", "B2", "B3"}) do | for _, v in ipairs({"A1", "A2", "A3", "B1", "B2", "B3"}) do | ||
mw.smw.set({reward = data["reward_" .. v] and itemName(data["reward_" .. v])}) | mw.smw.set({reward = data["reward_" .. v] and itemName(data["reward_" .. v]) .. slot(data["reward_" .. v])}) | ||
end | end | ||
| 第317行: | 第321行: | ||
function p.main(frame) | function p.main(frame) | ||
local | local args = getArgs(frame) | ||
local | local out = "" | ||
for _, id in ipairs(args) do | |||
local data = p.fetchDataById(id) | |||
if args[2] then | |||
out = out .. html.h2(data.npc_id.name) | |||
end | |||
out = out .. p.template(frame, data) | |||
p.setSmw(data) | |||
end | |||
-- mw.log(mw.text.jsonEncode(data, mw.text.JSON_PRETTY)) | -- mw.log(mw.text.jsonEncode(data, mw.text.JSON_PRETTY)) | ||
return | return out | ||
end | end | ||
return p | return p | ||
2020年6月22日 (一) 19:39的最新版本
此模块的文档可以在模块:Quest/doc创建
local p = {}
local post = require("Module:RequestHelper").post
local getArgs = require("Module:Arguments").getArgs
local html = require("Module:Html")
local compress = html.compress
local addlink = html.addlink
-- local getArgs = require("Module:Arguments").getArgs
local function itemName(data)
local name = data.itemID.name
if data.rankType > 0 then
name = name .. data.rankType
end
return name
end
local function slot(data)
if data.itemID.uni_flag == 0 then
return "[" .. data.itemID.jwl_slot .. "]"
end
return ""
end
function p.template(frame, data)
local questInfo = ""
do -- 任务内容
local infoReport =
#data.menu.info_report > 0 and [[<div class="light-box">]] .. data.menu.info_report .. [[</div>]] or ""
local succ = {}
for _, v in ipairs({"A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"}) do
succ[v] = ""
if data["type_succ_" .. v] == "KillEnemy" then
succ[v] =
mw.ustring.format(
[[<div style="text-align: right;">%s 0/%s</div>]],
addlink(data["cnd_succ_" .. v].name, "敌人"),
data["num_succ_" .. v]
)
elseif data["type_succ_" .. v] == "GetItem" then
succ[v] =
mw.ustring.format(
[[<div style="text-align: right;">%s 0/%s</div>]],
addlink(itemName(data["cnd_succ_" .. v]), "物品"),
data["num_succ_" .. v]
)
elseif data["type_succ_" .. v] == "TalkNpc" then
succ[v] =
data["cnd_succ_" .. v] and
mw.ustring.format(
[[<div style="text-align: right;">与 %s 对话</div>]],
addlink(data["cnd_succ_" .. v].name, "NPC")
) or
""
end
end
local questProg = {A = "", B = ""}
for k, _ in pairs(questProg) do
for i = 1, 3 do
if #data.menu["info_succ_" .. k .. i] > 0 then
questProg[k] =
questProg[k] ..
'<div class="light-box">' .. data.menu["info_succ_" .. k .. i] .. succ[k .. (i + 1)] .. "</div>"
end
end
end
if #data.menu.info_end_B > 0 then
questInfo =
mw.ustring.format(
[[<ul class="tabs" data-tab>
<li class="tab-title active">A</li>
<li class="tab-title">B</li>
</ul>
<div class="tabs-content">
<div class="content active" id="prog-a">
<div class="light-box">%s</div>
%s
%s
<div class="light-box">%s</div>
</div>
<div class="content" id="prog-b">
<div class="light-box">%s</div>
%s
%s
<div class="light-box">%s</div>
</div>
</div>]],
data.menu.info_prog .. succ.A1,
questProg.A,
infoReport,
data.menu.info_end_A,
data.menu.info_prog .. succ.B1,
questProg.B,
infoReport,
data.menu.info_end_B
)
else
questInfo =
mw.ustring.format(
[[<div>
<div class="light-box">%s</div>
%s
%s
<div class="light-box">%s</div>
</div>]],
data.menu.info_prog .. succ.A1,
questProg.A,
infoReport,
data.menu.info_end_A
)
end
end
local reward_A =
data.reward_A1 and
mw.ustring.format(
[[<div class="medium-6 columns">
<div class="light-box">
<div style="text-align: center">A</div>
<hr />
<div style="padding: 0 8px">%s</div>
<hr />
<div style="padding: 0 8px">%s</div>
<hr />
<div style="padding: 0 8px">%s</div>
</div>
</div>]],
data.reward_A1 and addlink(itemName(data.reward_A1), "物品") .. slot(data.reward_A1) or "------",
data.reward_A2 and addlink(itemName(data.reward_A2), "物品") .. slot(data.reward_A2) or " ",
data.reward_A3 and addlink(itemName(data.reward_A3), "物品") .. slot(data.reward_A3) or " "
) or
""
local reward_B =
data.reward_B1 and
mw.ustring.format(
[[<div class="medium-6 columns">
<div class="light-box">
<div style="text-align: center">B</div>
<hr />
<div style="padding: 0 8px">%s</div>
<hr />
<div style="padding: 0 8px">%s</div>
<hr />
<div style="padding: 0 8px">%s</div>
</div>
</div>]],
data.reward_B1 and addlink(itemName(data.reward_B1), "物品") .. slot(data.reward_B1) or "------",
data.reward_B2 and addlink(itemName(data.reward_B2), "物品") .. slot(data.reward_B1) or " ",
data.reward_B3 and addlink(itemName(data.reward_B3), "物品") .. slot(data.reward_B1) or " "
) or
""
local otherCondition = ""
if data.cnd_famous > 0 then
otherCondition =
otherCondition ..
mw.ustring.format([[
<hr /><div style="text-align: center;">评价值 %s 以上</div>
]], data.cnd_famous)
end
if data.npcmeetID1 then
otherCondition =
otherCondition ..
mw.ustring.format(
[[
<hr /><div style="text-align: center;">牵绊图已登记 %s</div>
]],
addlink(data.npcmeetID1.name, "NPC")
)
end
if data.npcmeetID2 then
otherCondition =
otherCondition ..
mw.ustring.format(
[[
<hr /><div style="text-align: center;">牵绊图已登记: %s</div>
]],
addlink(data.npcmeetID2.name, "NPC")
)
end
if data.cnd_questID then
otherCondition =
otherCondition ..
mw.ustring.format(
[[
<hr /><div style="text-align: center;">前置任务: %s</div>
]],
addlink(
data.cnd_questID.title,
"任务",
data.cnd_questID.npc_id.rlt_lnd.mapID.name .. "/" .. data.cnd_questID.title
)
)
end
if data.flg_s > 0 then
otherCondition =
otherCondition .. mw.ustring.format([[<hr /><div style="text-align: center;">主线进度: %s</div>]], data.flg_s)
end
local npcName = ""
if #data.npc_id.mob_name > 0 then
npcName = data.npc_id.mob_name
else
npcName = addlink(data.npc_id.name, "NPC")
end
if data.npc_id.range_s ~= data.npc_id.range_e and npcName ~= "剧情任务" then
npcName = npcName .. " " .. data.npc_id.range_s .. ":00 - " .. data.npc_id.range_e .. ":00"
end
local timeLimitQuest = ""
if data.qst_genre == "限时任务" then
timeLimitQuest = [[<div style="text-align: center;">限时任务</div><hr />]]
end
local wikitext =
mw.ustring.format(
[[
<div class="row">
<div class="large-6 columns">
<div class="quest-box">
<div class="dark-box">
%s
<div class="content" >
%s
<div style="text-align: center;">%s</div>
<hr />
<div style="text-align: center;">%s %s</div>
<hr />
<div>%s</div>
%s
</div>
</div>
</div>
<div class="quest-box">
<div class="dark-box">
%s
<div class="content">
<div class="row">
<div class="medium-6 columns">
<div class="light-box">MONEY<div style="float:right">%s</div></div>
<div class="light-box">EXP<div style="float:right">%s</div></div>
<div class="light-box">评价<div style="float:right">%s</div></div>
</div>
%s
%s
</div>
</div>
</div>
</div>
</div>
<div class="large-6 columns">
<div class="quest-box">
<div class="dark-box">
%s
<div class="content">
%s
</div>
</div>
</div>
</div>
</div>
]],
frame:expandTemplate {title = "QuestBox/title", args = {"委托条件"}},
timeLimitQuest,
npcName,
addlink(data.npc_id.rlt_lnd.mapID.name, "任务"),
data.npc_id.rlt_lnd.name,
data.menu.purpose,
otherCondition,
frame:expandTemplate {title = "QuestBox/title", args = {"任务报酬"}},
data.reward_money * 10 or "",
data.reward_exp * 10 or "",
data.up_famous_A or "",
reward_A,
reward_B,
frame:expandTemplate {title = "QuestBox/title", args = {"任务内容"}},
questInfo
)
return compress(wikitext)
end
function p.setSmw(data)
mw.smw.set(
{
id = data.row_id,
npc = #data.npc_id.mob_name == 0 and data.npc_id.name or data.npc_id.mob_name,
money = data.reward_money * 10,
exp = data.reward_exp * 10,
famous = data.up_famous_A,
genre = data.qst_genre
}
)
for _, v in ipairs({"A1", "A2", "A3", "B1", "B2", "B3"}) do
mw.smw.set({reward = data["reward_" .. v] and itemName(data["reward_" .. v]) .. slot(data["reward_" .. v])})
end
for _, v in ipairs({"A1", "A2", "A3", "A4", "B1", "B2", "B3", "B4"}) do
if data["type_succ_" .. v] == "KillEnemy" then
mw.smw.set({questEnemy = data["cnd_succ_" .. v].name})
elseif data["type_succ_" .. v] == "GetItem" then
mw.smw.set({questItem = itemName(data["cnd_succ_" .. v])})
elseif data["type_succ_" .. v] == "TalkNpc" then
mw.smw.set({questNpc = data["cnd_succ_" .. v] and data["cnd_succ_" .. v].name})
end
end
end
function p.fetchDataById(id)
return post("bdat_common.JNL_quest", id)
end
function p.main(frame)
local args = getArgs(frame)
local out = ""
for _, id in ipairs(args) do
local data = p.fetchDataById(id)
if args[2] then
out = out .. html.h2(data.npc_id.name)
end
out = out .. p.template(frame, data)
p.setSmw(data)
end
-- mw.log(mw.text.jsonEncode(data, mw.text.JSON_PRETTY))
return out
end
return p