卡厄思
梦
境
菜单
首页
回到首页
WIKI工具
全站样式
全站JS
修改导航栏
测试
沙盒
可视化管理器
战斗员管理器
卡牌管理器
伙伴管理器
装备管理器
词典管理器
图鉴
战斗员
伙伴
装备
怪物卡牌
中立卡牌
词典
小工具
配队模拟器
节奏榜生成器
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
登录
模块
查看“︁战斗员图鉴”︁的源代码
←
模块:战斗员图鉴
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} -- 使用 mw.loadData 从筛选模块获取数据 local characterData = mw.loadData("模块:战斗员图鉴/筛选") -- 获取所有角色名称的函数(从筛选模块数据中获取) function p.getAllCharacters() local characters = {} for name, _ in pairs(characterData) do table.insert(characters, name) end -- 按名称排序 table.sort(characters) return characters end -- 从筛选模块加载角色数据 function p.loadCharacterData(characterName) return characterData[characterName] end -- 使用更底层的方法加载模块,避免依赖追踪(保留作为备选方案) function p.loadCharacterDataSilent(characterName) -- 首先尝试从筛选模块获取数据 local data = characterData[characterName] if data then return data end -- 如果筛选模块中没有,再尝试从单独的角色模块加载 local title = mw.title.new("模块:战斗员/" .. characterName) if not title or not title.exists then return nil end local success, result = pcall(function() return mw.loadData("模块:战斗员/" .. characterName) end) if success and result then if result.data then return result.data elseif type(result) == "table" then return result end end -- 最后尝试 require local success2, result2 = pcall(function() local module = require("模块:战斗员/" .. characterName) return module end) if success2 and result2 and result2.data then return result2.data end return nil end -- 批量加载所有角色数据(现在主要从筛选模块获取) function p.loadAllCharacterDataSilent() -- 直接返回筛选模块的所有数据 return characterData end -- 获取稀有度对应的CSS类 function p.getRarityClass(rarity) return "rarity-" .. (rarity or "1") end -- 获取职业图标文件名 function p.getJobIcon(job) if job then return "icon_职业_" .. job .. ".png" else return "icon_职业_未知.png" end end -- 获取属性图标文件名 function p.getAttributeIcon(attribute) if attribute then return "icon_属性_" .. attribute .. ".png" else return "icon_属性_未知.png" end end -- 获取角色立绘文件名 function p.getCharacterImage(characterName) return "战斗员图鉴_" .. characterName .. ".png" end -- 渲染单个角色卡片 function p.renderCharacterCard(data) if not data then return "" end local name = data["名称"] or "未知" local rarity = data["稀有度"] or "1" local job = data["职业"] or "" local attribute = data["属性"] or "" local jobIcon = p.getJobIcon(job) local attributeIcon = p.getAttributeIcon(attribute) local characterImage = p.getCharacterImage(name) local rarityClass = p.getRarityClass(rarity) -- 在开始添加HTML注释来"连接"到前一个元素 local html = '<!--\n--><div class="character-card" style="display: inline-block; vertical-align: top; position: relative; width: 150px; height: 280px; overflow: hidden; margin: 5px;">' -- 背景 html = html .. '<div style="position: absolute; top: 0px; left: 0px; width: 150px; height: 280px; background-color: #2a2f40; border-radius: 0px 25px 0px 0px; z-index: 0;"></div>' -- 职业图标 html = html .. '<div style="position: absolute; top: 5px; left: 5px; z-index: 1;">[[File:' .. jobIcon .. '|25px|link=]]</div>' -- 属性图标 html = html .. '<div style="position: absolute; top: 35px; left: 5px; z-index: 1;">[[File:' .. attributeIcon .. '|25px|link=]]</div>' -- 角色立绘 html = html .. '<div style="position: absolute; bottom: 0px; left: 0px; z-index: 1;">[[File:' .. characterImage .. '|150px|link=]]</div>' -- 角色名称背景 html = html .. '<div style="position: absolute; bottom: 5px; left: 0px; width: 150px; height: 30px; background-color: rgba(0, 0, 0, 0.5); color: white; text-align: right; padding-right: 8px; padding-top: 3px; z-index: 2;">' .. name .. '</div>' -- 稀有度样式 html = html .. '<div class="' .. rarityClass .. '" style="position: absolute; left: 0px; bottom: 0px; z-index: 2;"></div>' -- 顶层蒙版 html = html .. '<div style="position: absolute; left: 0px; bottom: 0px; z-index: 99;">[[File:战斗员图鉴_顶层蒙版.png|link=]]</div>' html = html .. '</div><!--\n-->' return html end -- 主函数 function p.show(frame) local args = frame:getParent().args local targetCharacter = args[1] or args["角色"] or "" -- 如果指定了角色名,只显示该角色 if targetCharacter ~= "" then local data = p.loadCharacterData(targetCharacter) if data then return p.renderCharacterCard(data) else return '<span class="error">错误:找不到角色数据 - ' .. targetCharacter .. '</span>' end end -- 显示所有角色 local result = {} local characters = p.getAllCharacters() for _, characterName in ipairs(characters) do local data = p.loadCharacterData(characterName) if data then table.insert(result, p.renderCharacterCard(data)) end end return table.concat(result, '') end -- 直接调用函数 function p.showCharacter(characterName) local data = p.loadCharacterData(characterName) return p.renderCharacterCard(data) end -- 获取角色数据函数 function p.getCharacterData(characterName) return p.loadCharacterData(characterName) end -- 调试函数:显示筛选模块中的所有角色 function p.debugShowAllCharacters(frame) local result = {} table.insert(result, "=== 筛选模块中的角色列表 ===") local characters = p.getAllCharacters() for i, name in ipairs(characters) do table.insert(result, i .. ". " .. name) end return table.concat(result, "<br/>") end -- 调试函数:检查特定角色的数据 function p.debugShowCharacterData(frame) local args = frame:getParent().args local characterName = args[1] or "蕾欧娜" local data = p.loadCharacterData(characterName) if not data then return "角色 " .. characterName .. " 的数据不存在" end local result = {} table.insert(result, "=== " .. characterName .. " 的数据 ===") for key, value in pairs(data) do table.insert(result, key .. ": " .. tostring(value)) end return table.concat(result, "<br/>") end return p
该页面使用的模板:
模块:战斗员图鉴/doc
(
查看源代码
)
返回
模块:战斗员图鉴
。