2016-07-08 7 views
0

Я очень новичок в кодировании. Я недавно использовал RPG Maker XP и смог исправить большинство проблем, с которыми сталкивался Googling, что нужно сделать, однако мне кажется, что я натолкнулся на то, на что я не могу найти ответ.Script 'Game_Actor' line 335 (Не удается открыть меню в RPG Maker XP из-за недостающего кода?)

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

Линия сценария 'Game_Actor' 335: Произошло событие NoMethodError. Не удалось найти метод 'name' для nil: NilClass.

Я посмотрел на линии 335 под окном «Game_Actor» и увидел это:

return $data_classes[@class_id].name 

Как я уже говорил, я очень мало знаю о коде, и поэтому я не могу на самом деле вижу ничего плохого с этим. Я не переписывал и не редактировал какой-либо реальный сценарий, поэтому я не уверен, как я повлиял на скрипт. (Я не касался какого-либо сценария по принципу, я не знаю, как это исправить.)

Я искал ответы, но, к сожалению, большинство людей, похоже, используют более позднюю версию RPG Maker, например Ace или MV, и они достаточно разные для XP, что ответы не имеют отношения к этой проблеме.

Если кто-нибудь может указать мне в правильном направлении или рассказать мне, как исправить это, я был бы очень благодарен. Я очень усердно работал над этим проектом, и мне было бы очень неприятно его пересматривать и начинать.

Еще раз спасибо!

+0

Нам нужно посмотреть всю игру, разместите ее на Github с основным файлом здесь, если она длинная. – JohnDoeYo

ответ

0

Basicaly сообщение об ошибке, что $data_classes[@class_id] ВОФК является nil (и именно поэтому $data_classes[@class_id].name недоступен), поэтому вы должны проверить, где он становится nil и почему. Я боюсь, что дальнейшая помощь невозможна, если вы не покажете нам больше кода вашего приложения (предположительно полный код).

0

Скорее всего, код по-прежнему пытается получить доступ к «классу», который вы удалили в базе данных. Я так понимаю, вы удалили таблицу базы данных, верно?

Ошибка Unable to find method 'name' for nil:NilClass. означает, что переменная, по которой код пытается получить доступ к методу name, на самом деле составляет nil. Код ожидает, что он будет содержать объект.

С его точки зрения, $data_classes[@class_id] - это хэш, который заполнен определениями «классы». Он заполняется в какой-то более ранний момент, и поскольку вы удалили класс, он не может найти определение для него.

Важно, что он все еще знает, что ему нужен класс, который вы удалили. Это означает, что этот класс упоминается где-то еще до того, как произойдет инициализация хеширования. Это может быть в файле конфигурации или другом «классе». Не видя полного кода, трудно точно определить, где именно.

Если вы не можете найти это место, попробуйте восстановить класс, который вы удалили, и вместо его удаления просто удалите все, что вам не нужно. Таким образом, сам класс по-прежнему будет присутствовать, и эта ошибка не произойдет. Затем вы сможете добавить то, что хотите в этом классе.