模块:掉落表
注意
由于模块使用的lua语言编辑,没有编程基础的请不要对模块内代码进行编辑
如需修改样式和逻辑调整请联系站长或者我。
请仔细学习下方 示例 后再进行使用,否则容易造成各种奇怪的问题
smw
因为set属性值分割了之后会把重复的数据合并 所以我建议set的时候把属性和数据分成两个,一个用于查询筛选,一个用于生成展示
|掉落表_属性={{{掉落表|}}}|+sep=, <!--用于查询,获取到的属性值,因为是用逗号隔开的所以要“|+sep=,”进行分隔符声明才能把属性值分开-->
|掉落表_数据={{{掉落表|}}} <!--用于生成-->
物品详情中ask[[掉落表_属性::物品名]]即可获得所有掉落该物品的生物
示例
func_5使用效果示例
演示1(表格外壳可自行绘制):
| - | 2 | 100% | - | |
| x2 | 1 | 75% | - | |
| x17 | 1 | 1% | 条件!!! | |
| 文件:测试.png 测试 | - | 1 | 100% | - |
| 文件:测试.png 测试 | - | 1 | 100% | - |
| 文件:测试.png 测试 | - | 1 | 100% | - |
演示2(带外壳演示):模板:Mz测试专用2
func_5使用代码示例
基本格式:[①,②,③,④,⑤]
①:名称
②:乘数,没有填“-”
③:数量
④:掉率
⑤:条件,没有填“-”
所以下方演示的格式可以看成
被感染的部位,-,2,100%,-,
被感染的部位,x2,1,75%,-,
被感染的部位,x17,1,1%,条件!!!,
测试,-,1,100%,-,
测试,-,1,100%,-,
测试,-,1,100%,-
演示(表格外壳可自行绘制):
{|class='wikitable'
|-
{{#invoke: 掉落表|func_5|被感染的部位,-,2,100%,-,被感染的部位,x2,1,75%,-,被感染的部位,x17,1,1%,-,测试,-,1,100%,-,测试,-,1,100%,-,测试,-,1,100%,-}}
|}
local p = {}
--
function p.func_5(frame) --{名称,乘数,数量,掉率,条件}
local inputStr = frame.args[1] or "" -- 获取原始参数
-- 分割字符串为数组
local arr = {}
for item in string.gmatch(inputStr, "[^,]+") do
item = item:match("^%s*(.-)%s*$") -- 去除前后空格
table.insert(arr, item)
end
-- 调试:打印分割后的数组
--for i, v in ipairs(arr) do
-- mw.log("arr[" .. i .. "] = " .. tostring(v))
--end
local result = {}
local i = 1
local totalElements = #arr
while i <= totalElements do
local itemName = arr[i] --名称
local itemMultiplier = arr[i + 1] --乘数
local itemQuantity = arr[i + 2] --数量
local itemDropRate = arr[i + 3] --掉率
local itemCondition = arr[i + 4] --条件
local requiredLength = i + 4 -- 计算数据完整性
if requiredLength > totalElements then -- 数据不完整,返回错误信息
return "错误:数据不完整,期望长度: " .. requiredLength .. ",实际长度: " .. totalElements
end
-- 保存到结果中
if not result then
result = {}
end
if itemName and itemQuantity then
table.insert(result, {
name = itemName,
multiplier = itemMultiplier,
quantity = itemQuantity,
droprate = itemDropRate,
condition = itemCondition
})
end
i = i + 5 -- 移动到下一个区块
end
return p.formatOutput_5(result) -- 格式化输出
end
function p.formatOutput_5(result)
local output = ""
for _, item in ipairs(result) do
output = output.."\n|style=\"text-align:left;\"|[[File:"..item.name..".png|25px]] [["..item.name.."]]".."||"..item.multiplier.."||"..item.quantity.."||"..item.droprate.."||"..item.condition.."\n|-"
end
return output
end
--
return p
-- DevControl: mw.log(p['func_5']({ args={"1,2,3,4,5,1,2,3,4,5"}}))

沪公网安备 31011002002714 号