我目前正在制作游戏的lua脚本需要帮助。
addhook("ms100", "MONSTERms100")
function MONSTERms100()
t = t + 1
if t % 100 == 0 then
while #MONSTERS < CONFIG.MAXMONSTERS do
local rand, spawnNo, mapName
while true do
rand = math.random(#CONFIG.MONSTERS)
mapName = CONFIG.MONSTERS[rand].spawn[map'name'] and map'name' or CONFIG.DEFAULTMAP
spawnNo = math.random(#CONFIG.MONSTERS[rand].spawn[mapName])
if math.random(0, 100) < CONFIG.MONSTERS[rand].spawnchance[mapName][spawnNo] then
break
end
LUA ERROR:sys / lua / waffle / monsters.lua:411:尝试获取字段长度'?' (零值) - &GT; sys / lua / waffle / monsters.lua:411:in function
我多次检查,找不到解决方案。之前没有发生错误,我没有在此文件中编辑任何内容。它是在我更新游戏时开始的。所以我想要的是控制怪物的产卵,但它们现在还没有产卵。这是我第一次寻求帮助,对不起,如果我忘记了一些细节。谢谢你,如果你试着为我解决这个问题,因为我很蠢。答案 0 :(得分:0)
错误消息
sys / lua / waffle / monsters.lua:411:尝试获取字段长度'?' (一个 零值) - &gt; sys / lua / waffle / monsters.lua:411:in function
告诉您,您正试图获取文件monsters.lua第411行中nil
值的长度。
while #MONSTERS < CONFIG.MAXMONSTERS do
#
是length operator
来自Lua Reference Manual 5.3 - 3.4.7 The Length Operator
应用于表格的长度运算符会返回该表格中的边框。 表t中的边界是满足该表格的任何自然数 以下条件:
(border == 0 or t[border] ~= nil) and t[border + 1] == nil
换句话说,边框是表中非零的任何(自然)索引 value后跟一个零值(或者当索引1为零时为零)。只有一个边框的表称为序列。例如, 表
{10, 20, 30, 40, 50}
是一个序列,因为它只有一个 边界(5)。表{10, 20, 30, nil, 50}
有两个边框(3和5), 因此它不是一个序列。表{nil, 20, 30, nil, nil, 60, nil}
有三个边框(0,3和6),所以它不是一个序列, 太。表{}
是带边框0的序列。注意非自然 键不会干扰表是否是序列。当
t
是序列时,#t
返回其唯一的边框,对应于 直观的序列长度概念。当t不是 序列,#t
可以返回任何边框。 (确切的一个取决于 表的内部表示的细节,反过来可以 取决于表的填充方式以及表的内存地址 非数字键。)表的长度的计算具有保证的最差时间 O(log n),其中n是表中最大的自然键。
所以简单来说,MONSTERS
尚未定义。所以你无法得到它的元素数量。当您使用CONFIG.MONSTERS
后几行时,我认为使用#CONFIG.MONSTERS
可以解决问题。鉴于这是你真正想要使用的表。但是,如果不知道你的其余代码,我只能猜测。