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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Ср, 15.07.2015, 21:40 | Сообщение # 1186
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Такая логика вроде должна работать но не работает (на самом деле на секцию переключается, но на цель не разворачивается и анимацию не проигрывает). Сделайте в месте установки кровососа точку пути (esc_b1_krovosos_fire_point) и назначите целью ее:
Код
[remark@esc_b1_krovosos_fire_remark_1]
target = path | esc_b1_krovosos_fire_point, 0
anim = patrol_fire


Или сделайте в некоторой точке пути этого НПС анимацию patrol_fire:
Код
***_guard_1_walk]
points = p0,p1,p2,p3

p0:name = wp00
p0:position = 211.612,16.774,485.548
p0:game_vertex_id = 6
p0:level_vertex_id = 1324424
p0:links = p1(1),p2(1)

p1:name = wp01
p1:position = 231.994,149.922,472.249
p1:game_vertex_id = 6
p1:level_vertex_id = 1361074
p1:links = p2(1),p3(1),p0(1)

p2:name = wp02
p2:position = 246.412,14.552,477.868
p2:game_vertex_id = 6
p2:level_vertex_id = 1387598
p2:links = p3(1),p1(1)

p3:name = wp03
p3:flags = 0x1
p3:position = 237.355,18.079,523.716
p3:game_vertex_id = 292
p3:level_vertex_id = 1371319
p3:links = p0(1),p2(1)

[***_guard_1_look]
points = p0

p0:name = name00|a=patrol_fire|t=10000
p0:flags = 0x1
p0:position = 0.880,-4.472,433.705
p0:game_vertex_id = 134
p0:level_vertex_id = 1185573

Тогда в точке пути wp03 НПС будет разворачиваться в точку name00 и проигрывать анимацию стрельбы в течении 10 сек.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
denis2000Дата: Пн, 03.08.2015, 08:36 | Сообщение # 1187
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, А почему бы не использовать специально для этого созданную схему camper (снайпер)?

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

