Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
denis2000Дата: Чт, 18.12.2014, 21:22 | Сообщение # 871
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123,
1. ЛОГ!
2. При каких условиях вылет происходит
3. Я надеюсь новую игру начинаете
4. Что в файле диалога
5. Файл скриптов с названием
6. Секции задания в принципе достаточно

db.actor:object("drug_anabiotic", 15) - это НЕ РАБОТАЕТ! Нужно писать функцию на подобии zat_b103_actor_has_needed_food
actor_has_item(drug_anabiotic:15) - это НЕ РАБОТАЕТ! Использовать нужно actor_has_item_count


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

Цитата denis2000 ()
zat_b103_actor_has_needed_food

Нашел функцию сдачи задания по такой же функции. Объясните: Зачем в выдаче указаны такие строки?

Вот сама функция: function zat_b103_transfer_merc_supplies(first_speaker, second_speaker)

а вот те строки:

local npc = dialogs.who_is_npc(first_speaker, second_speaker)
ocal actor = dialogs.who_is_actor(first_speaker, second_speaker)


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


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

dialogs.who_is_npc - возвращает объект, из двух передаваемых объектов, являющийся НПС
dialogs.who_is_actor - возвращает объект, из двух передаваемых объектов, являющийся ГГ


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

Можно ли сделать через on_info вызов функции на спавн предмета? К примеру радио в определённых координатах. И, где нужно это радио прописать?

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




Сообщение отредактировал asd123 - Сб, 20.12.2014, 03:19
 
a4927860Дата: Сб, 20.12.2014, 10:00 | Сообщение # 875
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Добрый день!

Много чего я в моде своем делал - только мало тестил. Сегодня (вчера) словил на юпитере рядом с вагонами в которых электра бегает вот такой баг:
[cut noguest]
[error]Expression : fatal error
[error]Function : CInifile::r_section
[error]File : D:\prog_repository\sources\trunk\xrCore\Xr_ini.cpp
[error]Line : 502
[error]Description : <no expression>
[error]Arguments : Can't open section ''. Please attach [*.ini_log] file to your bug report
[/cut]

есть подозрение что там ктото (чтото) спаунится и при подходе к вагонам меня выкидывает

Как можно этот баг отловить более развернуто? хотябы со ссылкой на файл с секцией " ?
 
СахарДата: Сб, 20.12.2014, 10:11 | Сообщение # 876
Гражданский
Пользователи
Сообщений: 2
Награды: 4
Репутация: [ 69 ]

a4927860, В шапке темы есть сполер под названием.
Цитата
Получение более подробной информации о вылете (ХОВАН)


 
sergej5500Дата: Сб, 20.12.2014, 11:51 | Сообщение # 877
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата asd123 ()
Можно ли сделать через on_info вызов функции на спавн предмета?


Можно сделать так.

on_info = {+разрешающая_инфопорция -блокирующая инфопорция} %=spawn_object(object_radio:object_radio_point) +блокирующая инфопорция%

object_radio - собственно радио. Прописываем его в configs\misc\quest_items. object_radio_point - точка спавна. Прописываем в way_*** нужной локации.

Второй вариант.

on_info = {+разрешающая_инфопорция -блокирующая инфопорция} %=spawn_object_radio +блокирующая инфопорция%

В scripts\xr_effects пишем код типа

function spawn_object_radio(actor,npc)
alife():create("object_radio",vector():set(-436.574,-6.527,170.169),116113,16)
end

Подставляем в него нужные вам координаты.
 
asd123Дата: Вс, 21.12.2014, 19:03 | Сообщение # 878
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата sergej5500 ()
Можно сделать так. on_info = {+разрешающая_инфопорция -блокирующая инфопорция} %=spawn_object(object_radio:object_radio_point) +блокирующая инфопорция% object_radio - собственно радио. Прописываем его в configs\misc\quest_items. object_radio_point - точка спавна. Прописываем в way_*** нужной локации. Второй вариант. on_info = {+разрешающая_инфопорция -блокирующая инфопорция} %=spawn_object_radio +блокирующая инфопорция% В scripts\xr_effects пишем код типа function spawn_object_radio(actor,npc) alife():create("object_radio",vector():set(-436.574,-6.527,170.169),116113,16) end Подставляем в него нужные вам координаты.

В xr.effects нужно было вписать вот так:
Код

function spawn_object_radio(actor,npc)        
       create("object_radio"-436.574,-6.527,170.169,116113,16)
end
иначе игра будет вылетать жалуясь на state_mgr_animation
Хотел спросить: Как называется модель приёмника, который в Припяти является средством связи со штабом СБУ.

Добавлено (20.12.2014, 16:08)
---------------------------------------------
Уже не важно) Спасибо Вам, sergej5500. Благодаря Вам я уже имею не плохую базу на Агропроме + диалоги с квестами.

Добавлено (21.12.2014, 19:03)
---------------------------------------------
А как предмет поставить в нужном для меня направлении? А то смотрит не в ту сторону.. И, как сделать созданный объект не двигающимся? То есть, при любом действии его нельзя было бы сдвинуть с точки.


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




