AKKK1 6 Опубликовано 13 Марта 2011 (изменено) Использованние функций времени в схамах логики НПС. На прмере логики работ гулага escape_lager попробуем заставить нпс менять работы каждые два часа, так же добавим точки сна и соответствующие им работы с логикой + 4 работы на которых сталкеры будут спать с 21 до 6 утра в подвалах, а в остальное время гулять (уходить в рейд). Потребуется AC/DC и блокнот . Важно: В конкретный отрезок времени нпс должен находится в одной схеме поведения срого соответствующей этому отрезку. Итак в нашем случае это выглядит так . Разделим обитателей лагеря на пары по уже имеющимся работам + добавим 2 новые (сон). Имеем 2 охранников 2 парулирующих 2 сидящих у костра добавляем 2 спящих и 4 уходяших в рейд. Итого 12 работ . файл gulag_escape.script измененная часть --' Лагерь новичков на Escape if type == "esc_lager" then -- охранники t = { section = "logic@esc_lager_zoneguard1", idle = 0, prior = 10, state = {0,1,2}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) t = { section = "logic@esc_lager_zoneguard2", idle = 0, prior = 9, state = {0,1,2}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) -- патрулирующие t = { section = "logic@esc_lager_walker3", idle = 0, prior = 11, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_lager_walker4", idle = 0, prior = 12, state = {0,1,2}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) -- сидящие у костра t = { section = "logic@esc_lager_kamp1", idle = 0, prior = 16, state = {0,1,2}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) t = { section = "logic@esc_lager_kamp2", idle = 0, prior = 15, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) -- спящие t = { section = "logic@esc_lager_mods31", idle = 0, prior = 14, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_lager_mods41", idle = 0, prior = 13, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) -- Сони сони (спящие и гуляющие) t = { section = "logic@esc_lager_mods1", idle = 0, prior = 21, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_lager_mods2", idle = 0, prior = 22, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_lager_mods3", idle = 0, prior = 23, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) t = { section = "logic@esc_lager_mods4", idle = 0, prior = 24, state = {0,1,2}, online = true, in_rest = "", out_rest = "" } table.insert(sj, t) Удаленно название рестриктора в параметре out_rest = "" иначе вылет any vertex В файл S.T.A.L.K.E.R. - Shadow of Chernobyl\gamedata\config\misc\gulag_escape.ltx добавляем логику для новых работ ;сони которые пойдут гулять [logic@esc_lager_mods1] active = sleeper@esc_lager_mods1 [sleeper@esc_lager_mods1] path_main = mod1 meet = meet@lager [logic@esc_lager_mods2] active = sleeper@esc_lager_mods2 [sleeper@esc_lager_mods2] path_main = mod2 meet = meet@lager [logic@esc_lager_mods3] active = sleeper@esc_lager_mods3 [sleeper@esc_lager_mods3] path_main = mod3 meet = meet@lager [logic@esc_lager_mods4] active = sleeper@esc_lager_mods4 [sleeper@esc_lager_mods4] path_main = mod4 meet = meet@lager ;места для сна в домиках [logic@esc_lager_mods31] active = sleeper@esc_lager_mods31 [sleeper@esc_lager_mods31] path_main = mod7 meet = meet@lager [logic@esc_lager_mods41] active = sleeper@esc_lager_mods41 [sleeper@esc_lager_mods41] path_main = mod8 meet = meet@lager[/spoiler] Далее, так как в оригинале всего 8 работ, в лагере добавляем в алл спавн еще 4 сталкеров [870] ; cse_abstract properties section_name = stalker name = esc_lager8 position = -225.604339599609,-20.221607208252,-147.097625732422 direction = 0.0623090341687202,0.00229393295012414,0.0141186164692044 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 47 distance = 3.5 level_vertex_id = 29123 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] esc_lager = true END ; cse_visual properties visual_name = actors\novice\green_stalker_2 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 1 g_group = 5 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0xef20e0ec upd:creature_flags = 0xe5 upd:position = -225.604339599609,-20.221607208252,-147.097625732422 upd:o_model = 0 upd:o_torso = 0.00229393295012414,0.0623090341687202,0 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 5 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 2,2,0,1,0 predicate4 = 2,1,2,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties ну и далее еще 3 по анологии добавляем точки сна [esc_lager_mod1] points = p0 p0:name = name00 p0:position = -207.075561523438,-22.0614719390869,-126.956001281738 p0:game_vertex_id = 58 p0:level_vertex_id = 45952 [esc_lager_mod2] points = p0 p0:name = name00 p0:position = -214.630157470703,-22.8474712371826,-126.470748901367 p0:game_vertex_id = 59 p0:level_vertex_id = 39266 [esc_lager_mod3] points = p0 p0:name = name00 p0:position = -210.716583251953,-22.8824710845947,-122.083511352539 p0:game_vertex_id = 59 p0:level_vertex_id = 42634 [esc_lager_mod4] points = p0 p0:name = name00 p0:position = -210.383865356445,-22.8766937255859,-125.027153015137 p0:game_vertex_id = 59 p0:level_vertex_id = 42626 [esc_lager_mod5] points = p0 p0:name = name00 p0:position = -238.831893920898,-20.0025863647461,-157.837829589844 p0:game_vertex_id = 47 p0:level_vertex_id = 18736 [esc_lager_mod6] points = p0 p0:name = name00 p0:position = -218.885314941406,-19.9301738739014,-159.005096435547 p0:game_vertex_id = 47 p0:level_vertex_id = 34720 [esc_lager_mod7] points = p0 p0:name = name00 p0:position = -204.821105957031,-19.8968200683594,-157.583831787109 p0:game_vertex_id = 53 p0:level_vertex_id = 47822 [esc_lager_mod8] points = p0 p0:name = name00 p0:position = -185.258697509766,-19.244384765625,-130.855834960938 p0:game_vertex_id = 56 p0:level_vertex_id = 64958 ну и путь рейда [esc_lager_reid1] points = p0,p1,p2,p3,p4,p5 p0:name = wp00 p0:position = -8.943,-13.336,-148.609 p0:game_vertex_id = 108 p0:level_vertex_id = 267549 p0:links = p1(1) p1:name = wp01 p1:position = -19.6868887329102,4.10310536956787,36.844128295898 p1:game_vertex_id = 82 p1:level_vertex_id = 257553 p1:links = p2(1) p2:name = wp02 p2:position = -84.155615112305,11.521396697998,130.523866210938 p2:game_vertex_id = 84 p2:level_vertex_id = 182907 p2:links = p3(1) p3:name = wp03 p3:position = -153.528093994141,2.2575981140137,18.302373291016 p3:game_vertex_id = 80 p3:level_vertex_id = 96857 p3:links = p4(1) p4:name = wp04 p4:position = -192.871530517578,-2.9981938781738,-67.598228881836 p4:game_vertex_id = 68 p4:level_vertex_id = 58669 p4:links = p5(1) p5:name = wp00 p5:position = -33.743641113281,2.4169506835938,68.040124755859 p5:game_vertex_id = 86 p5:level_vertex_id = 244276 p5:links = p0(1) Итак имеем: 2 охранников, 2 патрулирующих, 2 сидящих у костра, добавляем 2 спящих. Нужно заставить их менятся, сделаем так: 2 охрранника поидут потруировать, 2 патрулиных - спать, 2 спящих - к костру, 2 сидящих у костра - охранять, ну и далее по кругу. Логика одного охранника с коментариями и функциями из xr_conditions функции function time_testoww() if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww() if level.get_time_hours() < 4 and level.get_time_hours() >= 0 then return true else return false end end если время больше 6 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 4, но больше 0 - перключение на walker5@esc_lager (патрулирует) [logic@esc_lager_zoneguard1] active = walker@esc_lager_zoneguard1 [walker@esc_lager_zoneguard1] on_info = {=time_testoww} walker5@esc_lager on_info2 = {=time2_testoww} walker5@esc_lager path_walk = guard_walk1 path_look = guard_look1 meet = meet@zoneguard_novice_lager1 [meet@zoneguard_novice_lager1] meet_state = 10| wait@talk_hello meet_state_wpn = 10| threat@threat_weap victim = 10| actor victim_wpn = 10| actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww1() if level.get_time_hours() >= 8 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww1() if level.get_time_hours() < 6 and level.get_time_hours() >= 0 then return true else return false end end если время больше или равно 8 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 8, но больше 0 - перключение на sleeper10@esc_lager (спит) [walker5@esc_lager] on_info = {=time_testoww1} sleeper10@esc_lager on_info2 = {=time2_testoww1} sleeper10@esc_lager path_walk = guard_walk4 meet = meet@lager ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww2() if level.get_time_hours() >= 10 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww2() if level.get_time_hours() < 8 and level.get_time_hours() >= 0 then return true else return false end end если время больше или равно 10 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 10, но больше 0 - перключение на kamp5@esc_lager (сидит у костра ) [sleeper10@esc_lager] on_info = {=time_testoww2} kamp5@esc_lager on_info2 = {=time2_testoww2} kamp5@esc_lager path_main = mod6 meet = meet@lager ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww3() if level.get_time_hours() >= 12 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww3() if level.get_time_hours() < 10 and level.get_time_hours() >= 0 then return true else return false end end если время больше или равно 12 и меньше 24 (24 часов в сталкере не бывает но бывает 23.59) и меньше 12, но больше 0 - перключение на walker1@esc_lager_zoneguard1 (охраняет) [kamp5@esc_lager] on_info = {=time_testoww3} walker1@esc_lager_zoneguard1 on_info2 = {=time2_testoww3} walker1@esc_lager_zoneguard1 center_point = camp_center path_walk = camp_center_task soundgroup = esc_lager meet = meet@lager Важно!walker1@esc_lager_zoneguard1 отдельная схема поведения, хоть и является копией walker@esc_lager_zoneguard1, в противном случае - дальнейшие переключения были не возможны, так как walker@esc_lager_zoneguard1 уже использует предназначеный ей отрезок времени. Ну, а дальше - по аналогии, вот блок функций : -------------------------------------------------------------------------------------------шаг первый ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww() if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww() if level.get_time_hours() < 4 and level.get_time_hours() >= 0 then return true else return false end end ------------------------------------------------------------------------------------------------------------------------------------------------------------------второй --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww1() if level.get_time_hours() >= 8 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww1() if level.get_time_hours() < 6 and level.get_time_hours() >= 0 then return true else return false end end --------------------------------------------------------------------------------------------------------------------------------------------------------------третий ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww2() if level.get_time_hours() >= 10 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww2() if level.get_time_hours() < 8 and level.get_time_hours() >= 0 then return true else return false end end -----------------------------------------------------------------------------------------------------------------------------------------------------------------четвертый ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww3() if level.get_time_hours() >= 12 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww3() if level.get_time_hours() < 10 and level.get_time_hours() >= 0 then return true else return false end end -------------------------------------------------------------------------------------------------------------------------------------------------------------------------пятый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww4() if level.get_time_hours() >= 14 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww4() if level.get_time_hours() < 12 and level.get_time_hours() >= 0 then return true else return false end end ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------шестой --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- function time_testoww5() if level.get_time_hours() >= 16 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww5() if level.get_time_hours() < 14 and level.get_time_hours() >= 0 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------седьмой ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww6() if level.get_time_hours() >= 18 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww6() if level.get_time_hours() < 16 and level.get_time_hours() >= 0 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------восьмой ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww7() if level.get_time_hours() >= 20 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww7() if level.get_time_hours() < 18 and level.get_time_hours() >= 0 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------девятый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww8() if level.get_time_hours() >= 22 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww8() if level.get_time_hours() < 20 and level.get_time_hours() >= 0 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------десятый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww9() if level.get_time_hours() >= 0 and level.get_time_hours() < 22 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------одинадцатый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww10() if level.get_time_hours() >= 2 and level.get_time_hours() < 24 then return true else return false end end ---------------------------------------------------------------------------------------------------------------------------------------------------------------------двенадцатый ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ function time_testoww11() if level.get_time_hours() >= 4 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww11() if level.get_time_hours() < 2 and level.get_time_hours() >= 0 then return true else return false end end Еще раз напоминаю, что все нижеприведенные схемы являются отдельными, хоть и копиями вышеприведенных [walker[b]1[/b]@esc_lager_zoneguard1] on_info = {=time_testoww4} walker6@esc_lager on_info2 = {=time2_testoww4} walker6@esc_lager path_walk = guard_walk1 path_look = guard_look1 meet = meet[b]1[/b]@zoneguard_novice_lager1 [meet[b]1[/b]@zoneguard_novice_lager1] meet_state = 10| wait@talk_hello meet_state_wpn = 10| threat@threat_weap victim = 10| actor victim_wpn = 10| actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog [walker6@esc_lager] on_info = {=time_testoww5} sleeper11@esc_lager on_info2 = {=time2_testoww5} sleeper11@esc_lager path_walk = guard_walk4 meet = meet@lager [sleeper11@esc_lager] on_info = {=time_testoww6} kamp6@esc_lager on_info2 = {=time2_testoww6} kamp6@esc_lager path_main = mod6 meet = meet@lager [kamp6@esc_lager] on_info = {=time_testoww7} walker2@esc_lager_zoneguard1 on_info2 = {=time2_testoww7} walker2@esc_lager_zoneguard1 center_point = camp_center path_walk = camp_center_task soundgroup = esc_lager meet = meet@lager [walker2@esc_lager_zoneguard1] on_info = {=time_testoww8} walker7@esc_lager on_info2 = {=time2_testoww8} walker7@esc_lager path_walk = guard_walk1 path_look = guard_look1 meet = meet2@zoneguard_novice_lager1 [meet2@zoneguard_novice_lager1] meet_state = 10| wait@talk_hello meet_state_wpn = 10| threat@threat_weap victim = 10| actor victim_wpn = 10| actor use = true use_wpn = true meet_dialog = escape_lager_guard_start_dialog [walker7@esc_lager] on_info = {=time_testoww9} sleeper12@esc_lager path_walk = guard_walk4 meet = meet@lager [sleeper12@esc_lager] on_info = {=time_testoww10} kamp7@esc_lager path_main = mod6 meet = meet@lager [kamp7@esc_lager] on_info = {=time_testoww11} walker@esc_lager_zoneguard1 on_info2 = {=time2_testoww11} walker@esc_lager_zoneguard1 center_point = camp_center path_walk = camp_center_task soundgroup = esc_lager meet = meet@lager Логика уходящих в рейд: [sleeper@esc_lager_mods1] on_info = {=akkk_sleepreids} walker@esc_lager_reids1 path_main = mod1 meet = meet@lager [walker@esc_lager_reids1] on_info = {=akkk_raidsleep}sleeper@esc_lager_mods1 on_info2 = {=akkk_raidsleep1}sleeper@esc_lager_mods1 path_walk = reid1 meet = meet@lager Функции: function akkk_sleepreids() if level.get_time_hours() >= 6 and level.get_time_hours() < 21 then больше 6 меньше 21 гуляем return true else return false end end function akkk_raidsleep() if level.get_time_hours() >= 21 and level.get_time_hours() < 24 then больше 21 меньше 24 спим return true else return false end end function akkk_raidsleep1() if level.get_time_hours() >= 0 and level.get_time_hours() < 6 then больше 0 меньше 6 спим return true else return false end end Да и использованние 2 функций не совсем оптимально вместо function time_testoww() if level.get_time_hours() >= 6 and level.get_time_hours() < 24 then return true else return false end end function time2_testoww() if level.get_time_hours() < 4 and level.get_time_hours() >= 0 then return true else return false end end достаточно 1 вида local hours = level.get_time_hours() return (hours >= 6 and hours < 24) or (hours<4 and hours >= 0) end Спасибо Erlik Рабочий пример сдесь http://narod.ru/disk/7377687001/lager.rar.html Версия 1.0004 чистая новая игра обязательна. Смена работ каждые два часа начиная с 6, 4 сталкера в 6 уходят в рейд, а с 21 до 6 спят в подвалах. Посты объеденил и немного подправил в пользу компактности правок в код никаких не вносил. Куфзук Изменено 13 Марта 2011 пользователем Куфзук Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 13 Марта 2011 Knyaz Обьясните подробней что вам требуется . Что такое Smart Cover даже не представляю . :ny_ph34r_1: т.к занимаюсь исключительно ТЧ. Остальные части шлак (IMXO). Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 14 Марта 2011 =VENOM= Извените за наглость но нельзя-ли что то подобное провернуть с схемой компаньоны (от Kamikadze). В обьщем можно нанять не любого сталкера а только того у кого в логике есть соответствуюшая возможность. Ну чтоб работало как основные схемы . Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 9 Апреля 2011 strelok200 [logic] active = walker [walker] path_walk = ....._...... (полное наименование точки пути wAy в ал спавне) это самое простое остальные параметры будут использованны по умолчанию. Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 11 Июня 2011 strelok200 1. Использование функции check_fighting сама функция находится в файле \gamedata\scripts\xr_conditions.script вот она -- проверка (по story_id) того, что нашим врагом есть хотя бы кото-то один из списка function check_fighting(actor, npc, p) local enemy = db.storage[npc:id()].enemy local sid if enemy and enemy:alive() then sid = enemy:story_id() for i, v in pairs(p) do --printf("_bp: %s.check_fighting(%d)", npc:name(), v) if type(v) == 'number' and sid == v then --printf("TRUE") return true end end end --printf("_bp: check_fighting() = false") return false end Вызывается из логики НПС секция [combat_ignore] пример логика бандитов АТП (игнорируюе Шустрого) файл gamedata\config\misc\gulag_escape.ltx ;------------------------------------------------------------------------------------------------- ;-- ESCAPE FACTORY BANDITS ;------------------------------------------------------------------------------------------------- [logic@esc_fabrika_bandit_walker1] active = walker1@esc_fabrika_bandit combat_ignore = combat_ignore [walker1@esc_fabrika_bandit] path_walk = day_walk1 path_look = day_look1 def_state_moving = raid def_state_moving_fire = raid_fire def_state_campering = threat def_state_campering_fire = threat_fire combat_ignore_cond = {=check_fighting(004)} игнорируют НПС с story_id = 4 004 это story_id Шустрого вот его секция в алл спавне cse_abstract properties section_name = stalker name = esc_shustryi position = 118.689079284668,-7.4942798614502,7.65357303619385 direction = 0,0,0 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_shustryi ; cse_alife_object properties game_vertex_id = 118 distance = 8.39999961853027 level_vertex_id = 422012 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] esc_lager = true END story_id = 4 ; cse_visual properties visual_name = actors\novice\green_stalker_1 ; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 health = 2 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 2 upd:timestamp = 0x69206669 upd:creature_flags = 0x6e upd:position = 118.689079284668,-7.4942798614502,7.65357303619385 upd:o_model = 0 upd:o_torso = 0,0,0 upd:g_team = 0 upd:g_squad = 0 upd:g_group = 0 ; cse_alife_monster_abstract properties upd:next_game_vertex_id = 65535 upd:prev_game_vertex_id = 65535 upd:distance_from_point = 0 upd:distance_to_point = 0 ; cse_alife_human_abstract properties predicate5 = 1,1,0,0,2 predicate4 = 1,1,0,0 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties вот вроде и все P.S Игнорируемых НПС может быть несколько пример часть логики стукача на арм складах [5281] ; cse_abstract properties section_name = stalker name = mil_freedom_member0001 position = -178.503997802734,-16.9659557342529,352.31005859375 direction = 0,0,0 ; cse_alife_trader_abstract properties money = 5000 character_profile = mil_Svoboda_stukach ; cse_alife_object properties game_vertex_id = 1828 distance = 24.5 level_vertex_id = 144846 object_flags = 0xfffff7ff custom_data = <<END [logic] active = walker0 on_death = death combat_ignore = combat_ignore [walker0] path_walk = mil_freedom_courier_wait_path path_look = mil_freedom_courier_wait_look on_actor_dist_le = 12 | %=killactor% on_info = {+mil_actor_in_khutor_zone} walker1 [walker1] path_walk = mil_freedom_stukach_walk4 path_look = mil_freedom_stukach_look4 on_actor_dist_le_nvis = 12 | %=killactor% on_signal = arrive | remark1 combat_ignore_cond = {=check_fighting(712:713:714:719)} false [remark1] no_rotate = true no_move = true anim = wait_rac snd = mil_pavlik_to_ara on_signal = sound_end | %+mil_courier_call% remark2 on_actor_dist_le_nvis = 12 | %=killactor% target = mil_courier_look_point, 0 combat_ignore_cond = {=check_fighting(712:713:714:719)} false [remark2] anim = guard on_info = {+mil_ara_end} kamp1 on_actor_dist_le_nvis = 12 | %=killactor% target = mil_courier_look_point, 0 combat_ignore_cond = {=check_fighting(712:713:714:719)} false [kamp1] center_point = mil_freedom_khutor_center meet_enable = true meet_dialog = mil_dolg_relax_dialog danger = danger path_walk = mil_freedom_khutor_center_task radius = 3 on_actor_dist_le_nvis = 12 | %=killactor% combat_ignore_cond = {=check_fighting(712:713:714:719)} false 2. Смотри логику Кузнецова и солдат под мостом Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 27 Октября 2016 (изменено) @FonSwong, Можно ли скриптом собрать смарты на локации и узнать их координаты? Смотря что ты подразумеваеш под смартами. Если рестриктор определенной формы (шейп) назначаемый смарту то координаты узнать, скорее всего можно. Ну а если координаты работ и путей смарта то 6) Работы могут находиться на разных уровнях.7) Скриптовая зона СТ теперь не используется для захвата персонажей.8) Симуляция заключается в миграции персонажей между разными СТ. http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_4#3.11.3._.D0.9D.D0.BE.D0.B2.D1.8B.D0.B5_.D0.BE.D1.81.D0.BE.D0.B1.D0.B5.D0.BD.D0.BD.D0.BE.D1.81.D1.82.D0.B8_.D1.81.D0.BC.D0.B0.D1.80.D1.82.D1.82.D0.B5.D1.80.D1.80.D0.B5.D0.B9.D0.BD.D0.BE.D0.B2 PS. Не заблуждайтесь Радиус смарта используеться только в СДК для визуализации. И ни на что не влияет. Главное что бы от нуля отличался . PSS. Распакуйте алл спавн и измените радиус любого смарта (шейпы тойсть формы). Типа тест хоть на 00000000000.1 Изменено 27 Октября 2016 пользователем AKKK1 Поделиться этим сообщением Ссылка на сообщение
AKKK1 6 Опубликовано 27 Октября 2016 (изменено) @Карлан, Извени забыл добавить что Ну а если координаты работ и путей смарта то Тоже можно только другим способом. И да я не разу не скриптер. Еще раз радиус (размер) абсолютно не важен. Шейп это и есть сфера или бокс. Изменено 27 Октября 2016 пользователем AKKK1 Поделиться этим сообщением Ссылка на сообщение