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

Цитата suhar_ ()
Нужно ли где-то в конфигах\скриптах прописывать анимации нововведенного оружия?

Только в конфиге нового ствола.

Цитата suhar_ ()
Первый лежит по адресу - gamedata\meshes\dynamics\weapons\wpn_МоёОружие\wpn_МоёОружие_hud_animation.omf. Название файла по структуре совпадает с огф-моделью wpn_МоёОружие_hud.ogf в этой же папке. Возможно, что программа при поиске анимаций опирается на название модели, и прописывать его (этот файл с анимацией) не нужно. Поэтому и сомневаюсь.

Да существуют два набора анимаций: для оружия (пример: wpn_abakan_hud_animation.omf) и для рук ГГ (пример: wpn_hand_abakan_hud_animation.omf). На один файл явно ссылается худ модель оружия (wpn_abakan_hud.ogf), на второй ВСЕ модели рук ГГ (wpn_hand_01.ogf .... wpn_hand_exo.ogf).
Указанные вами анимации gamedata\anims\camera_effects\weapon\ - это анимации КАМЕРЫ ГГ, то есть во время некоторых анимаций с оружием проигрываются соответствующие анимации камеры. Это совершенно не обязательно просто разнообразит движения.

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Вс, 21.09.2014, 15:03 | Сообщение # 632
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

denis2000, вопрос такой: Как подключить созданные параллельно 4 кости ствола (Шилка), так что бы стреляла не одна, а еще и те три? Четыре кости исходят их одного сустава.

Древо на пулемёты:

root
mashine_gun_tower
mashine_gun
mashine_gun_fire_point, mashine_gun_fire_point2, mashine_gun_fire_point3, mashine_gun_fire_point4

Башня поворачивает 4 кости, так как надо, а вот в конфигах не удалось прописать, через запятую кости. Вылета нет, но и не стреляют, те остальные. Возможно их надо упомянуть в скриптах бтр? Или это в dll делается?


andreyholkin

Сообщение отредактировал Дизель - Вс, 21.09.2014, 15:03
 
denis2000Дата: Вс, 21.09.2014, 17:07 | Сообщение # 633
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Дизель, Движок скорее всего не подозревает о наличии нескольких суставов для стрельбы. Поэтому нужно делать так: сделать один стреляющий сустав (примерно посередине между стволами), а партиклами выстрела сделать четыре вспышки пламени в нужных местах.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
DestroyДата: Вс, 21.09.2014, 19:20 | Сообщение # 634
Разработчик SGM
Вольные сталкеры
Сообщений: 308
Награды: 10
Репутация: [ 235 ]

Возник необычный вопрос. Есть ли возможность через редактирование fsgame.ltx прописать возможность читать игре gamedata не из корня игры, а из другого произвольного каталога?

Дело в том, что синхронизируем работу над модом через облачный Yandex.Drive (нету нормального серверного компа-хоста, чтобы сделать это без облачного сервиса). И уже начинает надоедать копировать из папки Yandex.Drive измененные конфиги и прочие файлы в корень игры. Вот и думаю: может как-то смонтировать или прописать путь, чтобы игра читала геймдату оттуда?


Сообщение отредактировал Destroy - Вс, 21.09.2014, 19:22
 
denis2000Дата: Вс, 21.09.2014, 22:28 | Сообщение # 635
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Destroy, Такое реализовать можно, но средств fsgame.ltx оказывается недостаточно.
Допустим гемдата находиться с папке D:\1\2\3\gamedata\
Папка с движком в C:\STALKER\bin\
папка с архивами в E:\arhivs\
Значит нужно прописать:
1. В ярлыке запускающем игру указать параметр Объект равным C:\STALKER\bin\xrengine.exe
2. В ярлыке запускающем игру указать параметр Рабочая папка равным D:\1\2\3\
3. Скопировать fsgame.ltx в папку D:\1\2\3\
4. Прописать в файле fsgame.ltx вместо $fs_root$ E:\arhivs\ во всех местах кроме $game_data$

Есть второй вариант отразить (В винде 2000 и XP называется Символьная связь англ. junction point в Vista,7,8 Символическая ссылка англ. symbolic links) папку gamedata из общего хранилища в папку с игрой. В этом случае данные реально находятся в общем хранилище, а папка gamedata в игре является неким порталом в структуру папок и файлов общего хранилища.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
DestroyДата: Пн, 22.09.2014, 00:18 | Сообщение # 636
Разработчик SGM
Вольные сталкеры
Сообщений: 308
Награды: 10
Репутация: [ 235 ]

denis2000, все несколько иначе:
Каталог с игрой находится по пути, скажем:
C:\S.T.A.L.K.E.R.\
Там же находится и игровая gamedata, в которую постоянно приходится закидывать обновленные другим человеком файлы, что ужасно неудобно. Серверного компа, как я уже сказал, для SVN и прочих нет.

На компе также существует папка, синхронизированная посредством облака с сервером:
C:\Users\%username%\YandexDisk\
В этой папке хранится папка gamedata (и, соответственно, у нее путь — C:\Users\%username%\YandexDisk\gamedata\)
Задача состоит в том, чтобы игра читала данные из этой самой gamedata, которая хранится в синхронизированной папке.

Первый раз услышал о симлинках. Сейчас пойду изучать. Хотелось бы, конечно, решить все на уровне fsgame.ltx. Попробуем...

*upd
В общем, symlink — то, что нужно. Очень удобно. Казалось бы: столько пользуюсь Windows, что неизведанных функций не осталось — ан нет. Спасибо большое.


Сообщение отредактировал Destroy - Пн, 22.09.2014, 01:54
 
suhar_Дата: Вт, 23.09.2014, 05:16 | Сообщение # 637
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Цитата denis2000 ()
не прописали в модели рук ссылку на файл с внесенными анимациями оружия

Ок, это уяснил.
После добавления появился другой вылет. [cut=Лог]Expression : error handler is invoked!
Function : handler_base
File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp
Line : 764
Description : application is aborting

[/cut]
Здесь уже, в чём причина, не разобрался.


Ещё такой вопрос. Если у меня не 8 худов (как в оригинале), а намного больше, есть ли возможность как-нибудь обойти эту процедуру прописывания? Дело в том, что каждый раз обрабатывать кучу моделей, по нескольку раз конвертировать в формат СДК и обратно довольно затруднительно. В нескольких оружейных модах видел, что у худов эти ссылки не прописаны в Motion'ах, хотя новых анимаций там очень много и все они работают.
 
denis2000Дата: Вт, 23.09.2014, 07:30 | Сообщение # 638
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Такой вылет бывает от многих причин в частности если анимация не соответствует скелету модели.
Ленивые проступают просто сваливают все анимации в один файл уже прописанный в моделях.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
KoshaДата: Пт, 26.09.2014, 17:03 | Сообщение # 639
Отмычка
Пользователи
Сообщений: 32
Награды: 0
Репутация: [ 0 ]

Подскажите: Принятие отряда монолита в ЗП (допустим в долг) это кат-сцена или что?

Она самая. denis2000
 
ДизельДата: Пт, 26.09.2014, 18:23 | Сообщение # 640
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

Вопрос: Существует ли возможность у движка ЗП подключить анимацию гусениц у танка? Анимация должна быть управляема с клавиатуры.

А у БТР-а разве колеса анимация вращает? denis2000

Добавлено (26.09.2014, 18:23)
---------------------------------------------
А у БТР-а разве колеса анимация вращает? denis2000

Мне надо что бы при нажатии на кнопки управления техникой подключалась анимация траков. Танк может ехать на шейпах и без гусениц и без колёс. Нажимая кнопку вперёд - крутятся две гусеницы в перёд. Назад - назад. И еще отдельно левая и правая, и также вперёд и назад. Итого 6 анимаций получается.?
Тут я дуб.
Как в танках WOT скорее не получится. Надо однако новый класс техники создать движке, а именно в dll?

Короче надо забросить эту идею.



andreyholkin
 
denis2000Дата: Пт, 26.09.2014, 18:45 | Сообщение # 641
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Пт, 26.09.2014, 19:18 | Сообщение # 642
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

Колеса на технике крутят, привязанные к обьектам колёс, шейпы. Физика. Видимые колёса всего лишь имитация физики. Они не являются движителем. Шейпы - это реактор ( причем ему необходим материал, для сцепления с грунтом, иначе ничего не будет происходить.

andreyholkin

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

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

Поскольку класс машины (CCar), не наследован от класса (CPhysicObject), то прикрутить анимацию (например idle) с движущимися гусиницами и проиграть ее командой: object:get_physics_object():run_anim_forward() не получиться.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ДизельДата: Пт, 26.09.2014, 19:39 | Сообщение # 644
Сталкер
Разработчики
Сообщений: 260
Награды: 1
Репутация: [ 136 ]

Цитата denis2000 ()
Тогда получается единственный выход заменять гусеницы колесами с шейпами, иначе крутиться не будут.
Колеса можно заставить крутиться. С траками беда. Цепь траков имеет "овальную" форму движения, а актёр-эдитор не поддерживает такого вида физику, ему только круглую подавай.


andreyholkin
 
suhar_Дата: Сб, 27.09.2014, 21:38 | Сообщение # 645
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Цитата denis2000 ()
Дизель, ... А кто кроме вас на этом форуме знает больше о движущейся технике?

Вот уж действительно, кто знает о технике больше, чем Дизель? Символичный ник smile

После обработки модели оружия в SDK (предположим, в моём случае это wpn_ares), в игре возникает вылет [cut=Лог]Expression : _valid( c )
Function : CPhysicsShellHolder::correct_spawn_pos
File : D:\prog_repository\sources\trunk\xrGame\PhysicsShellHolder.cpp
Line : 178
Description : object: wpn_ares1539 model: dynamics\weapons\wpn_ares\wpn_ares

[/cut]
Причём, вылет только с моделью оружия на земле (wpn_ares.ogf), а не с моделью рук (wpn_ares_hud.ogf). Происходит, как только выбрасываю оружие на землю. Видимо, какие-то проблемы с самой моделью, но какие - не понятно. Редактировал адреса текстур, поставил другие шейдеры, установил галки напротив пунктов Make progressive и HQ geometry. Всё. Больше ничего не трогал. Никаких анимаций не добавлял. Тот же вылет возникает, если проделываю эти же процедуры, но уже с другими моделями. Что делаю не так?


Сообщение отредактировал suhar_ - Сб, 27.09.2014, 21:40
 
Поиск: