2013-08-07 4 views
1

Так что у меня есть проблема, с которой я некоторое время возился с Белки. Я хочу, чтобы создать что-то, что проходит через все внутри массива, например:Поиск пустого слота в массиве и его использование

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

и искать те, которые являются -1, я хочу использовать только один из них, тот, который приходит первым (который в этот случай составляет от 3 до 5).

В моем скрипте, когда кто-то уничтожает определенный объект, он устанавливает, что идентификаторы объектов равны -1, а не регулярное число, поскольку в противном случае он просто вычеркивает ошибки при попытке использовать этот объект. Не знаю, хорошо ли я это объясняю.

Другой пример: игроки подключаются к определенному игровому серверу, поэтому у нас есть игроки с идентификаторами 0, 1, 3 и 4, поэтому, когда следующий игрок подключается, он получает идентификатор 2. Это то, что я получаю после с массивами.

Я попробовал несколько вещей, только то, что ближе всего к нему так:

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

Но проблема с этим является то, что он принимает только последний идентификатор и заменяет его, поэтому у нас есть объекты 0 , 1, 2 и 3 Если я уничтожу 3 и создаю новый, не проблема. Если бы я уничтожал либо 0, 1 или 2 вместо этого, но и создал новый, он бы не взял этот слот, а вместо этого пошел на номер 4, который тогда не работает.

Спасибо за чтение, надеюсь, кто-нибудь там может помочь мне с этим.


РЕШИТЬ:
Это было очень просто, для кого-либо еще с той же проблемой, это то, что я сделал. Следуйте дальше, это может стать очень сложным.
Что я сделал, я добавил «break»; в другом заявлении, код ниже:

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

Да, я ударил себя в голове позже ...

+0

Положите свое решение в качестве ответа, чтобы принять его, чтобы пометить вопрос как правильно решенный. – Nakilon

ответ

1
array.find(-1) 

От documentation:

Выполняет линейный поиск значение в массиве. Возвращает индекс значения, если он был найден в противном случае.