Попытка проиндексировать глобальный «LM» (нулевое значение)

Я работаю над некоторым кодом в Lua, и я продолжаю получать эту ошибку, хотя она определена.

В нем говорится, что «LM» — это нулевое значение, хотя это явно не так, поскольку LM = {} — это первое, что у меня есть в моем коде. Я использую эту таблицу для функций.

LM = {}
LM.Classes = {}
LM.Factions = {}
LM.Items = {}
LM.Core = {}
LM.Ent = {}
LM.GUI = {}
LM.Core.ValidLMEntities = {
                "fm_item",
                "fm_keys",
                "fm_fists",
                "fm_money",
                }

function LM.Core.IsLMEntity(ent)    
    return IsValid(ent) && table.HasValue(LM.Core.ValidLMEntities, ent:GetClass())
end

Сообщение об ошибке:

[ERROR]
gamemodes/lemonmuffin/gamemode/sv_core.lua:1: attempt to index global 'LM' (a nil value) 
  1. unknown - gamemodes/lemonmuffin/gamemode/sv_core.lua:1
  2. include - [C]:-1 
  3. unknown - gamemodes/lemonmuffin/gamemode/init.lua:1

person Ripmax    schedule 11.06.2013    source источник
comment
не может помочь вам, если вы не покажете нам код. Мы что, угадываем?   -  person greatwolf    schedule 12.06.2013
comment
что за стек ошибок?   -  person greatwolf    schedule 12.06.2013
comment
&& недопустимый синтаксис lua, вы имели в виду and?   -  person greatwolf    schedule 12.06.2013
comment
[ОШИБКА] gamemodes/lemonmuffin/gamemode/sv_core.lua:1: попытка проиндексировать глобальный LM (нулевое значение) 1. неизвестно - gamemodes/lemonmuffin/gamemode/sv_core.lua:1 2. include - [C]: -1 3. неизвестно - gamemodes/lemonmuffin/gamemode/init.lua:1   -  person Ripmax    schedule 12.06.2013
comment
&& точно такое же, как "и"   -  person Ripmax    schedule 12.06.2013
comment
Как я могу это исправить? Кто угодно?   -  person Ripmax    schedule 12.06.2013
comment
Является ли показанный фрагмент кода частью sv_core.lua? Нужно больше контекста.   -  person greatwolf    schedule 12.06.2013
comment
Да, это часть sv_core.lua   -  person Ripmax    schedule 12.06.2013
comment
Ошибка находится в строке 1 sv_core.lua, и ошибка говорит, что Lua пытается ее проиндексировать. Однако в строке 1 фрагмента, который вы нам дали, нет операции индексирования. Очевидно, вы не сообщаете нам всего, что нам нужно знать, чтобы предложить вам решение.   -  person dualed    schedule 13.06.2013


Ответы (2)


Будьте осторожны, вы использовали &&, который не совпадает с and.
Вот полный список всех несловных токенов Lua (нет &):

 +     -     *     /     %     ^     #
 ==    ~=    <=    >=    <     >     =
 (     )     {     }     [     ]     ::
 ;     :     ,     .     ..    ...

Подробнее см. Справочное руководство.

person Yu Hao    schedule 12.06.2013

Попробуй это

LM = {Classes,Factions,Items,Core,Ent,GUI}
LM.Classes = {}
LM.Factions = {}
LM.Items = {}
LM.Core = {}
LM.Ent = {}
LM.GUI = {}

LM.Core.ValidLMEntities = {
            "fm_item",
            "fm_keys",
            "fm_fists",
            "fm_money",
            }

function LM.Core.IsLMEntity(ent)    
     return IsValid(ent) and table.HasValue(LM.Core.ValidLMEntities, ent:GetClass())
end
person vanshika    schedule 13.06.2013