2

所以我有这个 Lua 脚本:

function dispTanks()
    mon.setCursorPos(offsetPos, 1)
    mon2.setCursorPos(offsetPos,1)

    for i=1, #machines do   -- RC Tanks
        --------------------------------------------
        if string.find(machines[i], "rcirontankvalvetile")
           or
           string.find(machines[i], "rcsteeltankvalvetile") then                        
            if peripheral.isPresent(machines[i]) then
                periph = peripheral.wrap(machines[i])

                fluidRaw, fluidName, fluidAmount, fluidCapacity, fluidID = marik.getTank(periph)                            

                if fluidName == nil then
                    -- does not display empty tanks
                elseif fluidName ~= nil then
                    mon2.setTextColor(tc)
                    x,y = mon2.getCursorPos()
                        mon2.setCursorPos(offsetPos, (y+1))
                        mon2.clearLine()
                    -- marik.cString(offsetPos,(y+1), tc, right, " ")
                    nameFL = split(marik.comma(fluidName), " ")
                    nameFL = nameFL[0]
                    mon2.write("Tank (" .. nameFL .. ") :  " .. marik.getBuckets(fluidAmount) .. " buckets") 
                end
             end
         end
     end
end

现在它在这一行给出了一个错误:

nameFL = split(marik.comma(fluidName), " ")

错误是:attempt to call nil

现在,我是 Lua 的初学者,这不是我的脚本,而是一个免费使用的脚本,我不知道如何解决这个问题。

编辑

所以在我添加拆分部分之前,这是脚本应该给出的结果:

在此处输入图像描述

问题是我想将名称( ardite.molten )更改为 Ardite,一位朋友说我需要使用 split,所以我添加了以下内容:

function firstToUpper(str)
    return (str:gsub("^%l", string.upper))
end

nameFL = split(fluidName, " ")
nameFL = nameFL[0]

并将 : 更改mon2.write("Tank (" .. marik.comma(fluidName) .. ") : " .. marik.comma(fluidAmount) .. " / " .. marik.comma(fluidCapacity) .. " mb (" .. marik.getBuckets(fluidAmount) .. " buckets)") 为 :mon2.write("Tank (" .. nameFL .. ") : " .. marik.getBuckets(fluidAmount) .. " buckets")

这给了我错误:http://puu.sh/a51QI/a848facf1b.png

4

2 回答 2

4

函数split不存在或comma函数marik

编辑:

我认为您尝试做的是在点之前获取所有内容而不是全名,对吗?

在这种情况下,您可以这样做:

替换这些行

nameFL = split(marik.comma(fluidName), " ")
nameFL = nameFL[0]

有了这个:

nameFL = marik.comma(fluidName):match("[^.]*")

您不需要为此拆分。它所做的是模式匹配,在这种情况下,它匹配到第一个点之前的所有内容

于 2014-07-10T11:47:04.180 回答
3

我不相信lua有内置split功能,需要自己定义。既然你说你是从外部来源得到这个脚本的,他们可能已经在别处定义了它。

尝试阅读此页面以获取一些想法: http: //lua-users.org/wiki/SplitJoin

如果确实定义了 split,那么唯一的另一种可能性是该comma函数未定义,在这种情况下,您需要在内部定义它marik

于 2014-07-10T11:50:51.773 回答