由于我无法解决的错误,怪物不会产卵

时间:2017-12-10 23:49:04

标签: lua

我目前正在制作游戏的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

我多次检查,找不到解决方案。之前没有发生错误,我没有在此文件中编辑任何内容。它是在我更新游戏时开始的。所以我想要的是控制怪物的产卵,但它们现在还没有产卵。这是我第一次寻求帮助,对不起,如果我忘记了一些细节。谢谢你,如果你试着为我解决这个问题,因为我很蠢。

1 个答案:

答案 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可以解决问题。鉴于这是你真正想要使用的表。但是,如果不知道你的其余代码,我只能猜测。