Модостроение. Спавн и логика
|
|
denis2000 | Дата: Пн, 10.10.2011, 21:20 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Спавн и логика Создание объектов на локации и логика поведения этих объектов Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так: Code function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Code 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) Второй: Code 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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Shyr | Дата: Ср, 27.05.2020, 17:39 | Сообщение # 1426 |
Отмычка
Пользователи
Сообщений: 38
| denis2000, спасибо, Вы были правы, на счет *.bat файла. Т.к. я работаю в windows 7, нужно было вызвать Perl перед основным скриптом. Вид батника изнутри:
Код Perl universal_acdc.pl -d all.spawn -out all -sort complex - nofatal pause
+ еще нужно было открыть "Полный доступ" файлам perl.exe, universal_acdc.pl и исполняющему *.bat файлу. Однако при распаковке в логе есть пару предупреждений:
Код C:\Users\Shyr\Desktop\acdc>Perl universal_acdc.pl -d all.spawn -out all -sort complex - nofatal
log inited: console Universal ACDC v.1.38 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...
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [4] in entity mon_main_story_7_mon_con_documents
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [4] in entity labx8_main_story_5_lab_x8_documents
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [4] in entity bun_main_story_4_lab_x10_documents
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [4] in entity pas_b400_main_story_6_jup_ug_document s
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_dust_static
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_dust_static_0000
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_dust_static_0001
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_dust_static_0002
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_electra
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_electra_0000
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_electra_0001
WARNING! Function: main::__ANON__ Line: 1380 Description: WARNING! Function: stkutils::file::entity::read_m_spawn Line: 122 Description: state data left [9] in entity gen_generator_electra_0002
reading artefact spawn places... reading way objects... reading game graph... reading header... reading levels... reading vertices... exporting alife objects... exporting alife objects on level l12u_sarcofag... exporting alife objects on level l13u_warlab... exporting alife objects on level l07_military... exporting alife objects on level labx8... exporting alife objects on level pripyat... exporting alife objects on level new_military... exporting alife objects on level l09_deadcity... exporting alife objects on level l11_hospital... exporting alife objects on level l10_radar... exporting alife objects on level l06_rostok... exporting alife objects on level jupiter_underground... exporting alife objects on level l10_limansk... exporting alife objects on level k00_marsh... exporting alife objects on level l03u_agr_underground... exporting alife objects on level l04_darkvalley... exporting alife objects on level l10_red_forest... exporting alife objects on level l10u_bunker... exporting alife objects on level l05_bar... exporting alife objects on level l12u_control_monolith... exporting alife objects on level l03_agroprom... exporting alife objects on level l04u_labx18... exporting alife objects on level _level_unknown... exporting alife objects on level l12_stancia... exporting alife objects on level l02_garbage... exporting alife objects on level k01_darkscape... exporting alife objects on level zaton... exporting alife objects on level l08_yantar... exporting alife objects on level l01_escape... exporting alife objects on level k02_trucks_cemetery... exporting alife objects on level fake_start... exporting alife objects on level l12_stancia_2... exporting alife objects on level l11_pripyat... exporting alife objects on level l13_generators... exporting alife objects on level jupiter... exporting alife objects on level l08u_brainlab... exporting raw data... exporting way objects on level l09_deadcity... exporting way objects on level l03u_agr_underground... exporting way objects on level l12_stancia_2... exporting way objects on level l11_hospital... exporting way objects on level l03_agroprom... exporting way objects on level l10u_bunker... exporting way objects on level k01_darkscape... exporting way objects on level l04u_labx18... exporting way objects on level k02_trucks_cemetery... exporting way objects on level l13_generators... exporting way objects on level l11_pripyat... exporting way objects on level l12u_control_monolith... exporting way objects on level l08u_brainlab... exporting way objects on level l10_red_forest... exporting way objects on level jupiter... exporting way objects on level fake_start... exporting way objects on level zaton... exporting way objects on level k00_marsh... exporting way objects on level l10_limansk... exporting way objects on level labx8... exporting way objects on level l01_escape... exporting way objects on level l05_bar... exporting way objects on level l13u_warlab... exporting way objects on level l04_darkvalley... exporting way objects on level pripyat... exporting way objects on level jupiter_underground... exporting way objects on level l12_stancia... exporting way objects on level _level_unknown... exporting way objects on level l10_radar... exporting way objects on level l06_rostok... exporting way objects on level l02_garbage... exporting way objects on level l12u_sarcofag... exporting way objects on level new_military... exporting way objects on level l08_yantar... exporting graph... done!
C:\Users\Shyr\Desktop\acdc>pause Для продолжения нажмите любую клавишу . . .
Вряд ли новый all.spawn без тех файлов(?), что не распаковались, сформируется корректно. Подскажите, пожалуйста, как можно декомпилировать эти файлы(?) и что делать в таком случае?
Сообщение отредактировал Shyr - Ср, 27.05.2020, 17:44 |
|
|
Эти 0 пользователя(ей) поблагодарили Shyr за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 28.05.2020, 09:00 | Сообщение # 1427 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Shyr ( ) Description: state data left [4] in entity labx8_main_story_5_lab_x8_documents Это сообщение говорит о том что при декомпиляции секции labx8_main_story_5_lab_x8_documents остались не распознанные 4 байта. При сборке такого спавна мод может заработать бес проблем, вылетать или работать не корректно в зависимости от важности этих данных.
Цитата Shyr ( ) что делать в таком случае? 1. Использовать на свой страх и риск. 2. Сообщить автору(-ам) ACDC о проблеме. Возможно уже существует версия скрипта заточенная под этот мод. 3. Получить исходники (локации в формате SDK) и инструментарий от разработчиков мода (SDK и компиляторы для него) и использовать его.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 16.07.2020, 08:32 | Сообщение # 1428 |
Эмиссар
Пользователи
Сообщений: 1702
| Доброго времени суток. В SGM новый медик на "Скадовске" приветствовал и прощался с ГГ, хоть и репликами Тремора. Секция meet в zat_stalker_medic.ltx выглядит вот так: [cut][meet] close_snd_hello = zat_b22_stalker_medic_greeting close_snd_bye = zat_b22_stalker_medic_farewell close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 use = {=actor_enemy} false, true allow_break = false meet_on_talking = false[/cut] По аналогии попробовал так же сделать в логике торговца на Кордоне, но ничего не происходит. Надо как-то по-другому сделать?
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.07.2020, 11:46 | Сообщение # 1429 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата Voland-777 ( ) Надо как-то по-другому сделать?
Попробуй после правки логики начать новую игру.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 16.07.2020, 12:08 | Сообщение # 1430 |
Эмиссар
Пользователи
Сообщений: 1702
| sergej5500, а иначе и никак, ибо игра при попытке поправить "на ходу" вылетала.
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 16.07.2020, 15:23 | Сообщение # 1431 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Voland-777, А можно ваши правки посмотреть?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 16.07.2020, 21:20 | Сообщение # 1432 |
Эмиссар
Пользователи
Сообщений: 1702
| denis2000, собственно, вот содержимое файла esc_stalker_trader.ltx. [cut][logic] active = move@trader trade = misc\trade\order_traders\esc_stalker_trader.ltx
[move@trader] move_dest_number = 130959 move_look_vertex = 134354 move_state_when_center = fold_arms move_state_when_move = walk move_combat_disable = true meet = meet invulnerable = true combat_ignore_cond = true combat_ignore_keep_when_attacked = true ;on_info = {=can_release_base_member} nil %=release_npc%
[meet] close_snd_hello = esc_stalker_trader_meet close_snd_bye = esc_stalker_trader_bye close_anim = nil close_victim = nil far_anim = nil far_victim = nil close_distance = 0 far_distance = 0 close_snd_distance = 3 abuse = false use = true allow_break = false meet_on_talking = false[/cut] Для новых звуков создал отдельный файл script_sound_extended.ltx, который через инклуд привязал к script_sound.ltx, ну и в list добавил.
[cut=script_sound_extended.ltx][list_script_sound_extended] esc_stalker_trader_meet esc_stalker_trader_bye
[esc_stalker_trader_meet] type = npc path = scenario\escape\esc_stalker_trader_meet_ shuffle = rnd idle = 3,5,100
[esc_stalker_trader_bye] type = npc path = scenario\escape\esc_stalker_trader_bye_ shuffle = rnd idle = 1,1,100[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.07.2020, 21:38 | Сообщение # 1433 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Voland-777,
Попробуй сделать два эксперимента.
1. Пропиши торговцу другую озвучку. Например, от Бороды.
close_snd_hello = {-zat_b30_barmen_under_sultan} zat_a2_stalker_barmen_greeting, zat_a2_stalker_barmen_greeting_angry close_snd_bye = {-zat_b30_barmen_under_sultan} zat_a2_stalker_barmen_farewell, zat_a2_stalker_barmen_farewell_angry
2. Свою озвучку пропиши командиру блокпоста медведеву.
gamedata\configs\scripts\escape\esc_b1_logic
Секция meet@b1_commander.
Расскажи, что получится в обоих случаях.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 16.07.2020, 22:28 | Сообщение # 1434 |
Эмиссар
Пользователи
Сообщений: 1702
| sergej5500, первый вариант не работает, а вот второй заговорил озвучкой, которую я взял из ЧН.
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.07.2020, 22:38 | Сообщение # 1435 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата Voland-777 ( ) первый вариант не работает
Тогда нужно спавнить торговца как сквад. Видимо, для НПС под кастом-датой озвучка не работает.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
Voland-777 | Дата: Чт, 16.07.2020, 22:52 | Сообщение # 1436 |
Эмиссар
Пользователи
Сообщений: 1702
| sergej5500, интересно, а каким образом это было реализовано на Фельдшере? Он вроде тоже как отдельный НПС заспавнен?
|
|
|
Эти 0 пользователя(ей) поблагодарили Voland-777 за это полезное сообщение: |
|
|
sergej5500 | Дата: Чт, 16.07.2020, 22:57 | Сообщение # 1437 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата sergej5500 ( ) Тогда нужно спавнить торговца как сквад. Видимо, для НПС под кастом-датой озвучка не работает.
С этим утверждением слегка поспешил. Торговец под логикой move. А медик под логикой animpoint. Нужно переделать логику торговцу.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 17.07.2020, 11:43 | Сообщение # 1438 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Voland-777, Да, уважаемый sergej5500 совершенно прав логика типа move не корректно работает в комбинации с такими схемами (с чем сталкивались неоднократно). Поэтому лучше переделать ее под схему walker или animpoint.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
STALKER_ICEBERG | Дата: Вс, 02.08.2020, 01:36 | Сообщение # 1439 |
Сталкер
Пользователи
Сообщений: 180
| Имею Sigerous Addon for Gunslinger ver 1.11.
1. Как заспавнить Ахилла ("вышибалу" на входе на базе наемников)? Убили 2 бюрера и пройти теперь никак нельзя - наймы начинают стрелять. Говорить пароль и показывать снаряжение в виде комбинезона некому.
Или другой вариант - как дать себе доступ на базу?
Файлов в геймдате нет, все правки проводятся через папку "MODS" - автор мода зашил все файлы в resourses.db... И теперь ни один файл править нельзя - сразу зеленые жуки. Корректно работает только встроенное чит-спавн-меню.
2. В оригинале SGM 2.2 заметил особенность - некоторые сталкеры, приходя на точки (чаще всего - Портовые Краны, Пепелище, Котел, Топь, Бетонная Ванна), вместо занятия привычными делами (сидения на досках/лавках, игры на гитаре и гармошке, поедания колбасы и водки) сидят в непривычных позах. Например, кладут руки на воздух. Или пригибают голову между колен, нюхая промежность... Как можно это поправить? Причем, на подлокациях Цирк, Скадовск и Земснаряд абсолютно все НПС работают корректно.
Похожее уже наблюдалось в оригинале Чистого Неба. Однако такое происходило из-за занятия лагерей союзными группировками (например, Сталкеры "клали руки на воздух" возле лагеря, занятого Свободой). Или при переполнении точки отрядами. Однако в той же Топи вместимость явно больше одного сквада. Тем более, что на Затоне только 2 группировки. Потому вряд ли дело в переполнении.
Сообщение отредактировал STALKER_ICEBERG - Вс, 02.08.2020, 01:44 |
|
|
Эти 0 пользователя(ей) поблагодарили STALKER_ICEBERG за это полезное сообщение: |
|
|
Alex9614 | Дата: Пн, 03.08.2020, 13:51 | Сообщение # 1440 |
Гражданский
Пользователи
Сообщений: 1
| Всем привет , возник такой вопрос , недавно делал изменение количества ячеек для артефактов в моде Geoneziz на костюм Гагарина , хотел найти точно такой же файл в моде SGM2.2 , но вот не задача , забыл где и как называется данный файл , помню только что в Configs надо искать , если кто знает помогите плиз
|
|
|
Эти 0 пользователя(ей) поблагодарили Alex9614 за это полезное сообщение: |
|
|
|