所以我有这个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的初学者,这不是我的脚本,而是免费使用脚本,我不知道如何解决这个问题。
修改
所以在我添加split部分之前,这是脚本应该给出的结果:
问题是我想将名称(ardite.molten)更改为Ardite,而朋友说我需要使用拆分,所以我添加了以下内容:
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")
给出了错误:
答案 0 :(得分:4)
split
功能不存在或comma
功能marik
编辑:
我认为您尝试做的是在点之前获取所有内容而不是全名吗?
在这种情况下,你可以这样做:
替换这些行
nameFL = split(marik.comma(fluidName), " ")
nameFL = nameFL[0]
用这个:
nameFL = marik.comma(fluidName):match("[^.]*")
你不需要为此分裂。这样做的是模式匹配,在这种情况下,它匹配到第一个点之前的所有内容
答案 1 :(得分:3)
我不相信lua有内置split
功能,需要自己定义。既然你说你从外部来源获得这个脚本,他们可能已经在别处定义了它。
尝试阅读此页面以获取一些想法:http://lua-users.org/wiki/SplitJoin
如果确实定义了split,那么唯一的另一种可能性是comma
函数未定义,在这种情况下,您需要在marik
中定义它。