事件:修订间差异
来自卡厄思梦境WIKI
创建页面,内容为“local p = {} local eventData = mw.loadData('模块:事件/data') function p.main(frame) local args = frame:getParent().args local eventName = args[1] or args.name if not eventName then return "错误:未指定事件名称" end local event = eventData[eventName] if not event then return "错误:找不到事件 '" .. eventName .. "'" end -- 构建HTML local html = mw.html.create('div')…” |
无编辑摘要 |
||
| 第3行: | 第3行: | ||
function p.main(frame) | function p.main(frame) | ||
-- 直接从frame.args获取参数(用于#invoke调用) | |||
local eventName = args[1] or args.name | local eventName = frame.args[1] or frame.args.name | ||
if not eventName then | -- 如果没有找到,尝试从父frame获取(用于模板调用) | ||
if not eventName and frame:getParent() then | |||
local parentArgs = frame:getParent().args | |||
eventName = parentArgs[1] or parentArgs.name | |||
end | |||
if not eventName or eventName == '' then | |||
return "错误:未指定事件名称" | return "错误:未指定事件名称" | ||
end | end | ||
| 第89行: | 第95行: | ||
:wikitext(event.option[i]) | :wikitext(event.option[i]) | ||
-- | -- 效果文本(默认隐藏) | ||
optionDiv:tag('div') | optionDiv:tag('div') | ||
:addClass('option-effect') | :addClass('option-effect') | ||
| 第102行: | 第108行: | ||
end | end | ||
end | end | ||
return tostring(html) | return tostring(html) | ||
2025年10月18日 (六) 11:21的版本
此模块的文档可以在模块:事件/doc创建
local p = {}
local eventData = mw.loadData('模块:事件/data')
function p.main(frame)
-- 直接从frame.args获取参数(用于#invoke调用)
local eventName = frame.args[1] or frame.args.name
-- 如果没有找到,尝试从父frame获取(用于模板调用)
if not eventName and frame:getParent() then
local parentArgs = frame:getParent().args
eventName = parentArgs[1] or parentArgs.name
end
if not eventName or eventName == '' then
return "错误:未指定事件名称"
end
local event = eventData[eventName]
if not event then
return "错误:找不到事件 '" .. eventName .. "'"
end
-- 构建HTML
local html = mw.html.create('div')
:addClass('event-container')
:css('position', 'relative')
:css('width', '375px')
:css('height', '270px')
-- 底部背景
html:tag('div')
:addClass('event-bottom-bg')
:css('position', 'absolute')
:css('top', '160px')
:css('left', '5px')
:css('width', '365px')
:css('height', '120px')
:css('background-color', '#343434')
:css('border-radius', '0px 0px 8px 8px')
-- 图片
local imageFile = 'cc_' .. event.id .. '.png'
html:tag('div')
:css('position', 'absolute')
:css('top', '0px')
:css('left', '0px')
:wikitext('[[File:' .. imageFile .. '|link=]]')
-- 标题背景
html:tag('div')
:css('position', 'absolute')
:css('top', '135px')
:css('left', '5px')
:css('width', '365px')
:css('height', '30px')
:css('background-color', 'rgba(0,0,0,0.3)')
:css('border-radius', '0px 0px 8px 8px')
-- 标题文字
html:tag('div')
:addClass('event-title')
:css('position', 'absolute')
:css('top', '140px')
:css('left', '5px')
:css('width', '365px')
:css('height', '30px')
:css('color', 'white')
:css('text-align', 'center')
:wikitext(eventName)
-- 选项
local optionTop = 170
for i = 1, 3 do
if event.option[i] then
local optionDiv = html:tag('div')
:addClass('event-option')
:attr('data-option-id', tostring(i))
:attr('data-event-name', eventName)
:css('position', 'absolute')
:css('top', optionTop .. 'px')
:css('left', '10px')
:css('width', '355px')
:css('min-height', '30px')
:css('color', 'white')
:css('text-align', 'left')
:css('padding', '5px 0px 5px 10px')
:css('background-color', 'rgba(255,255,255,0.3)')
:css('border-radius', '4px')
:css('cursor', 'pointer')
:css('transition', 'background-color 0.3s')
-- 选项文本
optionDiv:tag('div')
:addClass('option-text')
:wikitext(event.option[i])
-- 效果文本(默认隐藏)
optionDiv:tag('div')
:addClass('option-effect')
:css('display', 'none')
:css('margin-top', '5px')
:css('padding-top', '5px')
:css('border-top', '1px solid rgba(255,255,255,0.5)')
:css('font-size', '0.9em')
:wikitext(frame:preprocess(event.effect[i]))
optionTop = optionTop + 35
end
end
return tostring(html)
end
return p