Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7

Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML
[cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл:
1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R])
2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx"
3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо)
Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#"
Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut]
[cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти?
Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда.
Для того чтоб найти LOG необходимо зайти вот сюда:

В Win хр лог находится:

C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs

Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.

В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs

Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка:
...
$app_data_root$ = true | false| $fs_root$| users\
(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx)
...
$logs$ = true| false| $app_data_root$| logs\
(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи)
...
[/cut][cut=Получение более подробной информации о вылете (ХОВАН)]
Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...)
Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так:
Код
function abort(fmt, ...)
                     local reason = string.format(fmt, ...)
                     error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Код
Expression    : !m_error_code
Function      : raii_guard::~raii_guard
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line          : 748
Description   : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil)

Второй:
Код
Expression    : 0
Function      : ErrorLog
File          : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp
Line          : 49
Description   : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic'

[/cut]


Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста.
Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими


[cut noguest=Первый юбилей нашей темы]

Здравствуйте господа модостроители, и все так или иначе причастные к этому.
Нашей теме исполнился 1 год.
От души поздравляю Всех Вас дорогие друзья, творческих успехов.
Хочу так же выразить отдельную благодарность denis2000 и ХОВАН.

tracker 23.06.11



[/cut]
 
ek1985hadДата: Чт, 19.11.2015, 20:01 | Сообщение # 1561
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Народ нужна помащ. В зов припяти сигериус мод 2.2 добавел транспорт, все работает хорошо пока под обстрел не попаду, ранение гг переносит а вот при смерти вылет. Я думаю это из за отсутствие анимации. Как решить или обойти эту праблему?

живу грешу, умру отвечу.
 
denis2000Дата: Пт, 20.11.2015, 08:25 | Сообщение # 1562
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

ek1985had,
1. Какую версию игры используете?
2. Как добавляли транспорт?
3. Почему не приводите лог вылета?
4. Почему считаете, что вылет связан с анимациями?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ek1985hadДата: Пт, 20.11.2015, 18:12 | Сообщение # 1563
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

1 Версия 1.6.02 сигериус мод 2.2 от Болотова
2 Скачал авто мод для чистой версии зов припяти 1.6.00 автора не указон и частично одаптировал. отдельно скачал xr.Game для 1.6.02
3 лог вылета stack trace: и все
4 С анимкай есть глюк при виде от третьего лица гг стоит в транспорти стоя и тоже ногами шивелит при движеньи. возможно дело в анимации на смерть точней в её отсутствии. или отсутствии скрипта


живу грешу, умру отвечу.
 
makdmДата: Пт, 20.11.2015, 21:31 | Сообщение # 1564
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

ek1985had, вот этот файл попробуй. Собирал его Дизель. Заодно и протестируешь, а то я не успел ещё.
Потом напишешь, есть ли вылет при смерти ГГ в автотранспорте.

http://rghost.ru/6ZGNttwQD


Терпение......
И все получится!
 
ek1985hadДата: Пт, 20.11.2015, 23:22 | Сообщение # 1565
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Так просто. СПАСИБО РАБОТАЕТ.

живу грешу, умру отвечу.
 
makdmДата: Сб, 21.11.2015, 08:19 | Сообщение # 1566
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата ek1985had ()
Так просто.

Спасибо, повеселил.

Если ковыряться в движке игре, попутно изучая С++, дописывать свои функции и операторы, а потом всё это пересобрать так, чтобы всё это правильно работало в игре для вас просто, то возникает вопрос: "А что же вы это сами-то не сделали?"


Терпение......
И все получится!


Сообщение отредактировал makdm - Сб, 21.11.2015, 08:22
 
ek1985hadДата: Сб, 21.11.2015, 10:23 | Сообщение # 1567
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Я самоучка, у меня нет даже начального образование програмиста я мод делаю для себя путём неудач, огромного терпение и помощи чатов на разных сайтах через мобильник. Я даже многих терминов компъютарных не знаю например-Я когда локации добавлял из чистого неба завис на две недели на словах в инструкции - "зделайте бантик" Чо за бантик?, как его делать? Оказалась это это файл в расширением.bat.

Добавлено (21.11.2015, 10:23)
---------------------------------------------
А что значит вылет с таким логам stack trace:? он у меня ещё в двух местах встречаеться но после перезагрузки игры всё работает, куда лесть с проверками не знаю


живу грешу, умру отвечу.
 
denis2000Дата: Сб, 21.11.2015, 15:35 | Сообщение # 1568
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

ek1985had, Дело в том что движек использует модульную конструкцию (то есть динамически подключаемые библиотеки кодов или по простому файлы dll), поэтому при возникновении ошибки важно знать адреса возврата в какие функции каких библиотек содержатся на момент сбоя в стеке, для этого и используется трассировка стека stack trace: После этой строки идет перечисление: адреса возврата-функции-библиотеки кодов. Если после фразы stack trace: пусто, то значит сторонние библиотеки на момент сбоя не использовались.

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

А вот за это вам огромное уважение, идете до конца в реализации своих замыслов, а значит не важно насколько мало у вас знаний на данный момент, это только значит что их станет несоизмеримо больше когда вы закончите свой мод. Главное, что вы не работаете в вакууме, до вас сделано много работы по изучению модостроения на данном движке.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ek1985hadДата: Сб, 21.11.2015, 16:45 | Сообщение # 1569
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Как я понял значит если сторонние библиотеки на момент сбоя не использовались. то причину сбоя не выяснить?
ешо-бы знать что такое стек и трасировка smile


живу грешу, умру отвечу.
 
denis2000Дата: Сб, 21.11.2015, 19:47 | Сообщение # 1570
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата ek1985had ()
Как я понял значит если сторонние библиотеки на момент сбоя не использовались. то причину сбоя не выяснить?

Даже если использовались, эта информация мало чем поможет обычному модостроителю, хотя есть конечно характерные вылеты причины которых выяснены
[cut=Пример]Редкий родной вылет Xray 1.0004: CTheoraSurface

Симптом:

Код:
stack trace:

001B:004BCFBC XR_3DA.exe, CTheoraSurface::`vftable'()
001B:0298C084 xrGame.dll
001B:02994577 xrGame.dll

Причина: случается когда вы просматриваете в ПДА контакт в тот момент когда он переключается в оффлайн.

Лечение: обычно достаточно просто загрузить последний сейв.[/cut]
, только программист движка имея лог вылета, и дамп памяти в момент вылета, сможет вычислить участок кода движка при исполнении которого произошел сбой, а может даже его причину.

Цитата ek1985had ()
такое стек и трасировка

Стек (англ. stack — стопка; читается стэк) — абстрактный тип данных, представляющий собой список элементов, организованных по принципу LIFO (англ. last in — first out, «последним пришёл — первым вышел»).
При вызове подпрограммы (процедуры) процессор кладёт в стек адрес команды, следующей за командой вызова подпрограммы «адрес возврата» из подпрограммы. По команде возврата из подпрограммы из стека вынимается адрес возврата и осуществляется переход по этому адресу.
Трассировка стека - простым языком анализ содержимого стека и выяснение содержащихся в нем адресов точек возврата и кому эти точки принадлежат (Xray выясняет имена динамических библиотек и имена их функций).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Сб, 21.11.2015, 20:15 | Сообщение # 1571
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Причина: случается когда вы просматриваете в ПДА контакт в тот момент когда он переключается в оффлайн.

Ух, а я 2 года парился - почему когда бегаю по Бару "100 Рентген" в Солянке, и держу открытым раздел "Контакты", то постоянно происходил вылет.. Большое спасибо! smile


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Сб, 21.11.2015, 20:20
 
ek1985hadДата: Ср, 02.12.2015, 19:32 | Сообщение # 1572
Гражданский
Пользователи
Сообщений: 12
Награды: 0
Репутация: [ 0 ]

Версия 1.6.02 сигериус мод 2.2 от Болотова
Как снять ограничение на оружие на кардоне, и болоте?
ато у нпс есть Абакан а стоит его убить он исчезает.


живу грешу, умру отвечу.
 
sergej5500Дата: Ср, 02.12.2015, 21:33 | Сообщение # 1573
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

ek1985had,

Файл gamedata\configs\misc\death_items_control
 
alf_112Дата: Чт, 03.12.2015, 22:45 | Сообщение # 1574
Гражданский
Пользователи
Сообщений: 23
Награды: 0
Репутация: [ 0 ]

Всем привет!! Может я не в тему, но задаю этот вопрос уже 4-й раз, а ответа пока нет( Поставил ЗП (лицензия)+SGM 2.0+Geonezis Addon 2.0. Не могу передать посылку Каневскому, так как не появляется Мститель( По заданию Бороды на Лесничестве убил Моргана, забрал КПК, однако Мстителя нет? Может я выполнил квесты которые нужно было выполнять после его появления? Может кто знает в чем дело? Что нужно сделать чтобы он появился. Пропадает целая ветка квестов и инфа по лабам(
 
sergej5500Дата: Сб, 05.12.2015, 00:47 | Сообщение # 1575
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

alf_112,

В файле gamedata\scripts\ui_main_menu после строк

elseif db.actor~=nil and dik==DIK_keys.DIK_F5 then
self:mod_options()

допиши

elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then
create("zat_stalker_avenger",105.000,-3.935,179.562,1147189,316)

В игре нажми ESC-F6-ESC.
 
Поиск: