Garry's Mod

Garry's Mod

Não há avaliações suficientes
Lua Ошибки и их решение | Glua
Por  https://scarrletsky.github.io/
В этой статье я хочу выложить список некоторых возможных ошибок при работе с кодом в Glua и как их решать.
   
Premiar
+ favoritos
Nos favoritos
- favoritos
Формат ошибок Lua
Первая строка Lua-ошибки содержит 3 важных фрагмента информации:
  • Путь к файлу, вызывающему ошибку
  • Строка, вызвавшая ошибку
  • Сама ошибка
Приведем пример кода, вызывающего ошибку:

local text = "Hello World"

Print( text )


Этот код приведет к следующей ошибке:

[ERROR] addons/my_addon/lua/autorun/server/sv_my_addon_autorun.lua:2: attempt to call global 'Print' (a nil value)
1. unknown - addons/my_addon/lua/autorun/server/sv_my_addon_autorun.lua:2



Это связано с тем, что Print не является существующей функцией (print, однако, существует).

В первой строке указан путь к файлу, вызывающему ошибку - addons/my_addon/lua/autorun/server/sv_my_addon_autorun.lua
Далее следует строка, вызывающая ошибку - sv_my_addon_autorun.lua:2 (line 2)

И, наконец, сама ошибка - попытка вызова глобальной функции 'Print' (значение nil)

Под ошибкой находится трассировка функции. Упрощённо - если ошибка находится внутри функции/фрагмента кода, который вызывается из другого места, то будет указано, откуда вызывается код.

Если ошибка произошла на стороне сервера, то цвет текста будет синим. Если ошибка произошла на стороне клиента, то цвет текста будет желтым. Если это код меню, то он будет зеленым (не типичный сценарий). Сообщения, которые выглядят как ошибки, но окрашены в другой цвет, например, красный или белый, являются не ошибками Lua, а ошибками движка.
Распространенные ошибки:
Attempt to call global '?' a nil value

- Вы попытались вызвать несуществующую функцию.​

Способы исправления:

  • Убедитесь, что функция существует
  • Убедитесь, что функция определена в правильной области
  • Проверьте вызовы функций на наличие орфографических ошибок
  • Попытка выполнить арифметические действия над глобальным '?' (нулевым значением)Вы попытались выполнить арифметические действия (+, -, *, /) над глобальной переменной, которая не определена.

Возможные причины:
  • Вы попытались использовать локальную переменную, которая была определена позже в коде
  • Вы неправильно указали имя глобальной переменной.
Attempt to perform arithmetic on global '?' (a nil value)

Вы попытались выполнить арифметические действия (+, -, *, /) над переменной, которая не может выполнять арифметические действия. (например, 2 + "строка").

Attempt to index global 'varname' (a nil value)

Вы попытались проиндексировать неопределенную переменную (например, print( variable.index ), где variable не определена)
Возможные причины:
  • Переменная определена в другой области
  • Переменная является локальной и определена позже в коде
  • Вы неправильно указали имя переменной.

Способы исправления:
  • Убедитесь, что доступ к переменной осуществляется только в той области, в которой она была определена.
  • Если переменная является локальной, определите ее перед обращением к ней

Malformed number near 'number'

В коде присутствует некорректное число (например, 1.2.3, 2f)

Возможные причины:
  • При запрашивании IP-адрес был записан как число, а не как строка.
  • Неправильная запись умножения числа и переменной
  • Попытка конкатенации числа в строку без пробела между числом и оператором.
Способы исправления:
  • Хранить IP-адреса в виде строки
  • Умножать переменные на числа с помощью оператора *
  • Поставьте пробел между конкатенацией и числом.

Unexpected symbol near 'symbol'

Вы ввели в код символ, который Lua не знает, как интерпретировать.
Возможные причины:
  • Неправильный синтаксис (например, забыли написать "then" после оператора if).
  • Не закрыты скобки и круглые скобки в нужных местах
.
Способы исправления:
  • Убедитесь, что в коде нет ошибок.
  • Правильно закрывайте скобки и круглые скобки

'symbol1' expected near 'symbol2'

Lua ожидала увидеть символ1 вместо символа2. Когда 'symbol2' имеет значение <eof>, Lua ожидала символ перед концом файла
Возможные причины:
  • Не закрыты все скобки, круглые скобки или функции до конца файла
  • Слишком много операторов end
  • Неправильный вызов оператора (например, "==" вместо "=")
  • Отсутствие запятой после элемента таблицы.
Способы исправления:
  • Правильно закрывайте скобки и круглые скобки (см.: Отступы в коде).
  • Использовать правильные операторы
  • Добавить запятую после элемента таблицы

Couldn't include file 'file' - File not found (<nowhere>)

Файловая система попыталась включить файл, который либо не существует, либо был добавлен во время работы сервера. Эта ошибка также может быть ошибкой AddCSLuaFile.

Возможные причины:
  • Попытка включения / AddCSLuaFile несуществующего или пустого файла.
  • Создание файла во время работы сервера.

Способы устранения:
  • Добавить существующий файл, убедиться, что файл не пуст
  • Перезапустить сервер

Attempted request to known malicious code endpoint! Blocking!

Это ошибка оповещает что на вашем сервере замечен известный вирусный код.
Чаще всего, это оповещение что на вашем сервере скорее всего kvacdoor или удалённо управляемый эксплоит.
Проверьте файлы вашего сервера на вредоносный код.


Tried to use a NULL entity!

Означает, что пытаешься использовать несуществующую энтити. Проверь что у тебя в переменной.

Tried to use a NULL physics object!

Вызванная энтити пытается быть физической, но у неё нет модели.

attempt to index global 'MutantSpawns' (a nil value)

Попытка использовать в коде не инициализированную переменную. Проще говоря, переменная пуста, а к ней происходит обращение.

bad argument #1 to 'FindByClass' (string expected, got userdata)

Неверный аргумент №1. Там должна быть строка, а получена userdata.

bad argument #1 to 'pairs' (table expected, got nil)

Тоже неверный аргумент, должна быть таблица, а получено нулевое значение.

bad argument #1 to 'JSONToTable' (string expected, got no value)

Ещё одна похожая херня, должна быть строка, а получено нулевое значение.

attempt to compare nil with number

Сравнение числа и нулевой переменной.

table index is nil

Попытка обращения к нулевому элементу.

Couldn't include file 'shared.lua' (File not found)

Файл не найден

Calling net.Start with unpooled message name!

Попытка вызвать функцию net.Start с неизвестным идентификатором. Решается строкой util.AddNetworkString("ваш идентификатор")
6 comentário(s)
анальный дебошир# 13 de abr. às 2:04 
нихуя не понял
Iridium77 18/ago./2023 às 8:38 
Базовые штучки, но новичкам очень подходит. Харош
 https://scarrletsky.github.io/  [autor(a)] 16/ago./2023 às 11:04 
нет ево
Denz 16/ago./2023 às 9:41 
а где код взлома
 https://scarrletsky.github.io/  [autor(a)] 14/ago./2023 às 16:22 
Gmod WIki (Оставлю здесь) + 60% дописал сам
General 14/ago./2023 às 3:52 
Спасибо! Теперь я стану легендой Lua (щутка).