подскажите, как сделать так, что бы НПС спавнились на локации и бродили по ней, патрулируя (как на Земснаряде после квестов, на станции переработки отходов, ВНЗ "Круг", Лесопилке? Тоже хочу такое сделать, только на Лесничестве.
 
denis2000Дата: Ср, 19.08.2015, 12:47 | Сообщение # 1189
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

STALKER_ICEBERG, Надо сделать там смарт-террейн с разрешением на симуляцию. Создание такого смарта описано в том числе в КМБ Урок 6.

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

Цитата denis2000 ()
Надо сделать там смарт-террейн с разрешением на симуляцию

Чиво? blahblah Я ж не продвинутый, не умею такого.
Я просто хочу сделать спавн сталкеров. На подобии тех, что на Земснаряде. Можно ли что-то скопировать оттуда и перенести на Лесничество? Просто не то, что бы западло, а вникнуть не могу.
Ну я имею ввиду скопировать текст оттуда (с Земснаряда), изменить колличество сталкеров и маршрут и все.
В 6м уроке описаны сквады и создание клана отдельного.
 
sergej5500Дата: Ср, 19.08.2015, 15:39 | Сообщение # 1191
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

STALKER_ICEBERG,

Если делать по аналогии с СГМ, то нужно сделать следующее.

1. В файл gamedata\configs\respawn\respawn_abandoned добавить секцию респавна. По аналогии с имеющимися.

[cut=Параметры секции спавна]
[zat_abandoned_respawn1] ;--/Станция переработки отходов
cond = {+zat_b40_notebook_saled} true, false ; -- Условие спавна
target_smart = zat_b40_smart_terrain ; -- Смарт спавна
sections = zat_respawn1_killer1,zat_respawn1_killer2,zat_respawn1_killer3,zat_respawn1_killer4,zat_respawn1_killer5,zat_respawn1_killer6,zat_respawn1_k iller7,zat_respawn1_killer8,zat_respawn1_killer9,zat_respawn1_killer10,zat_respawn1_killer11,zat_respawn1_killer12 ; -- Секции НПС, которых спавним
time_of_the_day = night
respawn_radius = 7
place = 324.415,33.231,-396.303,1509422,1 ; -- Координаты точки спавна
born_info = zat_abandoned_respawn1_spawned ; -- Инфопорции спавна
reload_info = zat_respawn1_all_deaths ; -- Инфопорции спавна[/cut]

2. В файл gamedata\configs\creatures\spawn_sections_extended_stalkers прописать спавн-секции НПС

[cut=Пример секции]
[zat_respawn1_killer1]:stalker_abandoned
$spawn = "respawn\zat_respawn1_killer1"
character_profile = respawn_easy_killer1
spec_rank = regular
community = killer
can_be_wounded = false
custom_data = scripts\SGM\zaton\invaders\zat_respawn1_killer1.ltx
[/cut]

3. В папке configs\scripts\SGM\zaton\invaders для каждого спавнящегося НПС сделать файл логики с указанием путей движения.

4. В файл gamedata\scripts\xr_effects добавить функцию подсчета убитых на этой точке.

[cut=Код]function zat_respawn1_killers_counter(actor,npc)
give_info(npc:section().."_death")
if has_several_info("zat_respawn1_killer","_death",1,12) and dont_has_alife_info("zat_respawn1_all_deaths") then
give_info("zat_respawn1_all_deaths")
end
end[/cut]


Сообщение отредактировал sergej5500 - Ср, 19.08.2015, 15:39
 
flame4Дата: Ср, 19.08.2015, 20:56 | Сообщение # 1192
Отмычка
Пользователи
Сообщений: 43
Награды: 0
Репутация: [ 0 ]

Цитата sergej5500 ()
STALKER_ICEBERG,

Если делать по аналогии с СГМ, то нужно сделать следующее.

1. В файл gamedata\configs\respawn\respawn_abandoned добавить секцию респавна. По аналогии с имеющимися.

[ Параметры секции спавна ]

2. В файл gamedata\configs\creatures\spawn_sections_extended_stalkers прописать спавн-секции НПС

[ Пример секции ]

3. В папке configs\scripts\SGM\zaton\invaders для каждого спавнящегося НПС сделать файл логики с указанием путей движения.

4. В файл gamedata\scripts\xr_effects добавить функцию подсчета убитых на этой точке.

[ Код ]


Простите, а если это дописать в уже начатой игре, все нормально будет работать? Не придется играть все с начала. И так же можно сделать во всех локациях? чтоб более реалистично по нпс.

И подскажите по одному вопросу, кто нибудь кроме разработчиков SGM 2.2. занимался таким вопросом, чтоб сделать так чтоб НПС пряталась и шкирилась* при выбросе и пси-шторме (от Atmosfear)
а то только я прячусь =(
Ну ведь если вспомнить то в оригинале Зов Припяти - на скадовске нпс так и делала. При выбросе. А в моде нету.
 
STALKER_ICEBERGДата: Ср, 19.08.2015, 21:52 | Сообщение # 1193
Сталкер
Пользователи
Сообщений: 180
Награды: 1
Репутация: [ 24 ]

Цитата flame4 ()
А в моде нету.

На стандартных локациях прячутся и умирают. Что касается Кордона, Агропрома, Болот и так далее - там у них смерть от выброса не заскриптована, ровно также, как и не сделаны укрытия.
Да и по логике - зачем куда-то бежать, если ты не умираешь?
+ на этих локах много персонажей, стоящих за возможными укрытиями (к примеру, на Кордоне это и техник, и работодатель (ведь укрытие в самом здании, а не во всех), на Болотах - Леопольд и еще кто-то, на Мех. Дворе - Кощей бандитский, тысячи их). + там нет больших лагерей - со столами, ящиками и т.д, где нпс могут сидеть. Не будут же они толпой в одной точке стоять?


Сообщение отредактировал STALKER_ICEBERG - Ср, 19.08.2015, 21:53
 
flame4Дата: Ср, 19.08.2015, 23:25 | Сообщение # 1194
Отмычка
Пользователи
Сообщений: 43
Награды: 0
Репутация: [ 0 ]

Однако в оригинале все было, и как то прятались и выживали dry
 
denis2000Дата: Чт, 20.08.2015, 09:30 | Сообщение # 1195
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата STALKER_ICEBERG ()
Чиво? Я ж не продвинутый, не умею такого.

Учитесь модостроению, не хотите учиться? Тогда никто вам помочь не сможет.
Цитата STALKER_ICEBERG ()
я имею ввиду скопировать текст оттуда (с Земснаряда), изменить колличество сталкеров и маршрут и все.

Если бы просто нужно было скопировть текст, я так бы и сказал - скопируйте текст.
Цитата STALKER_ICEBERG ()
В 6м уроке описаны сквады и создание клана отдельного.

Ине только это, но и многое многое другое, например создание симуляционного сквада, создание симуляционного смарта.
Цитата STALKER_ICEBERG ()
На стандартных локациях прячутся и умирают. Что касается Кордона, Агропрома, Болот и так далее - там у них смерть от выброса не заскриптована, ровно также, как и не сделаны укрытия.

Цитата flame4 ()
Однако в оригинале все было, и как то прятались и выживали

Ок расскажу просто:
1. В оригинале два типа сквадов: статические и симуляционные (динамические). Статические стоят в укрытиях изначально и никуда оттуда не уходят (а если уходят, то выброс их все равно не убивает поскольку у сквада прописан стори_ид). Симуляционные (не имеют стори_ид) ходят по смартам в дневное время, во время выброса идут на ближайщий свободный смарт помеченный как имеющий укрытие от выброса и имеющий работы для НПС во время выброса.
НПС из статического сквада имеют индивидуальную (эксклюзивную логику). НПС из симуляционного сквада не имеют индивидуальной логики и им на смартах она назначается динамически из имеющегося списка работ.
2. НПС добавленные в моде в принципе не состоят в сквадах (в подавляющем большинстве) и обладают индивидуальной логикой.
Соответственно:
1. Статическим сквадам из оригинала не нужно идти в укрытия - они и так в нем.
2. Симуляционные сквады автоматически идут на смарт с укрытием (если на локации конечно организованы таковые)
3. КАЖДОМУ НПС добавленному модом и не состоящему в скваде (никаком) нужно индивидуально во всех рабочих секциях логики прописывать реакцию на выброс типа:
Код

[walker@jup_a10_bandit_guard_1]
path_walk = jup_a10_bandit_guard_1_walk
path_look  = jup_a10_bandit_guard_1_look
on_info = {=surge_started} walker@surge ;В случае выброса переключиться на секцию в которой НПС займет место в укрытиии

[walker@surge]
path_walk = bodyguard_1_walk
path_look  = bodyguard_1_look
on_info = {=surge_complete} walker@jup_a10_bandit_guard_1 ;По окончании выброса переключиться на секцию в которой НПС займет обычное место


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

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

Сообщение отредактировал STALKER_ICEBERG - Чт, 20.08.2015, 12:44
 
denis2000Дата: Чт, 20.08.2015, 13:30 | Сообщение # 1197
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

STALKER_ICEBERG, Нет укрытий - пропишите. Создайте смарт, впишите в файл simulation_objects_props.ltx секцию смарта и поставьте в ней:
Код
surge = 1
sim_avail = true

Что и будет означать, что смарт доступен симуляционным отрядам и там есть убежище от выброса. Создайте работы на смарте типа:
Код
[zat_b100_surge_1_look]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -426.207611083984,39.8848838806152,-396.382263183594
p0:game_vertex_id = 306
p0:level_vertex_id = 139078

[zat_b100_surge_1_walk]
points = p0
p0:name = wp00
p0:flags = 0x1
p0:position = -430.798126220703,38.0370330810547,-396.254180908203
p0:game_vertex_id = 306
p0:level_vertex_id = 133533

Это для смарта zat_b100, укрытие от выброса на одного НПС.
А на новых локациях каждому НПС индивидуально разъясните куда бежать и что делать во время выброса или тому подобного.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
flame4Дата: Пт, 21.08.2015, 23:38 | Сообщение # 1198
Отмычка
Пользователи
Сообщений: 43
Награды: 0
Репутация: [ 0 ]

Я так понял это придется все прописывать на каждой локации?
И получается в самом начале такого прописания как:
[cut noguest=Пример];--------- ZATON UNIQUE SQUADS --------
[zat_b38_bloodsucker_simulation]:default_squad
sim_avail = false

[zat_b38_bloodsucker_1_lair]:default_squad
sim_avail = false

[zat_b38_bloodsucker_2_lair]:default_squad
sim_avail = false

[zat_b38_bloodsuckers_sleepers]:default_squad
sim_avail = false[/cut]
Если не ошибаюсь? И причем в каждой локации.
Но в самом вверху есть такие прописания как:
[cut noguest][default]
base = 0
resource = 0 ; артефакты
surge = 0 ; укрытие
lair = 0 ; логово монстров
territory = 0
actor = 0
squad = 0

[default_resource]:default
resource = 2
territory = 1

[default_base]:default
base = 2
territory = 0

[default_lair]:default
lair = 2
territory = 1

[default_squad]:default
squad = 2

[default_territory]:default
territory = 1[/cut]
 
denis2000Дата: Вт, 25.08.2015, 08:38 | Сообщение # 1199
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата flame4 ()
Я так понял это придется все прописывать на каждой локации?

Вы же сами этого хотели.
Цитата flame4 ()
самом вверху есть такие прописания как

Это определены дефолтные настройки различных симуляционных объектов.


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

Всем привет! Я в своём моде на ЗП заспавнил рюкзак с вещами рядом с Ноем. Какую сделать логику, чтобы при открытии рюкзака Ной становился врагом?

Вступи в Смерть, объедини Зону!
 
Поиск: