申明:本网站数据、源代码、图片来源于Grounded GG Wiki;催更、勘误请私信站长 清水晗。本Wiki可能有部分游戏道具名称与游戏内显示不一致,我们制作了翻译差异对照表供玩家参考。

全站通知:

模块:掉落表

来自禁闭求生WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

注意

由于模块使用的lua语言编辑,没有编程基础的请不要对模块内代码进行编辑
如需修改样式和逻辑调整请联系站长或者我。
请仔细学习下方 示例 后再进行使用,否则容易造成各种奇怪的问题

smw

因为set属性值分割了之后会把重复的数据合并 所以我建议set的时候把属性和数据分成两个,一个用于查询筛选,一个用于生成展示

|掉落表_属性={{{掉落表|}}}|+sep=,     <!--用于查询,获取到的属性值,因为是用逗号隔开的所以要“|+sep=,”进行分隔符声明才能把属性值分开-->
|掉落表_数据={{{掉落表|}}}     <!--用于生成-->
物品详情中ask[[掉落表_属性::物品名]]即可获得所有掉落该物品的生物

示例

func_5使用效果示例

演示1(表格外壳可自行绘制):

被感染的部位.png 被感染的部位 - 2 100% -
被感染的部位.png 被感染的部位 x2 1 75% -
被感染的部位.png 被感染的部位 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"}}))