Модостроение. Спавн и логика
|
|
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 за это полезное сообщение: |
|
|
sergej5500 | Дата: Пн, 20.06.2016, 11:59 | Сообщение # 1321 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата men_stalker ( ) И похоже он не видит логику(нету метки торговца и при торговле ничего нету,
Каким образом прописана ссылка на файл логики?
Цитата men_stalker ( ) при попытке что либо продать - вылет)
Какой лог вылета?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
men_stalker | Дата: Пн, 20.06.2016, 13:31 | Сообщение # 1322 |
Инженер «Свободы»
Свобода
Сообщений: 184
| sergej5500, Цитата sergej5500 ( ) Каким образом прописана ссылка на файл логики? в all.spawn
Код custom_data = <<END [logic] cfg = scripts\escape\esc_trader.ltx END
Всё проверил, пути и названия сответствуют.
[/cut]Цитата sergej5500 ( ) Какой лог вылета? [cut=лог]FATAL ERROR [error]Expression : !m_error_code [error]Function : raii_guard::~raii_guard [error]File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp [error]Line : 748 [error]Description : ... - Зов Припяти\gamedata\scripts\trade_manager.script:211: attempt to index field '?' (a nil value)
stack trace:
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
denis2000 | Дата: Пн, 20.06.2016, 18:34 | Сообщение # 1323 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| men_stalker, В секции из all.spawn Это лишнее: story_id = 410 Этого не хватает: character_profile = esc_sidor_trader cse_alife_trader_abstract__unk1_u8 = 1
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Вт, 21.06.2016, 08:22 | Сообщение # 1324 |
Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, исправил но не помогло. А ест ли какой нибудь альтернативный способ прописать логику? Теперь я уверен что он её не видит: прописал специально неправильное название: ровно ничего не изменилось. И ест ли вообще необходимые анимации в зп?
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 21.06.2016, 09:33 | Сообщение # 1325 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата men_stalker ( ) Теперь я уверен что он её не видит: прописал специально неправильное название: ровно ничего не изменилось.
Вы после правки алл.спавн и его сборки начинали новую игру?
Цитата men_stalker ( ) А ест ли какой нибудь альтернативный способ прописать логику?
Можно добавить в спавн-секцию Сидоровичу ссылку на файл логики. Строка custom_data = ...
Можно сделать Сидоровича сквадом из одного НПС. Логику зарегистрировать в смарте, как эсклюзив. Разработчики Зова Припяти предпочитают этот способ.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 21.06.2016, 10:02 | Сообщение # 1326 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker ( ) А ест ли какой нибудь альтернативный способ прописать логику? Что кастом дату делать в all.spawn, что в секции НПС ризницы нет. Логика не работает, проверяйте путь и имя файла логики, может там русские буквы есть.
Цитата men_stalker ( ) И ест ли вообще необходимые анимации в зп? Если бы не было был бы вылет с указанием какой анимации нет.
Цитата sergej5500 ( ) Можно сделать Сидоровича сквадом из одного НПС. Логику зарегистрировать в смарте, как эсклюзив. Это скорее всего сработает непредсказуемо, ведь схема mob_trader не рассчитана на сквад.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Вт, 21.06.2016, 10:57 | Сообщение # 1327 |
Инженер «Свободы»
Свобода
Сообщений: 184
| А не могли бы вы пояснить за что отвечает строка on_actor_dist_ge_nvis2 = 11? А может быть что игра не видит скрипты bind_trader и mob_trader?, в уроке они по моему нигде не регистрировались.
|
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 21.06.2016, 11:10 | Сообщение # 1328 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| bind_trader.script регистрируется здесь: m_sidor.ltx
Код [m_trader] ... script_binding = bind_trader.bind mob_trader.script как схема поведения регистрируется здесь: modules.script
Код --]] ----------------------------------------------------------------------------------------------- --/ Variables --]] ----------------------------------------------------------------------------------------------- -- Типы схем: stype_stalker = 0 stype_mobile = 1 stype_item = 2 stype_heli = 3 stype_restrictor = 4 stype_trader = 5 ....
load_scheme("mob_trader", "mob_trader", stype_trader)
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
men_stalker | Дата: Вт, 21.06.2016, 17:56 | Сообщение # 1329 |
Инженер «Свободы»
Свобода
Сообщений: 184
| denis2000, спасибо. sergej5500,
Цитата sergej5500 ( ) Вы после правки алл.спавн и его сборки начинали новую игру? Конечно!(тем более у меня сохранение в начале игры не включено ) Логика не видится абсолютно не в all.spawn"не не в m_sidor (пробывал даже проверенную логику сталкера, рестриктора, и пробывал вообще не прописывать). Также пробывал в m_sidor дефолтную логику из m_stalker комбинируя с логикой Сидоровича в спавне. Эфекта нету. Может ли быть что у [m_trader] вообще нету возможности прописывания логики?
Сообщение отредактировал men_stalker - Вт, 21.06.2016, 18:44 |
|
|
Эти 0 пользователя(ей) поблагодарили men_stalker за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 21.06.2016, 20:59 | Сообщение # 1330 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| men_stalker,
Если вас устроит, то предлагаю такой вариант. Берёте адаптированного Сидоровича.
https://yadi.sk/d/3dSlj5PWWjZ5K
Ставите в бункере на точке, где Сидорович должен стоять, спавн-пойнт.
Задаёте Сидору логику такого типа.
[cut=Логика][logic@esc_b2_trader_1] active = remark@esc_b2_trader_1 suitable = {=check_npc_name(esc_b2_trader)} true prior = 300 level_spot = trader post_combat_time = 0,0 can_select_weapon = false trade = misc\trade\order_traders\esc_b2_trader.ltx
[remark@esc_b2_trader_1] gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false combat_ignore_cond = true combat_ignore_keep_when_attacked = true invulnerable = true anim = ward_noweap meet = meet@trader_1 target = story | actor on_info = %=control_npc_position(esc_b2_trader_spawn_point:1)%
[meet@trader_1] close_snd_hello = esc_b2_sidor_hello close_snd_bye = esc_b2_sidor_exit use = {!actor_enemy !actor_has_weapon !has_enemy} true, false allow_break = false trade_enable = true[/cut]
В xr_effects добавьте функцию
[cut=Функция]function control_npc_position(actor,npc,p) if p then local patrol_point = p[1] local distance = tonumber(p[2]) or 1 local point_position = patrol(patrol_point):point(0) if npc:position():distance_to_sqr(point_position) > (distance * distance) then reset_animation(npc) npc:set_npc_position(point_position) end end end[/cut]
При удалении от спавн-пойнта непися принудительно телепортирует обратно. Минус в том, что он будет всё время стоять.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Ср, 22.06.2016, 09:50 | Сообщение # 1331 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker ( ) Может ли быть что у [m_trader] вообще нету возможности прописывания логики? Ну да, а в ТЧ в ЧН и в ЗП в некоторых модах Сидорович без логики работает? Вы где то упустили важные правки. Смотрите урок, смотрите, как все организовано в ЧН смотрите в конце концов, как перенесен Сидор в модах (например Проект Спектрум, там к стати два варианта на сложном скелете сидящий в каморке и на обычном скелете сталкера, ходящий по локации).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вс, 24.07.2016, 18:10 | Сообщение # 1332 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Добрый день. Возник такой вопрос.
Поставил смарт-террайн в Зове Припяти. Сделал сквад из 6 сталкеров. Прописал им эксклюзивные работы.
[cut=Сквад]Цитата [esc_b1_stalker_guard_squad]:online_offline_group faction = stalker npc = esc_b1_stalker_guard_0, esc_b1_stalker_guard_1, esc_b1_stalker_guard_2, esc_b1_stalker_guard_0, esc_b1_stalker_guard_1, esc_b1_stalker_guard_2 target_smart = esc_b1 spawn_point = esc_b1_spawn story_id = esc_b1_stalker_guard_squad
[esc_b1_stalker_guard_0]:stalker $spawn = "respawn\esc_b1_stalker_guard_0" character_profile = sim_default_stalker_0 spec_rank = novice community = stalker
[esc_b1_stalker_guard_1]:stalker $spawn = "respawn\esc_b1_stalker_guard_1" character_profile = sim_default_stalker_1 spec_rank = regular community = stalker
[esc_b1_stalker_guard_2]:stalker $spawn = "respawn\esc_b1_stalker_guard_2" character_profile = sim_default_stalker_2 spec_rank = experienced community = stalker [/cut]
[cut=Обычная логика][logic@esc_b1_stalker_guard] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true
[walker@esc_b1_stalker_guard] meet = meet
[animpoint@esc_b1_stalker_guard] meet = meet
[remark@esc_b1_stalker_guard] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)%
[meet] abuse = false allow_break = false meet_on_talking = false trade_enable = true close_distance = 5 close_anim = guard_na close_victim = actor use = {!actor_has_weapon !actor_enemy !has_enemy} true, false snd_on_use = {=actor_has_weapon !actor_enemy} meet_hide_weapon, nil
;
[logic@esc_b1_stalker_guard_1]:logic@esc_b1_stalker_guard prior = 200 active = walker@esc_b1_stalker_guard_1
[walker@esc_b1_stalker_guard_1]:walker@esc_b1_stalker_guard path_walk = guard_1_walk path_look = guard_1_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_1
[remark@esc_b1_stalker_guard_1]:remark@esc_b1_stalker_guard on_game_timer = 75 | walker@esc_b1_stalker_guard_1 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_2]:logic@esc_b1_stalker_guard prior = 190 active = walker@esc_b1_stalker_guard_2
[walker@esc_b1_stalker_guard_2]:walker@esc_b1_stalker_guard path_walk = guard_2_walk path_look = guard_2_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_2
[remark@esc_b1_stalker_guard_2]:remark@esc_b1_stalker_guard on_game_timer = 75 | walker@esc_b1_stalker_guard_2 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_3]:logic@esc_b1_stalker_guard prior = 180 active = walker@esc_b1_stalker_guard_3
[walker@esc_b1_stalker_guard_3]:walker@esc_b1_stalker_guard path_walk = guard_3_walk path_look = guard_3_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_3
[remark@esc_b1_stalker_guard_3]:remark@esc_b1_stalker_guard on_game_timer = 75 | walker@esc_b1_stalker_guard_3 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_4]:logic@esc_b1_stalker_guard prior = 170 active = walker@esc_b1_stalker_guard_4
[walker@esc_b1_stalker_guard_4]:walker@esc_b1_stalker_guard path_walk = guard_4_walk path_look = guard_4_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_4
[remark@esc_b1_stalker_guard_4]:remark@esc_b1_stalker_guard on_game_timer = 75 | walker@esc_b1_stalker_guard_4 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_5]:logic@esc_b1_stalker_guard prior = 160 active = animpoint@esc_b1_stalker_guard_5
[animpoint@esc_b1_stalker_guard_5]:animpoint@esc_b1_stalker_guard cover_name = esc_b1_guard_animpoint_1 on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_5
[remark@esc_b1_stalker_guard_5]:remark@esc_b1_stalker_guard on_game_timer = 75 | animpoint@esc_b1_stalker_guard_5 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_6]:logic@esc_b1_stalker_guard prior = 150 active = animpoint@esc_b1_stalker_guard_6
[animpoint@esc_b1_stalker_guard_6]:animpoint@esc_b1_stalker_guard cover_name = esc_b1_guard_animpoint_2 on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_6
[remark@esc_b1_stalker_guard_6]:remark@esc_b1_stalker_guard on_game_timer = 75 | animpoint@esc_b1_stalker_guard_6 %-esc_b1_base_guard%[/cut]
[cut=Логика для выброса][logic@esc_b1_stalker_guard_surge] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true
[walker@esc_b1_stalker_guard_surge] meet = meet
[remark@esc_b1_stalker_guard_surge] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)%
[meet] abuse = false allow_break = false meet_on_talking = false trade_enable = true close_distance = 5 close_anim = guard_na close_victim = actor use = {!actor_has_weapon !actor_enemy !has_enemy} true, false snd_on_use = {=actor_has_weapon !actor_enemy} meet_hide_weapon, nil
;
[logic@esc_b1_stalker_guard_surge_1]:logic@esc_b1_stalker_guard_surge prior = 200 active = walker@esc_b1_stalker_guard_surge_1
[walker@esc_b1_stalker_guard_surge_1]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_1_walk path_look = guard_surge_1_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_1
[remark@esc_b1_stalker_guard_surge_1]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_1 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_2]:logic@esc_b1_stalker_guard_surge prior = 190 active = walker@esc_b1_stalker_guard_surge_2
[walker@esc_b1_stalker_guard_surge_2]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_2_walk path_look = guard_surge_2_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_2
[remark@esc_b1_stalker_guard_surge_2]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_2 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_3]:logic@esc_b1_stalker_guard_surge prior = 180 active = walker@esc_b1_stalker_guard_surge_3
[walker@esc_b1_stalker_guard_surge_3]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_3_walk path_look = guard_surge_3_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_3
[remark@esc_b1_stalker_guard_surge_3]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_3 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_4]:logic@esc_b1_stalker_guard_surge prior = 170 active = walker@esc_b1_stalker_guard_surge_4
[walker@esc_b1_stalker_guard_surge_4]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_4_walk path_look = guard_surge_4_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_4
[remark@esc_b1_stalker_guard_surge_4]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_4 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_5]:logic@esc_b1_stalker_guard_surge prior = 160 active = walker@esc_b1_stalker_guard_surge_5
[walker@esc_b1_stalker_guard_surge_5]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_5_walk path_look = guard_surge_5_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_5
[remark@esc_b1_stalker_guard_surge_5]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_5 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_6]:logic@esc_b1_stalker_guard_surge prior = 150 active = walker@esc_b1_stalker_guard_surge_6
[walker@esc_b1_stalker_guard_surge_6]:walker@esc_b1_stalker_guard_surge path_walk = guard_surge_6_walk path_look = guard_surge_6_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_6
[remark@esc_b1_stalker_guard_surge_6]:remark@esc_b1_stalker_guard_surge on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_6 %-esc_b1_base_guard%[/cut]
[cut=Работы в алл.спавн][449]
; cse_abstract properties section_name = smart_cover name = esc_b1_guard_animpoint_1 position = -133.295883178711, -30.1381225585938, -379.260009765625 direction = 0, 3.14159297943115, 0 id = 65535 version = 128 script_version = 12 spawn_id = 790
; cse_alife_object properties game_vertex_id = 17 distance = 4.1999998 level_vertex_id = 122061 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 2
; cse_smart_cover properties description = animpoint_sit_low hold_position_time = 0.62996501 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 is_combat_cover = 1 MP_respawn = 1
; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low, 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[450]
; cse_abstract properties section_name = smart_cover name = esc_b1_guard_animpoint_2 position = -133.186416625977, -30.1384048461914, -384.589233398438 direction = 5.40000000910368e-005, 0, -7.00000009601354e-006 id = 65535 version = 128 script_version = 12 spawn_id = 791
; cse_alife_object properties game_vertex_id = 17 distance = 9.0999994 level_vertex_id = 122056 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 2
; cse_smart_cover properties description = animpoint_sit_low hold_position_time = 1.121894 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 is_combat_cover = 1 MP_respawn = 1
; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low, 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[esc_b1_guard_1_look] points = p0,p1,p2 p0:name = wp00|a=binocular|p=10|t=44000 p0:flags = 0x1 p0:position = -132.189956665039,-30.4367370605469,-328.622436523438 p0:game_vertex_id = 108 p0:level_vertex_id = 122925
p1:name = wp00|a=guard|p=10|t=39000 p1:flags = 0x1 p1:position = -132.697830200195,-30.4474086761475,-328.464416503906 p1:game_vertex_id = 108 p1:level_vertex_id = 122132
p2:name = wp00|a=guard_chasovoy|p=10|t=13000 p2:flags = 0x1 p2:position = -132.667037963867,-30.45046043396,-328.723815917969 p2:game_vertex_id = 108 p2:level_vertex_id = 122131
[esc_b1_guard_1_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -132.852493286133,-25.7893009185791,-354.693786621094 p0:game_vertex_id = 95 p0:level_vertex_id = 122101
[esc_b1_guard_2_look] points = p0,p1,p2 p0:name = wp00|a=guard|p=10|t=42000 p0:flags = 0x1 p0:position = -158.046096801758,-30.259241104126,-330.411834716797 p0:game_vertex_id = 108 p0:level_vertex_id = 92768
p1:name = wp00|a=binocular|p=10|t=41000 p1:flags = 0x1 p1:position = -158.310607910156,-30.2621364593506,-330.633544921875 p1:game_vertex_id = 108 p1:level_vertex_id = 92768
p2:name = wp00|a=guard_chasovoy|p=10|t=13000 p2:flags = 0x1 p2:position = -158.558868408203,-30.2622699737549,-330.658538818359 p2:game_vertex_id = 108 p2:level_vertex_id = 91930
[esc_b1_guard_2_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -158.911880493164,-30.4787406921387,-347.960693359375 p0:game_vertex_id = 92 p0:level_vertex_id = 91909
[esc_b1_guard_3_look] points = p0,p1,p2 p0:name = wp00|a=guard|p=10|t=10|t=43000 p0:flags = 0x1 p0:position = -158.606658935547,-30.1854248046875,-356.474212646484 p0:game_vertex_id = 107 p0:level_vertex_id = 91897
p1:name = wp00|a=sit_ass|p=10|t=33000 p1:flags = 0x1 p1:position = -158.464492797852,-30.1963806152344,-356.156341552734 p1:game_vertex_id = 107 p1:level_vertex_id = 92735
p2:name = wp00|a=guard_chasovoy|p=10|t=12000 p2:flags = 0x1 p2:position = -158.246566772461,-30.1823024749756,-356.565093994141 p2:game_vertex_id = 107 p2:level_vertex_id = 92735
[esc_b1_guard_3_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -147.889556884766,-30.1396903991699,-356.919769287109 p0:game_vertex_id = 92 p0:level_vertex_id = 105120
[esc_b1_guard_4_look] points = p0,p1,p2 p0:name = wp00|a=sit_ass|p=10|t=39000 p0:flags = 0x1 p0:position = -135.815322875977,-30.1376800537109,-370.718322753906 p0:game_vertex_id = 17 p0:level_vertex_id = 118901
p1:name = wp00|a=guard|p=10|t=33000 p1:flags = 0x1 p1:position = -135.258758544922,-30.1376476287842,-370.151275634766 p1:game_vertex_id = 17 p1:level_vertex_id = 119694
p2:name = wp00|a=guard_chasovoy|p=10|t=39000 p2:flags = 0x1 p2:position = -134.54963684082,-30.1376113891602,-369.574920654297 p2:game_vertex_id = 17 p2:level_vertex_id = 120498
[esc_b1_guard_4_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -125.466621398926,-30.1500015258789,-370.526397705078 p0:game_vertex_id = 111 p0:level_vertex_id = 130964
[esc_b1_guard_surge_1_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -138.286712646484,-30.4574108123779,-327.342742919922 p0:game_vertex_id = 108 p0:level_vertex_id = 115714
[esc_b1_guard_surge_1_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -138.739166259766,-25.439302444458,-356.944152832031 p0:game_vertex_id = 95 p0:level_vertex_id = 115679
[esc_b1_guard_surge_2_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -144.096069335938,-30.556884765625,-342.284118652344 p0:game_vertex_id = 108 p0:level_vertex_id = 109118
[esc_b1_guard_surge_2_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -143.550567626953,-29.689302444458,-351.596527099609 p0:game_vertex_id = 92 p0:level_vertex_id = 109926
[esc_b1_guard_surge_3_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -155.508148193359,-30.2657032012939,-354.145446777344 p0:game_vertex_id = 92 p0:level_vertex_id = 96125
[esc_b1_guard_surge_3_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -142.984802246094,-29.689302444458,-353.545745849609 p0:game_vertex_id = 92 p0:level_vertex_id = 110784
[esc_b1_guard_surge_4_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -132.395095825195,-30.2897415161133,-344.633636474609 p0:game_vertex_id = 108 p0:level_vertex_id = 122907
[esc_b1_guard_surge_4_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -133.1767578125,-29.689302444458,-354.844268798828 p0:game_vertex_id = 95 p0:level_vertex_id = 122100
[esc_b1_guard_surge_5_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -114.594375610352,-30.2213115692139,-369.159820556641 p0:game_vertex_id = 109 p0:level_vertex_id = 143861
[esc_b1_guard_surge_5_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -121.740524291992,-30.0499992370605,-370.309661865234 p0:game_vertex_id = 111 p0:level_vertex_id = 135244
[esc_b1_guard_surge_6_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -135.4990234375,-30.1378078460693,-373.130920410156 p0:game_vertex_id = 17 p0:level_vertex_id = 118898
[esc_b1_guard_surge_6_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -126.629096984863,-30.0499992370605,-374.66650390625 p0:game_vertex_id = 94 p0:level_vertex_id = 129364[/cut]
Заспавнил сквад. Походил, посмотрел. Активировал выброс. Убедился, что сталкеры выполняют свои работы без замечаний.
Поставил на этом смарте 6 работ для дефолтных сквадов. И 6 работ для выброса.
[cut=Дефолтные работы]
[esc_b1_surge_1_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -167.285629272461,-30.1688995361328,-330.092315673828 p0:game_vertex_id = 108 p0:level_vertex_id = 82554
[esc_b1_surge_1_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -168.706130981445,-25.4347991943359,-352.967712402344 p0:game_vertex_id = 87 p0:level_vertex_id = 80831
[esc_b1_surge_2_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -151.503067016602,-30.202766418457,-356.528747558594 p0:game_vertex_id = 92 p0:level_vertex_id = 101093
[esc_b1_surge_2_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -166.219909667969,-25.4347991943359,-354.846130371094 p0:game_vertex_id = 87 p0:level_vertex_id = 84136
[esc_b1_surge_3_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -171.248733520508,-27.9342384338379,-376.114135742188 p0:game_vertex_id = 110 p0:level_vertex_id = 77565
[esc_b1_surge_3_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -168.793075561523,-25.4347991943359,-357.028503417969 p0:game_vertex_id = 87 p0:level_vertex_id = 80819
[esc_b1_surge_4_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -153.045776367188,-30.2292613983154,-355.841552734375 p0:game_vertex_id = 92 p0:level_vertex_id = 98640
[esc_b1_surge_4_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -166.616104125977,-29.6847991943359,-354.872222900391 p0:game_vertex_id = 103 p0:level_vertex_id = 83335
[esc_b1_surge_5_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -167.324554443359,-30.5494747161865,-342.617248535156 p0:game_vertex_id = 108 p0:level_vertex_id = 82537
[esc_b1_surge_5_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -168.090194702148,-29.6026268005371,-356.961700439453 p0:game_vertex_id = 103 p0:level_vertex_id = 81671
[esc_b1_surge_6_look] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -186.210678100586,-30.3860969543457,-354.545806884766 p0:game_vertex_id = 104 p0:level_vertex_id = 64025
[esc_b1_surge_6_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -169.829605102539,-29.6847991943359,-354.228271484375 p0:game_vertex_id = 104 p0:level_vertex_id = 79162
[esc_b1_walker_1_look] points = p0,p1,p2 p0:name = wp00|a=binocular|p=10|t=41000 p0:flags = 0x1 p0:position = -167.522048950195,-30.0842094421387,-328.332794189453 p0:game_vertex_id = 108 p0:level_vertex_id = 82557
p1:name = wp00|a=guard|p=10|t=42000 p1:flags = 0x1 p1:position = -167.812545776367,-30.081148147583,-328.294769287109 p1:game_vertex_id = 108 p1:level_vertex_id = 81708
p2:name = wp00|a=guard_chasovoy|p=10|t=11000 p2:flags = 0x1 p2:position = -168.118942260742,-30.068229675293,-328.051025390625 p2:game_vertex_id = 108 p2:level_vertex_id = 81708
[esc_b1_walker_1_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -167.995758056641,-25.4347991943359,-352.900421142578 p0:game_vertex_id = 87 p0:level_vertex_id = 81681
[esc_b1_walker_2_look] points = p0,p1,p2 p0:name = wp00|a=binocular|p=10|t=39000 p0:flags = 0x1 p0:position = -153.719314575195,-30.2233276367188,-327.627197265625 p0:game_vertex_id = 108 p0:level_vertex_id = 97845
p1:name = wp00|a=guard|p=10|t=38000 p1:flags = 0x1 p1:position = -153.952651977539,-30.2136001586914,-326.956726074219 p1:game_vertex_id = 18 p1:level_vertex_id = 97846
p2:name = wp00|a=guard_chasovoy|p=10|t=11000 p2:flags = 0x1 p2:position = -154.002166748047,-30.2081184387207,-326.575561523438 p2:game_vertex_id = 18 p2:level_vertex_id = 97846
[esc_b1_walker_2_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -152.101959228516,-30.5187568664551,-348.334869384766 p0:game_vertex_id = 92 p0:level_vertex_id = 100292
[esc_b1_walker_3_look] points = p0,p1 p0:name = wp00|a=sit_ass|p=10|t=39000 p0:flags = 0x1 p0:position = -174.371597290039,-30.2146110534668,-354.878509521484 p0:game_vertex_id = 104 p0:level_vertex_id = 74863
p1:name = wp00|a=guard_chasovoy|p=10|t=12000 p1:flags = 0x1 p1:position = -174.56217956543,-30.2176513671875,-354.988555908203 p1:game_vertex_id = 104 p1:level_vertex_id = 74863
[esc_b1_walker_3_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -176.187393188477,-28.3585643768311,-370.049865722656 p0:game_vertex_id = 110 p0:level_vertex_id = 72922
[esc_b1_walker_4_look] points = p0,p1 p0:name = wp00|a=sit_ass|p=10|t=33000 p0:flags = 0x1 p0:position = -179.899429321289,-26.4625854492188,-384.9267578125 p0:game_vertex_id = 110 p0:level_vertex_id = 69711
p1:name = wp00|a=guard_chasovoy|p=10|t=13000 p1:flags = 0x1 p1:position = -179.927383422852,-26.443229675293,-385.128936767578 p1:game_vertex_id = 110 p1:level_vertex_id = 69711
[esc_b1_walker_4_walk] points = p0 p0:name = wp00 p0:flags = 0x1 p0:position = -176.19075012207,-28.8572406768799,-366.735931396484 p0:game_vertex_id = 110 p0:level_vertex_id = 72925
[445]
; cse_abstract properties section_name = smart_cover name = esc_b1_animpoint_1 position = -178.141067504883, -28.4921321868896, -368.347015380859 direction = -0.120428003370762, -1.57079601287842, 0.036651998758316 id = 65535 version = 128 script_version = 12 spawn_id = 794
; cse_alife_object properties game_vertex_id = 110 distance = 7 level_vertex_id = 71674 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 2
; cse_smart_cover properties description = animpoint_sit_low enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 is_combat_cover = 1 MP_respawn = 1
; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low, 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[446]
; cse_abstract properties section_name = smart_cover name = esc_b1_animpoint_2 position = -173.799255371094, -28.7090454101563, -368.374420166016 direction = -0.169296994805336, 1.57079601287842, 0.0558510012924671 id = 65535 version = 128 script_version = 12 spawn_id = 795
; cse_alife_object properties game_vertex_id = 110 distance = 2.8 level_vertex_id = 75509 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = sphere shape_0:offset = 0,0,0 shape_0:radius = 2
; cse_smart_cover properties description = animpoint_sit_low enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 is_combat_cover = 1 MP_respawn = 1
; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low, 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/cut]
Заспавнил сквад для теста.
[cut=Сквад для теста][test_squad_1]:online_offline_group faction = stalker npc = sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_2, sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_2 target_smart = esc_b1 spawn_point = esc_b1_spawn[/cut]
Ожидал, что тестовый сквад займет дефолтные работы. Но эти сталкеры полезли на эксклюзивные работы. Заняли чужие секции walker. Анимпойнты заняли свои собственные (дефолтные). После активации выброса тестовый сквад занял места, предназначенные дефолтным сталкерам. После окончания выброса валкеры из тестового сквада снова залезли на чужие работы.
[cut=Скрины]
[/cut]
Почему строка suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true не срабатывает?
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 24.07.2016, 21:56 | Сообщение # 1333 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Не уверен что такая конструкция работает бес проблем: [logic@esc_b1_stalker_guard_surge_1]:logic@esc_b1_stalker_guard_surge
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 26.07.2016, 20:11 | Сообщение # 1334 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата denis2000 ( ) Не уверен что такая конструкция работает бес проблем: [logic@esc_b1_stalker_guard_surge_1]:logic@esc_b1_stalker_guard_surge
Я использовал такой способ записи многократно. Никаких проблем не было.
Для пробы переписал логику.
[cut=Обычная логика][meet] abuse = false allow_break = false meet_on_talking = false trade_enable = true close_distance = 5 close_anim = guard_na close_victim = actor use = {!actor_has_weapon !actor_enemy !has_enemy} true, false snd_on_use = {=actor_has_weapon !actor_enemy} meet_hide_weapon, nil
;
[logic@esc_b1_stalker_guard_1] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 200 active = walker@esc_b1_stalker_guard_1
[walker@esc_b1_stalker_guard_1] meet = meet path_walk = guard_1_walk path_look = guard_1_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_1
[remark@esc_b1_stalker_guard_1] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_1 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_2] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 190 active = walker@esc_b1_stalker_guard_2
[walker@esc_b1_stalker_guard_2] meet = meet path_walk = guard_2_walk path_look = guard_2_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_2
[remark@esc_b1_stalker_guard_2] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_2 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_3] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 180 active = walker@esc_b1_stalker_guard_3
[walker@esc_b1_stalker_guard_3] meet = meet path_walk = guard_3_walk path_look = guard_3_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_3
[remark@esc_b1_stalker_guard_3] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_3 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_4] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 170 active = walker@esc_b1_stalker_guard_4
[walker@esc_b1_stalker_guard_4] meet = meet path_walk = guard_4_walk path_look = guard_4_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_4
[remark@esc_b1_stalker_guard_4] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_4 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_5] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 160 active = animpoint@esc_b1_stalker_guard_5
[animpoint@esc_b1_stalker_guard_5] meet = meet cover_name = esc_b1_guard_animpoint_1 on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_5
[remark@esc_b1_stalker_guard_5] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | animpoint@esc_b1_stalker_guard_5 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_6] suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true prior = 150 active = animpoint@esc_b1_stalker_guard_6
[animpoint@esc_b1_stalker_guard_6] meet = meet cover_name = esc_b1_guard_animpoint_2 on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_6
[remark@esc_b1_stalker_guard_6] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | animpoint@esc_b1_stalker_guard_6 %-esc_b1_base_guard%[/cut]
[cut=Логика для выброса][meet] abuse = false allow_break = false meet_on_talking = false trade_enable = true close_distance = 5 close_anim = guard_na close_victim = actor use = {!actor_has_weapon !actor_enemy !has_enemy} true, false snd_on_use = {=actor_has_weapon !actor_enemy} meet_hide_weapon, nil
;
[logic@esc_b1_stalker_guard_surge_1] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 200 active = walker@esc_b1_stalker_guard_surge_1
[walker@esc_b1_stalker_guard_surge_1] meet = meet path_walk = guard_surge_1_walk path_look = guard_surge_1_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_1
[remark@esc_b1_stalker_guard_surge_1] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_1 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_2] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 190 active = walker@esc_b1_stalker_guard_surge_2
[walker@esc_b1_stalker_guard_surge_2] meet = meet path_walk = guard_surge_2_walk path_look = guard_surge_2_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_2
[remark@esc_b1_stalker_guard_surge_2] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_2 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_3] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 180 active = walker@esc_b1_stalker_guard_surge_3
[walker@esc_b1_stalker_guard_surge_3] meet = meet path_walk = guard_surge_3_walk path_look = guard_surge_3_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_3
[remark@esc_b1_stalker_guard_surge_3] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_3 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_4] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 170 active = walker@esc_b1_stalker_guard_surge_4
[walker@esc_b1_stalker_guard_surge_4] meet = meet path_walk = guard_surge_4_walk path_look = guard_surge_4_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_4
[remark@esc_b1_stalker_guard_surge_4] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_4 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_5] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 160 active = walker@esc_b1_stalker_guard_surge_5
[walker@esc_b1_stalker_guard_surge_5] meet = meet path_walk = guard_surge_5_walk path_look = guard_surge_5_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_5
[remark@esc_b1_stalker_guard_surge_5] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_5 %-esc_b1_base_guard%
;
[logic@esc_b1_stalker_guard_surge_6] suitable = {=check_npc_name(esc_b1_stalker_guard_) =surge_started} true prior = 150 active = walker@esc_b1_stalker_guard_surge_6
[walker@esc_b1_stalker_guard_surge_6] meet = meet path_walk = guard_surge_6_walk path_look = guard_surge_6_look on_info = {!actor_enemy =see_actor =actor_has_weapon =dist_to_actor_le(15)} remark@esc_b1_stalker_guard_surge_6
[remark@esc_b1_stalker_guard_surge_6] anim = threat target = story | actor meet = no_meet on_info = {-esc_b1_base_guard} %+esc_b1_base_guard =play_sound(zat_a2_base_guard)% on_game_timer = 75 | walker@esc_b1_stalker_guard_surge_6 %-esc_b1_base_guard%[/cut]
Ситуация никак не изменилась. Неписи sim_default становятся на работы валкеров, если нет выброса. Игнорируют строку suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} true.
Во время выброса неписи чужие работы не занимают.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 26.07.2016, 20:39 | Сообщение # 1335 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| sergej5500, Вот давайте посмотрим как у вас называются пути. Например раз path_walk = guard_1_walk, то имя пути соответственно: esc_b1_guard_1_walk. А теперь смотрим скрипт дефолтовых работ на смарте gulag_general.script:
Код while level.patrol_path_exists(gname.."_guard_"..it.."_walk") do поскольку gname="esc_b1" имя пути it="1","2",... то имена путей esc_b1_guard_1_walk, esc_b1_guard_2_walk это имнеа путей дефолтных работ. А значит с данными путями будут существовать ДВЕ РАБОТЫ, одна для дефолтовых НПС и еще одна эксклюзивная! Вот и весь парадокс: симуляционный сквад занимает вполне законные дефолтные работы которые вы им и создали, совершенно игнорируя эксклюзивы на которые им ходить запрещено! Так что строка suitable = {=check_npc_name(esc_b1_stalker_guard_) !surge_started} честно работает!
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
|