В этой теме я научу читать и понимать ошибки, возникающие в коде от криворукости из-за невнимательности.
1. Разбор структуры ошибок. Структура у всех ошибок одинаковая и состоит из названия файла, строки, описания ошибки и трассировки ошибки.
Рассмотрим на примере
Название файла - где произошла ошибка:
Строка ошибки: 119
Описание ошибки: Tried to use a NULL entity!
Трассировка - показывает какие функции и в каких файлах предшествуют нашей ошибке:
2. Описания ошибок. Чтобы понять как решить задачу, нам надо понять что произошло. В этом нам всегда помогает описание ошибки. Ниже я привожу типичные описания ошибок, наиболее часто встречающихся при разработке. (Список не полный и я буду рад вашим дополнениям)
Бывают случаи, когда не понятно почему не запускается сам мод. Такое случается когда в коде происходит фатальная ошибка и мод вообще не загружается. Это можно определить по такой строке:
В этом случае необходимо проверить последние изменения в коде и отменить их при необходимости. Скорее всего дело в пропущенных скобках, нарушающих синтаксис.
Если же сам мод работает, а не запускается определённые аддоны, то это может быть следствием:
1. Разбор структуры ошибок. Структура у всех ошибок одинаковая и состоит из названия файла, строки, описания ошибки и трассировки ошибки.
Рассмотрим на примере
Код:
[ERROR] 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
Код:
addons/ttt weapon placer/lua/weapons/gmod_tool/stools/tttweaponplacer.lua
Описание ошибки: 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
- 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! [
Эта ссылка скрыта от группы "Гость" (группа пользователей, которые еще не прошли регистрацию или авторизацию на Проекте). Чтобы увидеть эту ссылку Вам требуется авторизоваться или пройти регистрацию на Проекте (зарегистрироваться).
Бывают случаи, когда не понятно почему не запускается сам мод. Такое случается когда в коде происходит фатальная ошибка и мод вообще не загружается. Это можно определить по такой строке:
Код:
Couldn't Load Init Script: 'darkrp/gamemode/init.lua'
Если же сам мод работает, а не запускается определённые аддоны, то это может быть следствием:
- перекрытия кода (переопределение переменных, функций и пр. в этом или другом файле)
- файл со скриптом не был подключен
- нефатальное нарушение синтаксиса
Последнее редактирование: