在数组中查找一个空插槽并使用它



所以我在Squirrel中遇到了一个问题,我已经处理了一段时间。我想创建一个遍历数组中所有内容的东西,例如:

local array = [1, 2, 3, -1, 5, -1, 7, -1];

寻找那些-1的,我只想使用其中一个,第一个出现的(在这种情况下,它在3到5之间)。

在我的脚本中,当有人破坏某个对象时,它会将该对象的id设置为-1,而不是一个正则数字,因为否则它在尝试使用该对象时只会出错。真的不知道我是否在解释这件事。

另一个例子是,当玩家连接到某个游戏服务器时,我们连接了id为0、1、3和4的玩家,所以当下一个玩家连接时,他们得到的id为2。这就是我对数组的追求。

我试过几种方法,唯一最接近的是:

for(local i=1; i < Array.len(); i++){
    if(Array[i].id != -1){
      count++;
    } else {
      count = i;
    }
}

但这个的问题是,它只接受最后一个ID并替换它,所以我们有对象0、1、2和3如果我想销毁3个并创建一个新的,没问题。如果我销毁0、1或2,然后创建一个新的插槽,它就不会占用那个插槽,而是选择数字4,这样就不起作用了。

谢谢你的阅读,希望任何人都能帮助我。


已解决:
这真的很简单,对于其他有同样问题的人来说,这就是我所做的。现在就跟上,这可能会变得非常棘手
我所做的是在else语句中添加了一个"break;",代码如下:

for(local i=1; i < Array.len(); i++){
    if(Array[i].id != -1){
        count++;
    } else {
        count = i;
        break; // THIS
    }
}

是的,我后来确实打了自己的头。。。

array.find(-1)

来自文件:

对数组中的值执行线性搜索。返回索引如果发现该值为null,则为。

相关内容

  • 没有找到相关文章

最新更新