Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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
[ Если у вас не открывается файл CHM(Этот текст скрыт от гостей) ]


[ Где найти лог игры после вылета ]
[ Получение более подробной информации о вылете (ХОВАН) ]



Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы,
статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
АраксДата: Ср, 18.03.2015, 06:16 | Сообщение # 1156
Удаленные



denis2000, да мне уже не надо. Я решил завязать со сталкером
 
mexiccanecДата: Чт, 19.03.2015, 10:11 | Сообщение # 1157
Гражданский
Пользователи
Сообщений: 22
Награды: 0
Репутация: [ -10 ]

Народ а можно к примеру на локе Затон,на Скадовске убрать лишних сталков,там столько народа ненужного тусуется что у меня при подходе в зону загрузки так лагает что иногда и выкидывает или уменьшить хотя бы спавн монстров которые там после высокого ранга в тройном умножение спавнятся?
 
sergej5500Дата: Чт, 19.03.2015, 20:38 | Сообщение # 1158
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

mexiccanec,

Чтобы убрать лишних сталкеров со Скадовска, надо в файле gamedata\configs\scripts\zaton\smart\zat_stalker_base_smart менять параметр max_population. Выставьте его равным 3-4.
 
mexiccanecДата: Пт, 20.03.2015, 12:36 | Сообщение # 1159
Гражданский
Пользователи
Сообщений: 22
Награды: 0
Репутация: [ -10 ]

Поставлю 1,а там видно будет,спасибо.
 
sergej5500Дата: Вс, 22.03.2015, 13:57 | Сообщение # 1160
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый день.

Сделал на Кордоне собаку, гуляющую по Блокпосту. Наподобие собаки Ноя или Кота Тима Везунчика.

[ Логика ]


[ Секции собаки ]


[ Пути ]


После спавна собаки происходит вылет.

[ Лог ]


Неписям на смарте прописан запрет на собаку.

combat_ignore_cond = {=check_enemy_name(esc_b1_army_dog)} true

Если собаки нет, то вылета тоже нет. Чем движку не приглянулась псина?
 
ZrazilДата: Вс, 22.03.2015, 14:30 | Сообщение # 1161
Удаленные



Всем доброго времени суток! Кто-нибудь когда-то сталкивался с таким вылетом? Что может быть причиной?

[ Лог ]


Все замечательно работало, спавнилось как надо и тут после компиляции свежего спавна через сдк выдает такое.


Сообщение отредактировал Zrazil - Вс, 22.03.2015, 14:31
 
denis2000Дата: Вс, 22.03.2015, 21:47 | Сообщение # 1162
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Попробуйте для начала спавн сквада собаки без эксклюзивной логики. Не вижу пока ничего очевидного, поэтому предлагаю идти по шагам с каждым шагом усложняя настройки.

Zrazil, Что в 1261 строке скрипта smart_terrain.script?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ZrazilДата: Пн, 23.03.2015, 00:44 | Сообщение # 1163
Удаленные



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

Zrazil, max_population = nil? Проверяйте настройки смартов, везде ли корректно установлен данный параметр.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Вт, 24.03.2015, 00:03 | Сообщение # 1165
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата denis2000 ()
Попробуйте для начала спавн сквада собаки без эксклюзивной логики. Не вижу пока ничего очевидного, поэтому предлагаю идти по шагам с каждым шагом усложняя настройки.


Попробовал разные варианты. Выяснил, что игра не любит строку

combat_ignore_cond = {=target_squad_name(esc_b1_military_squad)} true, {=target_squad_name(esc_b1_commander_1_squad)} true, {=target_squad_name(esc_b1_commander_2_squad)} true, {=target_squad_name(esc_b1_plennic_squad)} true, {=target_squad_name(esc_b1_plennic_bodygard_squad)} true, {=check_enemy_profile(sim_default_)} true, {=check_enemy_profile(sim_respawn_)} true, {=check_enemy_name(actor)} true

точнее её часть

{=target_squad_name(esc_b1_military_squad)} true, {=target_squad_name(esc_b1_commander_1_squad)} true, {=target_squad_name(esc_b1_commander_2_squad)} true, {=target_squad_name(esc_b1_plennic_squad)} true, {=target_squad_name(esc_b1_plennic_bodygard_squad)} true,

[ Функция ]


[ Сквады ]


Вопрос, можно ли использовать функцию target_squad_name в логике собаки?
 
denis2000Дата: Вт, 24.03.2015, 08:26 | Сообщение # 1166
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

sergej5500, Ну вот где собака порылась:
1. Сквад не может быть целью одиночного НПС, только другой НПС.
2. Функция target_squad_name проверяет входит ли НПС из логики которого вызвана функция в указанный сквад, тоесть совсем не то что кажеться из названия.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Вт, 24.03.2015, 09:42 | Сообщение # 1167
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

