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

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


__NOTOC__
== 1 вариант ==
<pre>
<pre>
Expression : !m_error_code  
Expression : !m_error_code  
Строка 12: Строка 13:


=== Ошибка<ref>[https://www.amk-team.ru/forum/topic/8755-sigerous-mod-cop/?do=findComment&comment=457024 Пост пользователя "Ruffneck" на AMK форуме]</ref><ref>[http://ap-pro.ru/forum/103-10261-634782-16-1399047430 Пост пользователя "stalkerShepard" на форуме AP Production]</ref> ===
=== Ошибка<ref>[https://www.amk-team.ru/forum/topic/8755-sigerous-mod-cop/?do=findComment&comment=457024 Пост пользователя "Ruffneck" на AMK форуме]</ref><ref>[http://ap-pro.ru/forum/103-10261-634782-16-1399047430 Пост пользователя "stalkerShepard" на форуме AP Production]</ref> ===
Описание аналогично 14 варианту, вылета: [[script_engine.cpp]]
Описание аналогично 14 варианту вылета: [[script_engine.cpp]]


Отличие лишь в версии игры,, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
Отличие лишь в версии игры,, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])


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


Отличие лишь в том, что использовать надо движок [[X-Ray Oxygen]]
Отличие лишь в том, что использовать надо движок [[X-Ray Oxygen]]
== 2 вариант ==
<pre>
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)
</pre>
=== Ошибка ===
Проблемы с чтением функции или файла.
=== Подсказка скриптеру ===
Если в ошибке указано <code>имя_функции</code>, то игра не может определить данную функцию в указанном файле. Возможные причины:
# Функции действительно нет.
# Имя функции написано с ошибкой.
# В некоторых случаях, функция находится ниже по коду от того места, где идёт её вызов.
Если же в ошибке указано <code>имя_файла</code>, то либо файла не существует (возможно неправильное имя файла), либо в указанном файле допущена синтаксическая ошибка.
== 3 вариант ==
<pre>
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
</pre>
<pre>
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
</pre>
=== Ошибка ===
Попытка выполнить в одном из скриптов арифметические операции со строкой, либо сравнивать строку с числом.
=== Подсказка скриптеру  ===
Возможно, пропущен вызов <code>tostring</code>, либо вместо операции <code>..</code> (конкатенация строк) использовали <code>+</code> (сложение чисел).
Если ничего пропущено не было, то т.к. '''LUA''' - язык с динамической типизацией, вполне возможно, что что-то изменило тип переменной.
Возможен и такой вариант вылета при отсутствующей функции:
<pre>
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)
</pre>
Сочетания "несовместимых типов" могут быть и другими.
Возможно попытки конкатенации чисел приведут к похожим вылетам. Наглядный пример:
<pre>
local a = "name"
local b = 123
local c = a..b
</pre>
Сцепление строк с изрядной долей вероятности в третьей строке кода - вызовет вылет. Число <code>25</code> - это не строка, т.е. не слово. Поэтому необходимо перевести число в строку.
== 4 вариант ==
<pre>
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)
</pre>
=== Ошибка ===
Описание аналогично 3 варианту вылета: [[script_engine.cpp]]
Отличие лишь в версии игры, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
=== Подсказка скриптеру  ===
Аналогично 3 варианту вылета: [[script_engine.cpp]]
== 5 вариант ==
<pre>
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
</pre>
=== Ошибка ===
Описание аналогично 9 варианту вылета: [[script_engine.cpp]]
Отличие лишь в версии игры, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
=== Подсказка скриптеру  ===
Аналогично 9 варианту вылета: [[script_engine.cpp]]
== 6 вариант ==
<pre>
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
</pre>
=== Ошибка<ref>[http://ap-pro.ru/forum/21-11239-1014860-16-1492431049 Пост пользователя "Toonnix" на форуме AP Production]</ref> ===
Описание аналогично 8 варианту, вылета: [[script_engine.cpp]]
Отличие лишь в версии игры, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
=== Подсказка скриптеру  ===
Аналогично 8 варианту, вылета: [[script_engine.cpp]]
== 7 вариант ==
<pre>
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)
</pre>
=== Ошибка<ref>[https://otvet.mail.ru/question/199545464 Вопрос "Помогите! Сталкер зов припяти misery запускается вылетает и говорит прекращена работа хрей 1.6!" на сайте ответы@mail.ru]</ref> ===
Описание аналогично 12 варианту вылета: [[script_engine.cpp]]
Отличие лишь в версии игры, см. строчку <code>File:</code> (в данном случае: [[S.T.A.L.K.E.R. - Зов Припяти|ЗП]])
=== Подсказка скриптеру  ===
Аналогично 12 варианту вылета: [[script_engine.cpp]]


== Источники ==
== Источники ==
{{Reflist}}
{{Reflist|3}}


[[Категория:Справочник вылетов]]
[[Категория:Справочник вылетов]]

Версия от 22:25, 26 февраля 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


Источники