|
Модостроение. Спавн и логика
|
|
| 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 за это полезное сообщение: |
|
|
| denis2000 | Дата: Ср, 22.06.2016, 09:50 | Сообщение # 1306 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата men_stalker (  ) Может ли быть что у [m_trader] вообще нету возможности прописывания логики? Ну да, а в ТЧ в ЧН и в ЗП в некоторых модах Сидорович без логики работает? Вы где то упустили важные правки. Смотрите урок, смотрите, как все организовано в ЧН смотрите в конце концов, как перенесен Сидор в модах (например Проект Спектрум, там к стати два варианта на сложном скелете сидящий в каморке и на обычном скелете сталкера, ходящий по локации).
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вс, 24.07.2016, 18:10 | Сообщение # 1307 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 1308 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Не уверен что такая конструкция работает бес проблем: [logic@esc_b1_stalker_guard_surge_1]:logic@esc_b1_stalker_guard_surge
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| sergej5500 | Дата: Вт, 26.07.2016, 20:11 | Сообщение # 1309 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 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 | Сообщение # 1310 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 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 за это полезное сообщение: |
|
|
| Бармен | Дата: Вс, 21.08.2016, 22:20 | Сообщение # 1311 |
 Ветеран
Свобода
Сообщений: 370
| Всем привет народ, будет ли работать вот такая логика, лежащего сталкера.
Код [logic] active = animpoint@wounded prior = 200
[animpoint@wounded] cover_name = wounded_smart_cover avail_animations = ??? combat_ignore_cond = true combat_ignore_keep_when_attacked = true wounded = wounded
[wounded] hp_state = 0|wounded_heavy@help_heavy hp_state_see = 0|wounded_heavy@help_heavy hp_victim = 0|nil hp_fight = 0|false hp_cover = 0|false И что какую анимацию нужно прописывать, в строке avail_animations. Или на smart_cover, лежащей сталкер не работает?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Бармен за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 21.08.2016, 22:59 | Сообщение # 1312 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата Бармен (  ) какую анимацию нужно прописывать, в строке avail_animations Любую доступную в смартковере.
Цитата Бармен (  ) Или на smart_cover, лежащей сталкер не работает? Пробуйте и узнаете. А вообще раненный делается на вейпоинте.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Бармен | Дата: Вс, 21.08.2016, 23:02 | Сообщение # 1313 |
 Ветеран
Свобода
Сообщений: 370
| Цитата denis2000 (  ) А вообще раненный делается на вейпоинте. Ну я это заметил, минуту назад когда посмотрел, в других проектах.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Бармен за это полезное сообщение: |
|
|
| progkuchumov | Дата: Чт, 15.09.2016, 21:18 | Сообщение # 1314 |
 Отмычка
Пользователи
Сообщений: 38
| Здравствуйте, уважаемые!
Подскажите пожалуйста, как в ЗП сделать, чтобы НПС звал ГГ, пока к нему не подойдешь? Сколько способов не перепробовал - ни один не работает. Анимацию махания рукой я сделал в way локации параметром a=hello_wpn. Пробовал там же указать звук через s=звуковая_схема - не работает, или я не правильно указываю что то.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
| sergej5500 | Дата: Чт, 15.09.2016, 21:30 | Сообщение # 1315 |
 Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| progkuchumov,
Звуковое сопровождение у сталкера можно вызвать из логики. Что то вроде:
on_info = {=dist_to_actor_le(15) -stalker_play_sound} %+stalker_play_sound =play_sound(stalker_play_sound_sheme)%
Параметры:
dist_to_actor_le(15) - при дистанции до сталкера меньше 15 метров он начнёт говорить.
stalker_play_sound - инфопорция, выдаваемая при озвучке.
stalker_play_sound_sheme - название звуковой схемы, которую выдаст сталкер. Схема прописывается в файл gamedata\configs\misc\script_sound
|
| |
|
| Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
| progkuchumov | Дата: Чт, 15.09.2016, 23:08 | Сообщение # 1316 |
 Отмычка
Пользователи
Сообщений: 38
| Благодарю за помощь, помогло.
Подскажите пожалуйста, как запретить нпсу, чтобы он свои вещи продавал - оружие там, патроны? Смешно, но такую мелочь не могу найти -уже хотел полностью торговлю с ним запретить, поставил trade_enable = false - и ничего, все равно торговля идет. И если можно, ткните меня пожалуйста, где можно посмотреть настройку всех подобных параметров нпс в сталкер зов припяти. Потому что каждую такую мелочь по полдня ищу в сети и натыкаюсь на кучу неработающих вариантов. Смотрел в вики настройку логики - и тоже ничего не нашел.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
| Glomar | Дата: Чт, 15.09.2016, 23:28 | Сообщение # 1317 |
 Хозяин Зоны
Пользователи
Сообщений: 23464
| Цитата progkuchumov (  ) где можно посмотреть настройку всех подобных параметров нпс в сталкер зов припяти В интернете можно скачать сборники уроков по модостроению. Есть и видеоуроки.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Glomar за это полезное сообщение: |
|
|
| progkuchumov | Дата: Пт, 16.09.2016, 03:01 | Сообщение # 1318 |
 Отмычка
Пользователи
Сообщений: 38
| Цитата Glomar (  ) В интернете можно скачать сборники уроков по модостроению. Есть и видеоуроки.
Не поверите, у меня 20 вкладок открыто со всякими гайдами и сборниками, и нигде нет того, что мне нужно - или примеры не рабочие. Вот скачал я один сборник - там только показываются конфигурационные файлы торговцев и как им добавлять товары в продажу. Что я и так знаю...
Или не рабочие примеры. Вот trade_enable = false - по гайдам этот параметр отключает торговлю. Но он не работает, и не понятно, почему (((Добавлено (15.09.2016, 23:53) --------------------------------------------- Вот нашел:
trade = misc\trade_voron.ltx
Это мне надо значит создать файл, прописать там, что непись продает и покупает и подключить его к логике? Но тогда допустим, если я запрещу ему продавать оружие, то он и покупать его не будет, а мне нужно, чтобы он мог покупать. Добавлено (16.09.2016, 03:01) --------------------------------------------- Прошу прощения, еще раз почитал - разобрался. Если можно, удалите мои сообщения.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
| Glomar | Дата: Пт, 16.09.2016, 07:36 | Сообщение # 1319 |
 Хозяин Зоны
Пользователи
Сообщений: 23464
| Цитата progkuchumov (  ) Прошу прощения, еще раз почитал - разобрался. Если можно, удалите мои сообщения. Если нашёл Николай ответ, то можешь его оставить в своём посте. Возможно другим пользователям пригодиться.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Glomar за это полезное сообщение: |
|
|
| progkuchumov | Дата: Пт, 16.09.2016, 09:28 | Сообщение # 1320 |
 Отмычка
Пользователи
Сообщений: 38
| Да все элементарно оказалось. Я думал, что надо какой то параметр в логике просто прописать. А надо было создать конфигурационный файл торговли с персонажем по аналогии с торговцами, и подключить его в логике:
trade = misc\trade\trade_персонаж.ltx
В нем и указать, что он может покупать в разделе generic_buy , и продавать generic_sell.
Только два момента все равно оказались непонятными мне: 1. Почему trade_enable = false не отключает торговлю с персонажем? Видимо, надо еще какой то параметр прописать, но я так этого и не нашел. 2. Я запретил в файле торговли продажу патронов, но персонаж все равно продает патроны. Видимо, где то еще какой то параметр срабатывает, а какой - непонятно.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили progkuchumov за это полезное сообщение: |
|
|
|