sergej5500, можно сделать всё гораздо проще, если тебе нужно, чтобы собака не реагировала на Сталкеров.

Для этого в файл xr_conditions.script добавишь функцию

Код
function check_enemy_stalker( actor , npc )
   local enemy_id = db.storage[ npc:id() ].enemy_id
   local enemy = db.storage[ enemy_id ] and db.storage[ enemy_id ].object
   if enemy and enemy:alive() and IsStalker( enemy ) then
    return true
   end
   return false
end


Ну и проверка в логике:

combat_ignore_cond = {=check_enemy_stalker} true, false

Все сталкеры и ГГ будут игнорироваться, как враги.


Терпение......
И все получится!


Сообщение отредактировал makdm - Вт, 24.03.2015, 09:43
 
sergej5500Дата: Вт, 24.03.2015, 19:41 | Сообщение # 1168
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

makdm,

С функцией check_enemy_stalker все понятно. А как написать условие игнорирования всех сталкеров, кроме игрока?

Добавлено (24.03.2015, 19:41)
---------------------------------------------
И еще один вопрос. В логике собаки Ноя используется функция =set_visual_memory_enabled(0). Видимо, чтобы не реагировал индикатор видимости игрока противником.

Для сквадов неписей иногда применяется параметр relationship = enemy, = neutral, = friend. Для сквадов монстров он будет работать?

 
makdmДата: Вт, 24.03.2015, 20:34 | Сообщение # 1169
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата sergej5500 ()
А как написать условие игнорирования всех сталкеров, кроме игрока?

Честно говоря не понял "юмора".
Ты же сам пишешь в своих проверках
Цитата sergej5500 ()
{=check_enemy_name(actor)} true


А теперь вдруг игрок должен стать врагом для собаки.

Ну так добавить проверку на игрока и поставить её первой.

combat_ignore_cond = {=check_enemy_name(actor)} false, {=check_enemy_stalker} true, false

Цитата sergej5500 ()
Для сквадов монстров он будет работать?

Проверь и сразу будет понятно.
Только, раз уж разрабы Сталкера добавили функцию set_visual_memory_enabled в игру, то, наверное, это было сделано не просто так?


Терпение......
И все получится!
 
sergej5500Дата: Сб, 02.05.2015, 01:05 | Сообщение # 1170
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Цитата makdm ()
Честно говоря не понял "юмора".


Это нужно для конечной секции логики собаки. Если игрок атаковал смарт, то вояки и собака становятся ему врагами.
У собаки указано combat_ignore_cond = {=check_enemy_stalker} true. В том числе и актор. Если эту функцию убрать, то псина кинется на первого подвернувшегося солдата. А если не убирать, то под условие попадает и актор.

combat_ignore_cond = {=check_enemy_name(actor)} false, {=check_enemy_stalker} true, false

Добавлено (08.04.2015, 00:03)
---------------------------------------------
Добрый вечер.

Столкнулся с такой проблемой. При выполнении квеста в лесничестве из оригинала Зова Припяти Спартак не хочет говорить с ГГ.

При получении задания у Бороды спавнится сквад из 4-х сталкеров. Затем к ним 5-м доспавнивают Спартака. 4 сталкера без проблем выполняют свою работу. Спартак не хочет занимать свое место. Не хочет говорить. Квест виснет.

Помогает запись сейва. Причем сейв надо делать далеко от сквада. После загрузки сейва Спартак выполняет квестовые обязанности.

Радиус загрузки локации в сборке - 225 метров.

Единственное, что приходит в голову - спавн Спартака отдельным сквадом. С соответствующими переделками рестрикторов и конфигов.

Вопрос такой. Поможет ли вот эта наработка? Если сквад после спавна Спартака перевести в оффлайн, затем в онлайн, то логика неписей перезагрузится?

Добавлено (02.05.2015, 01:05)
---------------------------------------------
Добрый вечер.

Для своего мода сделал Сидоровича. Прописал ему его озвучку из ТЧ.

[ Логика ]


Все нормально работало.

Далее решил несколько квестовых персонажей: торговец, медик, сберегатель, банкир объединить в один сквад.
До этого все эти персы спавнились каждый отдельным сквадом. Сидорович попал в этот сквад. Рядовым бойцом.

И перестал приветствовать. Строки

close_snd_hello = esc_b2_sidor_hello
close_snd_bye = esc_b2_sidor_exit

перестали работать.

Можно ли исправить ситуацию? Спавн Сидора отдельным сквадом нежелателен.

 
Поиск: