维护提醒
BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。
全站通知:
模块:Quests
刷
历
编
跳到导航
跳到搜索
local Helper = require("Module:Helper")
-- Module:Quests
local p = {}
local questData = Helper.LazyLoad("Module:Quests/data")
-- Helper function to split text
local function splitText(text, delimiter)
local result = {}
for match in (text..delimiter):gmatch("(.-)"..delimiter) do
table.insert(result, match)
end
return result
end
-- Helper function to format links
local function formatLinks(text, ...)
local args = {...}
for i = 1, #args, 2 do
local displayText = args[i]
local linkTarget = args[i + 1] or displayText
if linkTarget == displayText then
text = text:gsub(displayText, "[[".. displayText .. "]]")
else
text = text:gsub(displayText, "[[" .. linkTarget .. "|" .. displayText .. "]]")
end
end
return text
end
-- Function to get quest name
function p.getQuestName(frame)
local questId = frame.args[1]
local questInfo = questData[questId]
if questInfo then
local parts = splitText(questInfo, "/")
return formatLinks(parts[2], unpackParams(frame.args[2]))
end
return ""
end
-- Function to get quest description
function p.getQuestDescription(frame)
local questId = frame.args[1]
local questInfo = questData[questId]
if questInfo then
local parts = splitText(questInfo, "/")
return formatLinks(parts[3], unpackParams(frame.args[2]))
end
return ""
end
-- Function to get quest objective
function p.getQuestObjective(frame)
local questId = frame.args[1]
local questInfo = questData[questId]
if questInfo then
local parts = splitText(questInfo, "/")
return formatLinks(parts[4], unpackParams(frame.args[2]))
end
return ""
end
-- Function to get quest reward text with extra processing
function p.getQuestRewardText(frame)
local questId = frame.args[1]
local rewardText = ""
local questInfo = questData[questId]
if questInfo then
local parts = splitText(questInfo, "/")
if #parts == 10 then
rewardText = parts[#parts]
end
-- 清理 # 和 $ 字符
rewardText = rewardText:gsub("#", ""):gsub("%$[a-zA-Z]", ""):gsub("@", "<玩家名>")
end
return rewardText
end
-- Modified unpackParams function
function unpackParams(argString)
local result = {}
if argString then
local params = splitText(argString, ",")
for _, param in ipairs(params) do
table.insert(result, param)
end
end
return unpack(result)
end
return p