Статья GLua Ошибки

  • 118
  • 2
  • 30
В этой теме я научу читать и понимать ошибки, возникающие в коде от криворукости из-за невнимательности.
1. Разбор структуры ошибок. Структура у всех ошибок одинаковая и состоит из названия файла, строки, описания ошибки и трассировки ошибки.
Рассмотрим на примере
1. SetModel - [C]:-1
2. SpawnEntity - addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua:119
3. LeftClick - addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua:142
4. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:251

Название файла - где произошла ошибка:

addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua

Строка ошибки: 119
Описание ошибки: Tried to use a NULL entity!
Трассировка - показывает какие функции и в каких файлах предшествуют нашей ошибке:

1. SetModel - [C]:-1
2. SpawnEntity - addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua:119
3. LeftClick - addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua:142
4. unknown - gamemodes/sandbox/entities/weapons/gmod_tool/shared.lua:251



2. Описания ошибок. Чтобы понять как решить задачу, нам надо понять что произошло. В этом нам всегда помогает описание ошибки. Ниже я привожу типичные описания ошибок, наиболее часто встречающихся при разработке. (Список не полный и я буду рад вашим дополнениям)

  • 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) - не найден файл shared.lua
  • Calling net.Start with unpooled message name! [Garry's Mod Wiki] - попытка вызвать функцию net.Start с неизвестным идентификатором. Решается строкой util.AddNetworkString("ваш идентификатор")
3. Отсутствие ошибок.
Бывают случаи, когда не понятно почему не запускается сам мод. Такое случается когда в коде происходит фатальная ошибка и мод вообще не загружается. Это можно определить по такой строке:


Код:

Код:
Couldn't Load Init Script: 'darkrp/gamemode/init.lua'

В этом случае необходимо проверить последние изменения в коде и отменить их при необходимости. Скорее всего дело в пропущенных скобках, нарушающих синтаксис.

Если же сам мод работает, а не запускается определённые аддоны, то это может быть следствием:

  • перекрытия кода (переопределение переменных, функций и пр. в этом или другом файле)
  • файл со скриптом не был подключен
  • нефатальное нарушение синтаксиса
 
Сверху Снизу