![]() |
| ![]() |
Отслеживание неполадокОсновные приёмы
КонсольПроверка значения переменных с помощью консолиВ игре можно использовать консоль для проверки состояния переменных. Вызовите окно консоли (кнопка «тильда», что левее кнопки, печатающей восклицательный знак или единицу) и напишите “sv”, что выведет список всех глобальных переменных и их значений. Теперь найдите объект, к которому прикреплён работающий скрипт. Откройте консоль, щелкните левой кнопкой мыши по выбранному Вами объекту (при этом изменится заголовок окна консоли) и напишите “sv” – Вы получите всех локальных переменных данного крипта с их значениями. Использование консоли для быстрой проверки Вашего скриптаВы можете использовать консоль для проверки многих граней Вашего мода. Например, выпишете ID Вашего объекта и напишите в консоли следующую строку: PlaceatPC "My_Object" 1,1,1 Объект появится прямо у Вас под ногами. Player -> AddItem "My_Object", 1 Объект появится у Вас в инвентаре. Для того, чтобы мгновенно перенестись в необходимую Вам локацию, в консоли напишите: coc "имя локации" для перемещения в интерьер или coe –1,-7 Для перемещения в определённое место глобальной карты (координаты можно посмотреть в редакторе). “coc” также может подойти для перемещения по глобальной карте. Однако не у всех внешних локаций есть уникальное имя, поэтому перемещение может произойти не совсем туда, куда бы Вам хотелось. Но всё равно, пример “coc balmora” перенесёт игрока куда-то в Балмору. tcl Переключает соприкосновения – проходите сквозь стены и достигайте тех мест, до которых обычным путём добраться проблематично. tgm Включить/выключить режим Бога – тестируйте Ваш мод без боязни, что Вас убьёт один из Ваших же монстров. Существует также возможность играть как бы в режиме отладки, что позволяет видеть статистику по заклинаниям, шансу на попадание и т.д.
И всё. Существует также альтернатива команде “tcs”. Например, “tks” и “tms”. Все эти аббревиатуры расшифровываются как “Toggle ??? statistics” («Включить статистику по ???»), где ??? может быть «битва» (combat = c), «магия» (magic = m), «убийства» (kill = k) или то, что нужно Вам. Сообщения об ошибках, огрехах в расчётах и их причиныСообщение об ошибках, которые можно увидеть в игре"EXPRESSION in script..." short ScriptRunning Обе эти ошибки могут быть вызваны так же отсутствием пробелов там, где это необходимо. Советую всегда оставлять пробелы вокруг скобок. Ошибка «Инфикс-Постфикс» Обычно указывает на плохой синтаксис. Чаще всего вызывается неправильным вызовом стрелки ->. Строку set somevar to actorID->GetHealth Следует изменить на set somevar to ( actorID->GetHealth )
Также эта ошибка может быть вызвана тем, что Вы забыли объявить переменную, похожую на функцию. Например, OnPCEquip. Неправильно работают команды перемещения Обычной причиной является неправильное задание координат (например, был опущен «-» или число имеет слишком много знаков). Как-то раз у меня была ошибка, когда вместо одного «-» я поставил 2 подряд. В редакторе линия выглядела одной сплошной, хоть и ненамного длиннее. Дублирование NPC Дублирование NPC происходит, в основном, случайно, когда старая версия плагина переписывается новой, а информация об NPC из старой версии остаётся в сохранённых играх. Это приводит к клонированию персонажа, даже если Вы просто поменяли в его скрипте один знак. Чтобы избежать этого, загружайте мод в соседней локации или оставляйте название плагина неизменным. Игра «вылетает» во время выполнения скрипта К сожалению, существует множество возможных причин. Например, Вы забыли сделать скрипт одноразовым, из-за чего объёмный код выполняется каждый фрейм. Или Вы удаляете объект с помощью скрипта этого самого объекта. Использование функции Equip на чём бы то ни было кроме напитков (исправлено в Трибунале), кастование направленных скриптов с активаторов (исправлено в Трибунале), использование функции AIActivate на дверях, которые ведут в другие локации, попытка использовать функцию PlaceItem вместе с тем объектом, скрипт которого в данный момент выполняется. Использование функции SetDelete на объекте, удалить который нельзя – всё это заставит игру «вылететь». Игра «вылетает» во время загрузки плагина Самая распространённая причина – слишком объёмные вычисления. Также возможной причиной может стать использование более чем 20 переменных в одной строке кода. Попытайтесь разбить подобную строку на несколько меньших по размеру. Сообщения об ошибках в редактореВ редакторе всегда показывается номер строки, в которой была совершена ошибка, поэтому исправить её довольно легко. "Mismatched If/else/endif starting on line..." Не закрыта одна или несколько условных конструкций. Для их наглядного разграничения можно использовать табуляцию. Также Вы можете встретиться с этой ошибкой, если сделали опечатку в имени какой-либо функции или переменной. "Function reference object "Foobject" not found" Ошибка сообщает, что объект, к которому относится, допустим, эта строка кода: Foobject -> GetDistance Player не существует. Когда Вы пишите скрипт и одновременно создаёте новый объект, Вы также получите эту ошибку. Закройте редактор, чтобы Ваш объект зарегистрировался компилятором. "Could not find variable or function "Foobject"" Ещё одна ошибка, которая говорит о том, что Вы используете неизвестную переменную или функцию или же несуществующий объект. |
![]() |
| ![]() | ||
![]() |