全站通知:

模块:Quest/GenerateNameMap

来自星露谷物语维基
跳到导航 跳到搜索
[ 创建 | 刷新 ]文档页面
当前模块文档缺失,需要扩充。
-- Module:Quests/GenerateNameMap (临时调试用)
local p = {}

function p.generateMap(frame)
    local questData = mw.loadData("Module:Quests/data")
    
    -- 存储名称出现次数
    local nameCount = {}
    -- 存储结果
    local result = {}
    
    -- 第一遍:统计重名
    for id, info in pairs(questData) do
        local parts = {}
        for match in (info.."/"):gmatch("(.-)/") do
            table.insert(parts, match)
        end
        local name = parts[2] or ""
        
        if name and name ~= "" then
            nameCount[name] = (nameCount[name] or 0) + 1
        end
    end
    
    -- 存储每个名称的当前序号
    local currentCount = {}
    
    -- 第二遍:生成映射(按ID排序)
    local sortedIds = {}
    for id in pairs(questData) do
        table.insert(sortedIds, id)
    end
    table.sort(sortedIds, function(a, b) return tonumber(a) < tonumber(b) end)
    
    for _, id in ipairs(sortedIds) do
        local info = questData[id]
        local parts = {}
        for match in (info.."/"):gmatch("(.-)/") do
            table.insert(parts, match)
        end
        local name = parts[2] or ""
        
        if name and name ~= "" then
            local finalName = name
            
            -- 如果有重名,添加序号
            if nameCount[name] > 1 then
                currentCount[name] = (currentCount[name] or 0) + 1
                finalName = name .. currentCount[name]
            end
            
            table.insert(result, string.format('    ["%s"] = "%s",', 
                finalName:gsub('"', '\\"'), id))
        end
    end
    
    return '<pre>local questNameToId = {\n' .. table.concat(result, '\n') .. '\n}</pre>'
end

--[[
    ["神秘的齐1"] = "2",  -- 彩虹贝壳
    ["神秘的齐2"] = "3",  -- 甜菜
    ["神秘的齐3"] = "4",  -- 太阳精华
    ["神秘的齐4"] = "5",  -- 木材堆
    ["入门1"] = "15",  -- 击杀史莱姆
    ["入门2"] = "16",  -- 进入探险家公会 
    ["考古发现1"] = "23",  -- 去博物馆
    ["考古发现2"] = "24",  -- 捐赠古物
    ["……1"] = "128",  -- 阿比盖尔项链
    ["……2"] = "129",  -- 卡洛琳项链
--]]

return p