Сообщение отредактировал asd123 - Вс, 21.12.2014, 19:04
 
sergej5500Дата: Вс, 21.12.2014, 19:52 | Сообщение # 879
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата asd123 ()
А как предмет поставить в нужном для меня направлении? А то смотрит не в ту сторону.. И, как сделать созданный объект не двигающимся?


Проще всего прописать предмет в all.spawn. Настраивая direction, можно развернуть его как угодно.
Чтобы сделать его неподвижным, надо прописать fixed_bones = link или другую кость. Тут надо смотреть модель в actor_editor.

Добавлено (21.12.2014, 19:52)
---------------------------------------------
Добрый вечер.

Сделал звуковую схему.

[bandit_base_no_weapon]
type = 3d
path = characters_voice\scenario\jupiter\jup_a10_bandits_warn

После подключения схемы к конфигу после загрузки игры неожиданно получил достижение "Искатель". Затем игра вылетела с ошибкой в xr_statistic. Хотя в этом файле никаких проблем не было.

Сама озвучка проигралась, но тихо.

Еще вопрос. Фрагмент логики рестриктора.

on_info = {=actor_has_weapon -actor_has_weapon_ecs_b6} %+actor_has_weapon_ecs_b6 =play_sound(jup_a10_bandits_warn)%

Можно ли схему jup_a10_bandits_warn проиграть в голове ГГ? Чтобы громкость звука не зависела от расстояния?

 
denis2000Дата: Вс, 21.12.2014, 20:08 | Сообщение # 880
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Для звука с типом 3D требуется объект-источник звука, кто им выступает в вашем случае? Рестриктор? Отсюда и низкая громкость звука. Ставьте тип type = actor и звук проиграется в "голове ГГ".

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

Цитата sergej5500 ()
Проще всего прописать предмет в all.spawn. Настраивая direction, можно развернуть его как угодно. Чтобы сделать его неподвижным, надо прописать fixed_bones = link или другую кость. Тут надо смотреть модель в actor_editor.

А как сделать его таскающимся? У меня это радио как у военных в Припяти. Куда вписать нужно, чтобы появилась возможность перетаскивать такой объект?

Добавлено (22.12.2014, 22:57)
---------------------------------------------
Уже не важно.

Добавлено (22.12.2014, 23:51)
---------------------------------------------
Подскажите в чем проблема! Я наконец разобрался, что в СГМ 2.2 Николай скинул компилятор для all.spawn для всех частей сталкера. Вообщем, хотел распаковать all.spawn СГМа, но не распаковывается из-за неизвестного класса. Вот такая строка получается:
Код

C:\Users\admin\Desktop\Compiler ЗП>perl universal_acdc.pl -d all.spawn -out unpa
ck -nofatal
Universal ACDC v.1.24
checking version of all.spawn...
          This is a spawn of S.T.A.L.K.E.R. Call Of Pripyat (any patch)
opening all.spawn...
reading header...
reading alife objects...

FATAL ERROR!
Function: stkutils::entity::_read_m_spawn
Line: 94
Expression: defined $class_name
Description: unknown class for section sgm_radioactive_field_weak

C:\Users\admin\Desktop\Compiler ЗП>pause
Для продолжения нажмите любую клавишу . . .


Куда нужно вписать этот класс?


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




Сообщение отредактировал asd123 - Пн, 22.12.2014, 23:52
 
sergej5500Дата: Пн, 22.12.2014, 23:56 | Сообщение # 882
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

asd123,

В папке компилятора должен быть файл sections.ini. Туда и прописываются все новые секции.
 
asd123Дата: Вт, 23.12.2014, 00:14 | Сообщение # 883
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата sergej5500 ()
В папке компилятора должен быть файл sections.ini. Туда и прописываются все новые секции.

Нет, такой нет. Можете посмотреть сами, если у Вас стоит СГМ 2.2

Добавлено (23.12.2014, 00:14)
---------------------------------------------
Если найдете, то покажите где. И лучше впишите этот недостающий класс.


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


 
sergej5500Дата: Вт, 23.12.2014, 00:16 | Сообщение # 884
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

asd123,

В СГМ в папке gamedata\spawns должен быть архив с названием Compiler ЗП или похожим. Там обязательно есть этот файл.
 
asd123Дата: Вт, 23.12.2014, 00:24 | Сообщение # 885
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата sergej5500 ()
В СГМ в папке gamedata\spawns должен быть архив с названием Compiler ЗП или похожим. Там обязательно есть этот файл.

Упс oops не заметил.. Так.. он вроде как удаляется потом?

Добавлено (23.12.2014, 00:21)
---------------------------------------------
А знаете.. не важно. Я хочу заспавнить вертолет на локации. С логикой для него разберусь. Главное спавн. Как это осуществить?

Добавлено (23.12.2014, 00:24)
---------------------------------------------
А что скрывают в себе файлы section2.bin и section4.bin ?


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


 
Поиск: