卡厄思
梦
境
菜单
首页
回到首页
WIKI工具
全站样式
全站JS
修改导航栏
测试
沙盒
可视化管理器
战斗员管理器
卡牌管理器
伙伴管理器
装备管理器
词典管理器
图鉴
战斗员
伙伴
装备
怪物卡牌
中立卡牌
词典
小工具
配队模拟器
节奏榜生成器
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
登录
模块
查看“︁配队/卡牌”︁的源代码
←
模块:配队/卡牌
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
-- Module:配队卡牌 local p = {} -- 引用卡牌模块和显示模块 local cardModule = require('Module:卡牌') local cardDisplay = require('Module:卡牌/display') local getArgs = require('Module:Arguments').getArgs -- 解析卡牌数据并渲染小尺寸卡牌 local function renderSmallCard(moduleName, cardName) if not moduleName or moduleName == "" or not cardName or cardName == "" then return "" end -- 加载卡牌数据模块 local success, dataModule = pcall(require, 'Module:卡牌/' .. moduleName) if not success or not dataModule then return '<span style="color:red;">找不到模块: ' .. moduleName .. '</span>' end local moduleInfo = dataModule.info or {} local cardDataWrapper = dataModule[cardName] if not cardDataWrapper or not cardDataWrapper.base then return '<span style="color:red;">找不到卡牌: ' .. cardName .. '</span>' end -- 解析卡牌数据 local cardInfo = cardModule.parseCardData( cardDataWrapper.base, moduleName, cardName, moduleInfo, { isVariant = false } ) if not cardInfo then return '<span style="color:red;">无法解析卡牌数据</span>' end -- 生成唯一ID local cardId = "team-card-" .. moduleName .. "-" .. cardName .. "-" .. os.time() -- 计算词典显示 local dictDisplay = "" if cardInfo.dictTokens and type(cardInfo.dictTokens) == 'table' then local parts = {} for _, t in ipairs(cardInfo.dictTokens) do local value = mw.text.trim(t.value or '') if value ~= '' then if t.type == 'template' then table.insert(parts, '{{词典|' .. value .. '}}') elseif t.type == 'text' then table.insert(parts, value) end end end if #parts > 0 then local color = cardInfo.dictColor == 'green' and '#b5f651' or '#f2ba02' dictDisplay = '<span style="color: ' .. color .. '">[' .. table.concat(parts, '/') .. ']</span><br>' end end -- 使用卡牌显示模块渲染小卡牌 return cardDisplay.renderSmallCard(cardInfo, cardId, dictDisplay) end -- 主函数:显示战斗员的配队卡牌(直接传参版本) function p.main(frame) local args = getArgs(frame) local html = {} -- 开始容器 table.insert(html, '<div class="combatant-cards" style="margin: 20px 0;">') -- 标题 local title = args.title or '配队卡牌' table.insert(html, '<h3 style="margin-bottom: 15px;">' .. title .. '</h3>') -- 卡牌容器 table.insert(html, '<div style="display:flex;gap:15px;flex-wrap:wrap;align-items:flex-start;">') -- 按顺序处理卡牌 local cardOrder = { {param = '自我意识技能', label = '自我意识技能'}, {param = '起始卡牌1', label = '起始卡牌1'}, {param = '起始卡牌2', label = '起始卡牌2'}, {param = '起始卡牌3', label = '起始卡牌3'}, {param = '起始卡牌4', label = '起始卡牌4'}, {param = '独特卡牌1', label = '独特卡牌1'}, {param = '独特卡牌2', label = '独特卡牌2'}, {param = '独特卡牌3', label = '独特卡牌3'}, {param = '独特卡牌4', label = '独特卡牌4'} } for _, cardInfo in ipairs(cardOrder) do local cardValue = args[cardInfo.param] if cardValue and cardValue ~= "" then -- 解析卡牌值(格式:模块名|卡牌名 或 模块名/卡牌名) local moduleName, cardName -- 尝试用 | 分割 moduleName, cardName = string.match(tostring(cardValue), "^([^|]+)|(.+)$") -- 如果失败,尝试用 / 分割 if not moduleName then moduleName, cardName = string.match(tostring(cardValue), "^([^/]+)/(.+)$") end -- 如果还是失败,尝试用空格分割 if not moduleName then moduleName, cardName = string.match(tostring(cardValue), "^(%S+)%s+(.+)$") end if moduleName and cardName then -- 添加卡牌槽位 table.insert(html, '<div class="card-slot" style="display:flex;flex-direction:column;align-items:center;">') -- 添加标签(可选) if args.showLabels ~= "false" then table.insert(html, '<div style="font-size:12px;color:#666;margin-bottom:5px;">' .. cardInfo.label .. '</div>') end -- 渲染小尺寸卡牌 table.insert(html, renderSmallCard(moduleName, cardName)) table.insert(html, '</div>') else -- 如果无法解析,显示错误 table.insert(html, '<div class="card-slot" style="display:flex;flex-direction:column;align-items:center;">') if args.showLabels ~= "false" then table.insert(html, '<div style="font-size:12px;color:#666;margin-bottom:5px;">' .. cardInfo.label .. '</div>') end table.insert(html, '<span style="color:red;">无法解析: ' .. tostring(cardValue) .. '</span>') table.insert(html, '</div>') end end end table.insert(html, '</div>') -- 结束卡牌容器 table.insert(html, '</div>') -- 结束主容器 return table.concat(html, '') end -- 简化版本:直接显示卡牌列表 function p.show(frame) local args = getArgs(frame) local html = {} table.insert(html, '<div style="display:flex;gap:15px;flex-wrap:wrap;align-items:flex-start;">') -- 遍历所有参数 local i = 1 while args[i] do local cardValue = args[i] if cardValue and cardValue ~= "" then -- 解析卡牌值 local moduleName, cardName -- 尝试用 | 分割 moduleName, cardName = string.match(tostring(cardValue), "^([^|]+)|(.+)$") -- 如果失败,尝试用 / 分割 if not moduleName then moduleName, cardName = string.match(tostring(cardValue), "^([^/]+)/(.+)$") end if moduleName and cardName then table.insert(html, renderSmallCard(moduleName, cardName)) end end i = i + 1 end table.insert(html, '</div>') return table.concat(html, '') end -- 从SMW属性读取(需要在页面模板中使用) function p.fromSMW(frame) local args = getArgs(frame) local html = {} -- 获取当前页面 local title = mw.title.getCurrentTitle() local pageName = args[1] or title.text -- 尝试从frame获取SMW数据(在模板调用时) local cardData = { skill = args['自我意识技能'], start1 = args['起始卡牌_1'], start2 = args['起始卡牌_2'], start3 = args['起始卡牌_3'], start4 = args['起始卡牌_4'], unique1 = args['独特卡牌_1'], unique2 = args['独特卡牌_2'], unique3 = args['独特卡牌_3'], unique4 = args['独特卡牌_4'] } -- 构建参数 local newArgs = { title = args.title or (pageName .. ' - 配队卡牌'), showLabels = args.showLabels, ['自我意识技能'] = cardData.skill, ['起始卡牌1'] = cardData.start1, ['起始卡牌2'] = cardData.start2, ['起始卡牌3'] = cardData.start3, ['起始卡牌4'] = cardData.start4, ['独特卡牌1'] = cardData.unique1, ['独特卡牌2'] = cardData.unique2, ['独特卡牌3'] = cardData.unique3, ['独特卡牌4'] = cardData.unique4 } -- 创建新frame并调用main local newFrame = mw.getCurrentFrame():newChild{ args = newArgs } return p.main(newFrame) end return p
该页面使用的模板:
模块:配队/卡牌/doc
(
查看源代码
)
返回
模块:配队/卡牌
。