卡厄思
梦
境
菜单
首页
回到首页
WIKI工具
全站样式
全站JS
修改导航栏
测试
沙盒
可视化管理器
战斗员管理器
卡牌管理器
伙伴管理器
装备管理器
词典管理器
图鉴
战斗员
伙伴
装备
怪物卡牌
中立卡牌
词典
小工具
配队模拟器
节奏榜生成器
搜索
链入页面
相关更改
特殊页面
页面信息
最近更改
登录
模块
查看“︁战斗员图鉴”︁的源代码
←
模块:战斗员图鉴
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local p = {} local characterData = mw.loadData("模块:战斗员图鉴/筛选") function p.loadCharacterData(characterName) return characterData[characterName] end -- 使用更底层的方法加载模块,避免依赖追踪 function p.loadCharacterDataSilent(characterName) -- 首先检查页面是否存在 local title = mw.title.new("模块:战斗员/" .. characterName) if not title or not title.exists then return nil end -- 使用 pcall 保护调用,防止错误中断执行 local success, result = pcall(function() -- 尝试使用 mw.loadData 加载模块(不追踪依赖) 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 -- 如果 mw.loadData 失败,尝试使用 require(作为备选方案) local success2, result2 = pcall(function() -- 临时禁用依赖追踪(如果可能) local originalAddWarning = mw.addWarning mw.addWarning = function() end -- 临时禁用警告 local module = require("模块:战斗员/" .. characterName) -- 恢复警告函数 mw.addWarning = originalAddWarning return module end) if success2 and result2 and result2.data then return result2.data end return nil end -- 批量加载所有角色数据(静默方式) function p.loadAllCharacterDataSilent() local allData = {} local characters = p.getAllCharacters() for _, characterName in ipairs(characters) do local data = p.loadCharacterDataSilent(characterName) if data then allData[characterName] = data end end return allData 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.loadCharacterDataSilent(targetCharacter) if data then return p.renderCharacterCard(data) else return '<span class="error">错误:找不到角色数据 - ' .. targetCharacter .. '</span>' end end -- 一次性静默加载所有角色数据 local allCharacters = p.loadAllCharacterDataSilent() -- 显示所有角色 local result = {} local characters = p.getAllCharacters() for _, characterName in ipairs(characters) do local data = allCharacters[characterName] if data then table.insert(result, p.renderCharacterCard(data)) end end return table.concat(result, '') end -- 兼容性函数:保持原有的加载方式作为备选 function p.loadCharacterData(characterName) local success, characterModule = pcall(require, "模块:战斗员/" .. characterName) if success and characterModule and characterModule.data then return characterModule.data else return nil end end -- 直接调用函数(使用静默加载) function p.showCharacter(characterName) local data = p.loadCharacterDataSilent(characterName) return p.renderCharacterCard(data) end -- 获取角色数据函数(使用静默加载) function p.getCharacterData(characterName) return p.loadCharacterDataSilent(characterName) end -- 调试函数:检查加载状态 function p.debugLoadStatus(frame) local args = frame:getParent().args local characterName = args[1] or "蕾欧娜" local result = {} table.insert(result, "=== 调试信息 ===") -- 检查页面是否存在 local title = mw.title.new("模块:战斗员/" .. characterName) table.insert(result, "页面存在: " .. (title and title.exists and "是" or "否")) -- 尝试加载数据 local data = p.loadCharacterDataSilent(characterName) table.insert(result, "数据加载: " .. (data and "成功" or "失败")) if data then table.insert(result, "角色名称: " .. (data["名称"] or "未知")) table.insert(result, "稀有度: " .. (data["稀有度"] or "未知")) table.insert(result, "职业: " .. (data["职业"] or "未知")) table.insert(result, "属性: " .. (data["属性"] or "未知")) end return table.concat(result, "<br/>") end -- 高级静默加载函数(更深度避免依赖追踪) function p.loadCharacterDataDeepSilent(characterName) -- 方法1:尝试直接访问模块内容 local success1, result1 = pcall(function() local title = mw.title.new("模块:战斗员/" .. characterName) if not title or not title.exists then return nil end -- 使用 loadData 并忽略依赖 local oldGetTitle = mw.title.getCurrentTitle mw.title.getCurrentTitle = function() return mw.title.new("Special:BlankPage") -- 返回虚拟页面 end local moduleData = mw.loadData("模块:战斗员/" .. characterName) -- 恢复原函数 mw.title.getCurrentTitle = oldGetTitle return moduleData end) if success1 and result1 then return result1.data or result1 end -- 备选方法:常规静默加载 return p.loadCharacterDataSilent(characterName) end return p
该页面使用的模板:
模块:战斗员图鉴/doc
(
查看源代码
)
返回
模块:战斗员图鉴
。