Script storage.cpp: различия между версиями

Материал из Моддинг трилогии S.T.A.L.K.E.R. - MODFAQ.RU | +TES/Fallout
Перейти к навигации Перейти к поиску
Нет описания правки
м Добавил 8 вариант
 
Строка 2: Строка 2:
=== Общее решение ===
=== Общее решение ===
Решение подобных ошибок<ref>[http://www.amk-team.ru/forum/faq/ Страница FAQ на AMK форуме, раздел "Справочник вылетов"]</ref> - задача нетривиальная. Поэтому их исправлением следует заниматься только тем, кто обладает хотя бы базовыми знаниями скриптинга.
Решение подобных ошибок<ref>[http://www.amk-team.ru/forum/faq/ Страница FAQ на AMK форуме, раздел "Справочник вылетов"]</ref> - задача нетривиальная. Поэтому их исправлением следует заниматься только тем, кто обладает хотя бы базовыми знаниями скриптинга.


== 1 вариант ==
== 1 вариант ==
Строка 21: Строка 22:


Отличие лишь в том, что использовать надо движок [[X-Ray Oxygen]]
Отличие лишь в том, что использовать надо движок [[X-Ray Oxygen]]


== 2 вариант ==
== 2 вариант ==
Строка 41: Строка 43:


Если же в ошибке указано <code>имя_файла</code>, то либо файла не существует (возможно неправильное имя файла), либо в указанном файле допущена синтаксическая ошибка.
Если же в ошибке указано <code>имя_файла</code>, то либо файла не существует (возможно неправильное имя файла), либо в указанном файле допущена синтаксическая ошибка.


== 3 вариант ==
== 3 вариант ==
Строка 83: Строка 86:
</pre>
</pre>
Сцепление строк с изрядной долей вероятности в третьей строке кода - вызовет вылет. Число <code>25</code> - это не строка, т.е. не слово. Поэтому необходимо перевести число в строку.
Сцепление строк с изрядной долей вероятности в третьей строке кода - вызовет вылет. Число <code>25</code> - это не строка, т.е. не слово. Поэтому необходимо перевести число в строку.


== 4 вариант ==
== 4 вариант ==
Строка 100: Строка 104:
=== Подсказка скриптеру  ===
=== Подсказка скриптеру  ===
Аналогично 3 варианту вылета: [[script_engine.cpp]]
Аналогично 3 варианту вылета: [[script_engine.cpp]]


== 5 вариант ==
== 5 вариант ==
Строка 117: Строка 122:
=== Подсказка скриптеру  ===
=== Подсказка скриптеру  ===
Аналогично 9 варианту вылета: [[script_engine.cpp]]
Аналогично 9 варианту вылета: [[script_engine.cpp]]


== 6 вариант ==
== 6 вариант ==
Строка 134: Строка 140:
=== Подсказка скриптеру  ===
=== Подсказка скриптеру  ===
Аналогично 8 варианту, вылета: [[script_engine.cpp]]
Аналогично 8 варианту, вылета: [[script_engine.cpp]]


== 7 вариант ==
== 7 вариант ==
Строка 151: Строка 158:
=== Подсказка скриптеру  ===
=== Подсказка скриптеру  ===
Аналогично 12 варианту вылета: [[script_engine.cpp]]
Аналогично 12 варианту вылета: [[script_engine.cpp]]
== 8 вариант ==
<pre>
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...e.r. - Зов Припяти\gamedata\scripts\sim_board.script:233: attempt to call method 'create_npc' (a nil value)
</pre>
=== Ошибка<ref>[https://ap-pro.ru/forum/100-775-253903-16-1339496961 Пост пользователя "demover123" на форуме AP Production]</ref><ref>[https://ap-pro.ru/forum/106-602-282871-16-1343021280 Пост пользователя "Sakola-Sokol" на форуме AP Production]</ref><ref>[https://ap-pro.ru/forum/100-3598-338345-16-1351778758 Пост пользователя "Аристократ" на форуме AP Production]</ref><ref>[https://ap-pro.ru/forum/36-10660-711166-16-1419805449 Пост пользователя "roboserg" на форуме AP Production]</ref> ===
Описание аналогично 2 варианту вылета: [[script_engine.cpp]]
Отличие лишь в версии игры, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
=== Подсказка скриптеру  ===
Аналогично 2 варианту вылета: [[script_engine.cpp]]





Текущая версия от 11:13, 6 апреля 2019

Общее решение

Решение подобных ошибок[1] - задача нетривиальная. Поэтому их исправлением следует заниматься только тем, кто обладает хотя бы базовыми знаниями скриптинга.


1 вариант

Expression : !m_error_code 
Function : raii_guard::~raii_guard 
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp 
Line : 748 
Description : not enough memory

Ошибка[2][3]

Описание аналогично 14 варианту вылета: script_engine.cpp

Отличие лишь в версии игры,, см. строчку File: (в данном случае: ЗП)

Решение

Решение аналогично 14 варианту вылета: script_engine.cpp

Отличие лишь в том, что использовать надо движок X-Ray Oxygen


2 вариант

Expression    : !m_error_code
Function    : raii_guard::~raii_guard
File        : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line        : 748
Description    : ...\gamedata\scripts\xxx.script:<номер_строки>: attempt to index global 'имя_функции|имя_файла' (a nil value)

Ошибка

Проблемы с чтением функции или файла.

Подсказка скриптеру

Если в ошибке указано имя_функции, то игра не может определить данную функцию в указанном файле. Возможные причины:

  1. Функции действительно нет.
  2. Имя функции написано с ошибкой.
  3. В некоторых случаях, функция находится ниже по коду от того места, где идёт её вызов.

Если же в ошибке указано имя_файла, то либо файла не существует (возможно неправильное имя файла), либо в указанном файле допущена синтаксическая ошибка.


3 вариант

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to perform arithmetic on a string value
Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to compare string with number

Ошибка

Попытка выполнить в одном из скриптов арифметические операции со строкой, либо сравнивать строку с числом.

Подсказка скриптеру

Возможно, пропущен вызов tostring, либо вместо операции .. (конкатенация строк) использовали + (сложение чисел).

Если ничего пропущено не было, то т.к. LUA - язык с динамической типизацией, вполне возможно, что что-то изменило тип переменной.

Возможен и такой вариант вылета при отсутствующей функции:

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- cop\gamedata\scripts\ui_si.script:383: attempt to call global 'qwe' (a nil value)

Сочетания "несовместимых типов" могут быть и другими.

Возможно попытки конкатенации чисел приведут к похожим вылетам. Наглядный пример:

local a = "name"
local b = 123
local c = a..b

Сцепление строк с изрядной долей вероятности в третьей строке кода - вызовет вылет. Число 25 - это не строка, т.е. не слово. Поэтому необходимо перевести число в строку.


4 вариант

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ...l.k.e.r. - Зов Припяти\gamedata\scripts\utils.script:355: attempt to perform arithmetic on local 't_pos' (a nil value)

Ошибка

Описание аналогично 3 варианту вылета: script_engine.cpp

Отличие лишь в версии игры, см. строчку File: (в данном случае: ЗП)

Подсказка скриптеру

Аналогично 3 варианту вылета: script_engine.cpp


5 вариант

Expression : !m_error_code 
Function : raii_guard::~raii_guard 
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp 
Line : 748 
Description : No such operator defined

Ошибка

Описание аналогично 9 варианту вылета: script_engine.cpp

Отличие лишь в версии игры, см. строчку File: (в данном случае: ЗП)

Подсказка скриптеру

Аналогично 9 варианту вылета: script_engine.cpp


6 вариант

Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : C stack overflow

Ошибка[4]

Описание аналогично 8 варианту, вылета: script_engine.cpp

Отличие лишь в версии игры, см. строчку File: (в данном случае: ЗП)

Подсказка скриптеру

Аналогично 8 варианту, вылета: script_engine.cpp


7 вариант

Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...- call of pripyat\gamedata\scripts\xr_logic.script:623: attempt to call field '?' (a nil value)

Ошибка[5]

Описание аналогично 12 варианту вылета: script_engine.cpp

Отличие лишь в версии игры, см. строчку File: (в данном случае: ЗП)

Подсказка скриптеру

Аналогично 12 варианту вылета: script_engine.cpp


8 вариант

Expression : !m_error_code 
Function : raii_guard::~raii_guard 
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp 
Line : 748 
Description : ...e.r. - Зов Припяти\gamedata\scripts\sim_board.script:233: attempt to call method 'create_npc' (a nil value) 

Ошибка[6][7][8][9]

Описание аналогично 2 варианту вылета: script_engine.cpp

Отличие лишь в версии игры, см. строчку File: (в данном случае: ЗП)

Подсказка скриптеру

Аналогично 2 варианту вылета: script_engine.cpp


Источники