2015-03-13 2 views
1

Проблема на стороне клиента код (ЦСИ: cl_hob.lua)Использование для в парах, чтобы обновить таблицу на основе другой таблицы в Lua

net.Receive("HobNetMsg", function(len) 
    local Queue = {} 
    Queue = net.ReadTable() 
    for I = 1 , #Queue do 
     local index = Queue[I]["index"] 
     for Key , Value in pairs(Queue[I]) do 
      HBeamTable[index][Key] = Value 
     end 
    end 
end) 

код предполагается принять чистые сообщения от моего сервера кода на стороне hob.lua который содержит таблицу всех обновлений, которые я хочу сделать для таблицы HBeamTable на стороне клиента. то, что должен сделать вышеприведенный код, - это посмотреть на полученную таблицу, а затем на основе того, что там обновляет таблицы с соответствующими таблицами в основной таблице с новыми данными.

Новые данные не должны содержать информацию для каждого отдельного поля, но основная таблица Должен иметь полный набор данных для каждого индекса, иначе функция рендеринга прерывается.

однако выше код выдает ошибку:

/cl_hob.lua:16: attempt to index a nil value 

Я не вижу каких-либо очевидных проблем с кодом выше, так что ошибка действительно сбивает с толку ...

+0

Эта ошибка означает, что один из 'Queue [I]' или 'HBeamTable [index]' возвратил 'nil' для некоторого значения' I' или 'index'. Вы можете добавить отладку в этот цикл, чтобы узнать, какой из них. –

ответ

3

ошибка, как сообщается в строка # 16. Ваш фрагмент кода вообще не имеет отношения к делу.

В line #14, у вас есть:

for I = 0 , #Changes do 

и Lua таблица не индексируется 0. Это вызывает ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^