WIKI公告栏
欢迎各位引航者访问卡拉彼丘WIKI,由于游客访问页面会有一定的页面旧版缓存,建议你登陆B站账号进行浏览,如果您觉得本WIKI有帮助到你,欢迎推荐给身边的引航者。
全站通知:

模块:皮肤

来自卡拉彼丘WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块用于输出角色时装数据和武器皮肤数据,一般用于角色时装筛选页面武器皮肤筛选页面

武器皮肤Data格式:

["武器皮肤名"] = {
WeaponSkinID:武器皮肤ID,对应图片文件名后面的ID数字
WeaponSkinName:武器皮肤名
Weapon:武器名
WeaponSkinQuality:皮肤品质
WeaponSkinGet:获得方式,多个获得方式请用<br />间隔
WeaponSkinJingHe:晶核价格
WeaponSkinJiXian:基弦价格
WeaponSkinLocalizedString:皮肤介绍
WeaponSkinFile:图片文件名
WeaponSkinDesc:备注

local p = {}

------------角色时装筛选页------------
p["角色时装筛选"] = function(frame)
  local data = mw.loadData("Module:皮肤/RoleSkinData")
  local html = mw.html.create()
  local resultList = {}

  for roleskin, skins in pairs(data) do
    if skins.File ~= "" then
      local SkinGet_data = skins.Get ~= nil and mw.ustring.gsub(skins.Get, "<br />", ",") or skins.Get
      local SkinJingHe_data = skins.JingHe == "" and SkinJingHe_data == "无" or skins.JingHe
      local SkinJiXian_data = skins.JiXian == "" and SkinJiXian_data == "无" or skins.JiXian
      local SkinJingHe_value = skins.JingHe ~= "" and skins.JingHe .. "[[文件:图标-小巴布洛晶核.png|15px|link=]]" or skins.JingHe
      local SkinJiXian_value = skins.JiXian ~= "" and skins.JiXian .. "[[文件:图标-小基弦.png|15px|link=]]" or skins.JiXian
      local skinssHTML = html
          :tag('tr'):addClass('divsort'):attr('data-param1', skins.Role):attr('data-param2', skins.Quality):attr(
            'data-param3', SkinGet_data):attr('data-param4', SkinJingHe_data):attr('data-param5', SkinJiXian_data)
          :tag('td'):cssText('padding: 2px;font-size: 15px'):wikitext("[[File:" ..
            skins.File .. "|200px]]<br />'''[[" .. skins.Role .. "]]:" .. roleskin .. "'''"):done()
          :tag('td'):cssText('padding: 2px'):wikitext(frame:expandTemplate { title = '稀有度标签', args = { skins.Quality } })
          :done()
          :tag('td'):cssText('width: 10%;padding: 2px'):wikitext(skins.Get):done()
          :tag('td'):cssText('width: 8%;padding: 2px'):wikitext(SkinJingHe_value):done()
          :tag('td'):cssText('width: 8%;padding: 2px'):wikitext(SkinJiXian_value):done()
          :tag('td'):addClass('visible-md visible-sm visible-lg'):cssText('width: 40%;padding: 2px'):wikitext(skins
            .LocalizedString):done()
          :tag('td'):addClass('visible-md visible-sm visible-lg'):cssText('width: 15%;padding: 2px'):wikitext(skins.Desc)
          :done()
      table.insert(resultList, tostring(skinssHTML))
    end
  end
  local result = table.concat(resultList)
  return result
end


------------角色页角色时装------------
p["角色时装"] = function(frame)
  local a = require("Module:ACandy")
  local data = mw.loadData("Module:皮肤/RoleSkinData")

  local characterName = frame.args[1]
  local skinsByQuality = {
    ["初始"] = {}, ["私服"] = {}, ["传说"] = {}, ["完美"] = {}, ["卓越"] = {},
  }

  for skinName, skinData in pairs(data) do
    local skinsOfThisQuality = skinsByQuality[skinData.Quality]
    if skinsOfThisQuality and skinData.Role == characterName then
      skinsOfThisQuality[#skinsOfThisQuality + 1] = skinName
    end
  end

  local tabLabels, tabBodies = {}, {}
  for _, quality in ipairs({ "初始", "私服", "传说", "完美", "卓越" }) do
    local len = #tabLabels
    for i, skinName in ipairs(skinsByQuality[quality]) do
      tabLabels[len + i] = a.li { class = "bili-list-style",
        a.span { class = "tab-panel", style = "font-size:14px;width:100%",
          a.Raw(frame:expandTemplate {
            title = "稀有度标签",
            args = { p.getRoleSkinQuality { args = { skinName } } },
          }),
          a.br,
          skinName,
        }
      }
      tabBodies[len + i] = a.div { class = "resp-tab-content",
        "[[File:", characterName, "时装-", skinName, ".png|500px|center|link=|class=radius5]]",
      }
    end
  end
  if tabLabels[1] then
    tabLabels[1].class = tabLabels[1].class .. " active"
    tabBodies[1].style = "display:block"
  end

  return a.h2 "角色时装",
      a.div { class = "resp-tabs", style = "border-spacing:0",
        a.ul { class = "resp-tabs-list clearfix", style = "margin-left:0;margin-top:0",
          tabLabels,
        },
        a.div { class = "resp-tabs-container", style = "margin-bottom: 5px;",
          tabBodies,
        },
      }, a.br
end

function p.getRoleSkinQuality(frame)
  local data = mw.loadData("Module:皮肤/RoleSkinData")
  local roleName = frame.args[1]
  local result = "初始"
  for RoleSkin, skinInfo in pairs(data) do
    if RoleSkin == roleName then
      result = skinInfo.Quality
      break
    end
  end
  return result
end


------------意识重构角色时装表------------
p["意识重构时装筛选"] = function(frame)
  local data = mw.loadData("Module:皮肤/RoleSkinData")
  local skinget = frame.args[1]
  local html = mw.html.create()
  local resultList = {}

  for skin, skinData in pairs(data) do
    if string.find(skinData.Get, skinget, 1, true) then
      local roleskinsHTML = html
          :tag('tr')
          :tag('td'):cssText('font-size: 16px'):wikitext("[[File:" ..
          skinData.File .. "|150px|link=]]<br />'''[[" .. skinData.Role .. "]]:" .. skin .. "'''"):done()
          :tag('td'):wikitext(frame:expandTemplate { title = '稀有度标签', args = { skinData.Quality } }):done()
          :tag('td'):cssText('width: 70%'):wikitext(skinData.LocalizedString):done()
          :done()
    end
  end
  table.insert(resultList, tostring(html:done()))
  local result = table.concat(resultList)
  return result
end


------------武器页武器外观------------
p["武器外观"] = function(frame)
  local a = require("Module:ACandy")
  local data = mw.loadData("Module:皮肤/WeaponSkinData")

  local WeaponName = frame.args[1]
  local skinsByQuality = {
    ["传说"] = {}, ["完美"] = {}, ["卓越"] = {}, ["精致"] = {},
  }

  for skinName, skinData in pairs(data) do
    local skinsOfThisQuality = skinsByQuality[skinData.Quality]
    if skinsOfThisQuality and skinData.Weapon == WeaponName then
      skinsOfThisQuality[#skinsOfThisQuality + 1] = skinName
    end
  end

  local tabLabels, tabBodies = {}, {}
  for _, quality in ipairs({ "传说", "完美", "卓越", "精致" }) do
    local len = #tabLabels
    for i, skinName in ipairs(skinsByQuality[quality]) do
      tabLabels[len + i] = a.li { class = "bili-list-style",
        a.span { class = "tab-panel", style = "font-size:14px;width:100%",
          a.Raw(frame:expandTemplate {
            title = "稀有度标签",
            args = { p.getQuality { args = { skinName } } },
          }),
          a.br,
          skinName,
        }
      }
      tabBodies[len + i] = a.div { class = "resp-tab-content",
        "[[File:", skinName, ".png|500px|center|link=|class=radius5]]",
      }
    end
  end
  if tabLabels[1] then
    tabLabels[1].class = tabLabels[1].class .. " active"
    tabBodies[1].style = "display:block"
  end

  return a.div { class = "resp-tabs", style = "border-spacing:0",
        a.ul { class = "resp-tabs-list clearfix", style = "margin-left:0;margin-top:0",
          tabLabels,
        },
        a.div { class = "resp-tabs-container", style = "margin-bottom: 5px;",
          tabBodies,
        },
      }
end

function p.getQuality(frame)
  local data = mw.loadData("Module:皮肤/WeaponSkinData")
  local WeaponSkinName = frame.args[1]
  local result = "初始"
  for WeaponSkin, skinInfo in pairs(data) do
    if WeaponSkin == WeaponSkinName then
      result = skinInfo.Quality
      break
    end
  end
  return result
end


------------武器皮肤筛选页------------
p["武器皮肤筛选"] = function(frame)
  local data = mw.loadData("Module:皮肤/WeaponSkinData")
  local html = mw.html.create()
  local resultList = {}

  for WeaponSkin, skins in pairs(data) do
    local SkinGet_data = mw.ustring.gsub(skins.Get, "<br />", ",")
    local SkinJingHe_data = skins.JingHe == "" and SkinJingHe_data == "无" or skins.JingHe
    local SkinJiXian_data = skins.JiXian == "" and SkinJiXian_data == "无" or skins.JiXian
    local SkinJingHe_value = skins.JingHe ~= "" and skins.JingHe .. "[[文件:图标-小巴布洛晶核.png|15px|link=]]" or skins.JingHe
    local SkinJiXian_value = skins.JiXian ~= "" and skins.JiXian .. "[[文件:图标-小基弦.png|15px|link=]]" or skins.JiXian
    local skinssHTML = html
        :tag('tr'):addClass('divsort'):attr('data-param1', skins.Weapon):attr('data-param2', skins.Quality):attr(
          'data-param3', SkinGet_data):attr('data-param4', SkinJingHe_data):attr('data-param5', SkinJiXian_data)
        :tag('td'):cssText('padding: 2px;font-size: 15px'):wikitext("[[File:" ..
          skins.File .. "|200px]]<br />'''" .. WeaponSkin .. "'''"):done()
        :tag('td'):cssText('padding: 2px'):wikitext(frame:expandTemplate { title = '稀有度标签', args = { skins.Quality } })
        :done()
        :tag('td'):cssText('width: 10%;padding: 2px'):wikitext(skins.Get):done()
        :tag('td'):cssText('width: 8%;padding: 2px'):wikitext(SkinJingHe_value):done()
        :tag('td'):cssText('width: 8%;padding: 2px'):wikitext(SkinJiXian_value):done()
        :tag('td'):addClass('visible-md visible-sm visible-lg'):cssText('width: 40%;padding: 2px'):wikitext(skins
          .LocalizedString):done()
        :tag('td'):addClass('visible-md visible-sm visible-lg'):cssText('width: 15%;padding: 2px'):wikitext(skins.Desc)
        :done()
    table.insert(resultList, tostring(skinssHTML))
  end
  local result = table.concat(resultList)
  return result
end


------------意识重构武器皮肤表------------
p["意识重构皮肤筛选"] = function(frame)
  local data = mw.loadData("Module:皮肤/WeaponSkinData")
  local skinget = frame.args[1]
  local html = mw.html.create()
  local resultList = {}

  for skin, skinData in pairs(data) do
    if string.find(skinData.Get, skinget, 1, true) then
      local skinssHTML = html
          :tag('tr')
          :tag('td'):cssText('font-size: 16px'):wikitext("[[File:" .. skinData.File ..
            "|200px]]<br />'''" .. skin .. "'''"):done()
          :tag('td'):wikitext(frame:expandTemplate { title = '稀有度标签', args = { skinData.Quality } }):done()
          :tag('td'):cssText('width: 70%'):wikitext(skinData.LocalizedString):done()
          :done()
    end
  end
  table.insert(resultList, tostring(html:done()))
  local result = table.concat(resultList)
  return result
end

return p