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

Спавн и логика

Создание объектов на локации и логика поведения этих объектов

Если у вас появились вопросы по созданию динамических объектов в игре (НПС, монстры, аномалии, и т.п.) и настройке их "поведения". Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ShyrДата: Ср, 27.05.2020, 17:39 | Сообщение # 1426
Отмычка
Пользователи
Сообщений: 38
Награды: 4
Репутация: [ 20 ]

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
 
denis2000Дата: Чт, 28.05.2020, 09:00 | Сообщение # 1427
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата 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 и компиляторы для него) и использовать его.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Voland-777Дата: Чт, 16.07.2020, 08:32 | Сообщение # 1428
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

Доброго времени суток. В 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]
По аналогии попробовал так же сделать в логике торговца на Кордоне, но ничего не происходит. Надо как-то по-другому сделать?
 
sergej5500Дата: Чт, 16.07.2020, 11:46 | Сообщение # 1429
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Voland-777 ()
Надо как-то по-другому сделать?


Попробуй после правки логики начать новую игру.
 
Voland-777Дата: Чт, 16.07.2020, 12:08 | Сообщение # 1430
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

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

Voland-777, А можно ваши правки посмотреть?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Voland-777Дата: Чт, 16.07.2020, 21:20 | Сообщение # 1432
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

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]
 
sergej5500Дата: Чт, 16.07.2020, 21:38 | Сообщение # 1433
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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.

Расскажи, что получится в обоих случаях.
 
Voland-777Дата: Чт, 16.07.2020, 22:28 | Сообщение # 1434
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

sergej5500, первый вариант не работает, а вот второй заговорил озвучкой, которую я взял из ЧН.
 
sergej5500Дата: Чт, 16.07.2020, 22:38 | Сообщение # 1435
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата Voland-777 ()
первый вариант не работает


Тогда нужно спавнить торговца как сквад. Видимо, для НПС под кастом-датой озвучка не работает.
 
Voland-777Дата: Чт, 16.07.2020, 22:52 | Сообщение # 1436
Эмиссар
Пользователи
Сообщений: 1702
Награды: 9
Репутация: [ 474 ]

sergej5500, интересно, а каким образом это было реализовано на Фельдшере? Он вроде тоже как отдельный НПС заспавнен?
 
sergej5500Дата: Чт, 16.07.2020, 22:57 | Сообщение # 1437
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата sergej5500 ()
Тогда нужно спавнить торговца как сквад. Видимо, для НПС под кастом-датой озвучка не работает.


С этим утверждением слегка поспешил. Торговец под логикой move. А медик под логикой animpoint. Нужно переделать логику торговцу.
 
denis2000Дата: Пт, 17.07.2020, 11:43 | Сообщение # 1438
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Voland-777, Да, уважаемый sergej5500 совершенно прав логика типа move не корректно работает в комбинации с такими схемами (с чем сталкивались неоднократно). Поэтому лучше переделать ее под схему walker или animpoint.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
STALKER_ICEBERGДата: Вс, 02.08.2020, 01:36 | Сообщение # 1439
Сталкер
Пользователи
Сообщений: 180
Награды: 1
Репутация: [ 24 ]

Имею Sigerous Addon for Gunslinger ver 1.11.

1. Как заспавнить Ахилла ("вышибалу" на входе на базе наемников)? Убили 2 бюрера и пройти теперь никак нельзя - наймы начинают стрелять. Говорить пароль и показывать снаряжение в виде комбинезона некому.

Или другой вариант - как дать себе доступ на базу?

Файлов в геймдате нет, все правки проводятся через папку "MODS" - автор мода зашил все файлы в resourses.db... И теперь ни один файл править нельзя - сразу зеленые жуки. Корректно работает только встроенное чит-спавн-меню.

2. В оригинале SGM 2.2 заметил особенность - некоторые сталкеры, приходя на точки (чаще всего - Портовые Краны, Пепелище, Котел, Топь, Бетонная Ванна), вместо занятия привычными делами (сидения на досках/лавках, игры на гитаре и гармошке, поедания колбасы и водки) сидят в непривычных позах. Например, кладут руки на воздух. Или пригибают голову между колен, нюхая промежность... Как можно это поправить?
Причем, на подлокациях Цирк, Скадовск и Земснаряд абсолютно все НПС работают корректно.

Похожее уже наблюдалось в оригинале Чистого Неба. Однако такое происходило из-за занятия лагерей союзными группировками (например, Сталкеры "клали руки на воздух" возле лагеря, занятого Свободой). Или при переполнении точки отрядами.
Однако в той же Топи вместимость явно больше одного сквада. Тем более, что на Затоне только 2 группировки. Потому вряд ли дело в переполнении.


Сообщение отредактировал STALKER_ICEBERG - Вс, 02.08.2020, 01:44
 
Alex9614Дата: Пн, 03.08.2020, 13:51 | Сообщение # 1440
Гражданский
Пользователи
Сообщений: 1
Награды: 0
Репутация: [ 0 ]

Всем привет , возник такой вопрос , недавно делал изменение количества ячеек для артефактов в моде Geoneziz на костюм Гагарина , хотел найти точно такой же файл в моде SGM2.2 , но вот не задача , забыл где и как называется данный файл , помню только что в Configs надо искать , если кто знает помогите плиз
 
Поиск: