nuklia 0 Опубликовано 10 Сентября 2010 Поделиться Опубликовано 10 Сентября 2010 (изменено) Народ, а кто знает, как сделать ANM файл движения камеры над каким-либо местом локации, такие как в папке scenario_cam. Хочу сделать сценку застолья на пенечке с анимациями выпивки и закуски по типу клипа с отключением UI. В левел-эдиторе нашел какой-то редактор ANM - но разобраться не могу, записывает всег один кадр. MustaNG, вот посмотри - здесь при разговоре будет держать оружие в руках [logic@val_freedom_trader] active = walker@freedom ; активируем первую схему - патруль между двумя точками suitable = {=check_npc_name(val_freedom_trader)} ; проверяем - наш ли этот чувак prior = 100 on_hit = hit on_death = death [walker@freedom] path_look = guard_1_look ;вейпоинты в way_zaton.ltx - куда смотрит path_walk = guard_1_walk ;вейпоинты в way_zaton.ltx - где ходит def_state_standing = guard_na ;анимация с оружием в руках meet = meet ;разговаривать будет [meet] close_snd_hello = zat_a2_stalker_barmen_greeting ; озвучка - приветствие, без звука - nil close_snd_bye = zat_a2_stalker_barmen_farewell ; озвучка - прощание, без звука - nil close_anim = guard_na ;при разговоре оружие в руках close_victim = actor far_anim = hello ;анимация на расстоянии far_distance far_victim = actor close_distance = 3 far_distance = 5 close_snd_distance = 2 ;расстояние отыгрывания озвучки приветствия-прощания при подходе-отходе abuse = false use = true allow_break = false meet_on_talking = false [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 [danger] ignore_distance = 0 ignore_distance_grenade = 0 ignore_distance_corpse = 0 ignore_distance_hit = 0 ignore_distance_sound = 0 [hit] [death] Изменено 10 Сентября 2010 пользователем nuklia Ссылка на комментарий
stalker.odinochka 0 Опубликовано 10 Сентября 2010 Поделиться Опубликовано 10 Сентября 2010 (изменено) Люди, кто знает, как сделать подствольный дробовик? Ну чтоб дробь вылетала, а не балончик подствольной гранаты. Заранее благодарен. Изменено 10 Сентября 2010 пользователем stalker.odinochka Срочно ищу опытного скриптёра и модельера, нужна помощь в создании мода. Готовность мода Новый мир 85%. Мод Огнемёт для ЗП v1.0 Скачать Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 10 Сентября 2010 Поделиться Опубликовано 10 Сентября 2010 Вот бы кто помог... Создавал смарты на новой локации и все получилось кроме того что в определенном месте через каждые несколько секунды спавнются копии смартов и при том бесконечное количество раз.... Помогите как исправить... Ссылка на комментарий
Z.I.R.D. 3 Опубликовано 10 Сентября 2010 Поделиться Опубликовано 10 Сентября 2010 Скажите, кто в курсе, а как сделать так, чтобы выброс не убивал сталкеров а зомбировал их? Наёмники - лучшие убивцы в Зоне! По заказам обращаться на сайт www.vsehporeshimzadengi.org Ссылка на комментарий
nuklia 0 Опубликовано 11 Сентября 2010 Поделиться Опубликовано 11 Сентября 2010 stalker.odinochk..., лучше пропиши патрон дробовика стволу и в энциклопедию - типа ствол рассверлен умельцами под охотничий патрон и имеет в наличии ствольные вкладыши под различные патроны, чем гранатомет уродовать. БолотныйДоктор, подробно опиши метод создания, на кофейной гуще трудно гадать. Ссылка на комментарий
stalker.odinochka 0 Опубликовано 11 Сентября 2010 Поделиться Опубликовано 11 Сентября 2010 nuklia То то и оно, что стволу легко прописать дробь. А я хочу сделать именно подствольный дробовик. Срочно ищу опытного скриптёра и модельера, нужна помощь в создании мода. Готовность мода Новый мир 85%. Мод Огнемёт для ЗП v1.0 Скачать Ссылка на комментарий
Серый Волк 841 Опубликовано 11 Сентября 2010 Поделиться Опубликовано 11 Сентября 2010 (изменено) Подскажите, чем и как редактировать xrGame.dll ? Изменено 11 Сентября 2010 пользователем Серый Волк Новое меню и интерфейс для ЗП, Наличные деньги для SGM 1.7, Новый инвентарь для ЗП, Новые меню для Солянки и Солянки+ООП+К+МА Ссылка на комментарий
DiXares 1 Опубликовано 11 Сентября 2010 Поделиться Опубликовано 11 Сентября 2010 Серый Волк, hex редактор в руки и в перёд! Нет такой утилиты... Библиотеки движка - скрытая ф****. Ссылка на комментарий
goroskob 7 Опубликовано 11 Сентября 2010 Поделиться Опубликовано 11 Сентября 2010 (изменено) Как лечится этот вылет? Вылетает при взятии нового оружия в руки. Expression : error handler is invoked! Function : handler_base File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp Line : 764 Description : application is aborting Поиск выдал несколько подобных логов, но они были связаны с костюмами. На них внятного ответа не было. Изменено 11 Сентября 2010 пользователем goroskob Моё новое оружие здесь. Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 12 Сентября 2010 Поделиться Опубликовано 12 Сентября 2010 (изменено) andref function level_changer() if not has_alife_info("info_new_level") then put_spots() db.actor:give_info_portion("info_new_level") end end function put_spots() for i=1,65534 do local obj = alife():object(i) if obj then if obj:name() == "Название 1-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 1") elseif obj:name() == "Название 2-го левел чэнджера" then level.map_add_object_spot_ser(obj.id,"level_changer_up","Подпись 2") elseif ..... end end end С обозначением переходов получилось вот только в этой функции упущен один завершающий оператор END, а также допущена ошибка в условии "elseif ....." должно быть "elseif твоё условие then" или просто "else". А так большое спасибо) ---------------------------------------- nuklia создавал смарты так же как и ты в твоем туторе про созданию смартов... Изменено 12 Сентября 2010 пользователем БолотныйДоктор Ссылка на комментарий
nuklia 0 Опубликовано 12 Сентября 2010 Поделиться Опубликовано 12 Сентября 2010 Что-то я не понял - что плодится, смарт-террейн не может - он в алл.спавне создается. А если сквады(неписи) - то может что в респавне не то или скрипты респавна изменены. Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 12 Сентября 2010 Поделиться Опубликовано 12 Сентября 2010 (изменено) копии моих всех моих новых сквадов помимо положенных мест спавнятся все ещё в одной точке притом очень часто буквально каждые 5 секунд... И все эти копии бегут на свои положенные места хотя там уже оригеналы есть.... Изменено 12 Сентября 2010 пользователем БолотныйДоктор Ссылка на комментарий
nuklia 0 Опубликовано 12 Сентября 2010 Поделиться Опубликовано 12 Сентября 2010 (изменено) Похоже, что эксклюзивные сквады (у которых прописаны таргет_смарт и спавн_поинт) записаны в респавн. Просмотри, есть-ли подобные сквады в файлах configs/scripts/..../smart/ в секциях респавна. Респавнить нужно только сквады симулянтов из squad_descr.ltx , а эксклюзивные сквады спавнить путем записи их в секцию [start_position_...] в simulation.ltx или функцией сreate_squad в логике рестриктора(или еще чего) к примеру zat_b14_spawner.ltx . А вот почему такой частый респавн - наверное в скриптах где-то частота респавна изменена. Изменено 12 Сентября 2010 пользователем nuklia Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 nuklia глянь пожалуйста мою логику смартов http://narod.ru/disk/24826949000/smart.rar.html Ссылка на комментарий
nuklia 0 Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 В респавнах сквады симулянтов - это правильно, но зачем респавнить в каждом смарте - это будет бесконечная бойня и горы трупов. Лучше убрать большую часть респавнов, оставить немного, да и еще условия для респавна попрописывать, а изначально расставить в нужных смартах эксклюзивные сквады. Посмотри стандартные смарты того-же Затона - там большая часть пустых. Ссылка на комментарий
Серый Волк 841 Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 (изменено) Подскажет кто? ситуация: Вылет происходит изредка, выдает "Submit bug", на этом зависает и всё (но лог не выдает). Изменено 13 Сентября 2010 пользователем Серый Волк Новое меню и интерфейс для ЗП, Наличные деньги для SGM 1.7, Новый инвентарь для ЗП, Новые меню для Солянки и Солянки+ООП+К+МА Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 nuklia Можешь по подробнее пожалуйста) на примере) Пожалуйста буду очень благодарен) Ссылка на комментарий
nuklia 0 Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 (изменено) В этой теме вопросы создания сквадов тесно обсуждались в мае-июне. Вот нашел свою старую статью: Спавн эксклюзивных сквадов (буду делать для Затона - иначе запутаемся в террейнах и путях): Создадим сквад из имеющегося уже специфик характера первого попавшегося к примеру долговца - sim_default_duty_4, определим его в ближайший от начала игры смарт-террейн - это zat_a1 , а так-же определим точку его спавна из этого смарта - zat_a1_guard_1_walk (смотрим way_zaton.ltx) - точка двойная, будет ходить по ней и смотреть в точки zat_a1_guard_1_look ; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции. [zat_bolvan_1_squad]:online_offline_group faction = stalker npc = sim_default_duty_4 target_smart = zat_a1 spawn_point = zat_a1_guard_1_walk story_id = zat_bolvan_1_squad Теперь добавим этот сквад в стартовую позицию Затона ;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;; [start_position_zaton] zat_bolvan_1_squad = zat_a1 и в уникальные сквады Затона ;--------- ZATON UNIQUE SQUADS -------- [zat_bolvan_1_squad]:default_squad sim_avail = false Все - сквад готов, команда на спавн получена, начинайте новую игру и встретите его у камней. У нас получился одиночный дефолтный сквад Теперь пойдем дальше - создадим настоящего эксклюзива с индивидуальной логикой. Прежде всего создаем специфик характер: <specific_character id="val_freedom_trader" team_default = "1"> <name>val_freedom_trader_name</name> <icon>ui_npc_u_freedom_2_mask</icon> <map_icon x="1" y="0"></map_icon> <bio></bio> <class>val_freedom_trader</class> <community>freedom</community> <terrain_sect>stalker_terrain</terrain_sect> <rank>450</rank> <reputation>0</reputation> <money min="10000" max="27500" infinitive="1"/> <visual>actors\stalker_freedom\stalker_freedom_2_mask</visual> <snd_config>characters_voice\human_01\freedom\</snd_config> <supplies> [spawn] \n device_torch \n wpn_lr300 \n ammo_5.56x45_ss190 = 5 \n wpn_hpsa \n ammo_9x19_fmj = 5 \n grenade_f1 = 10 \n #include "gameplay\character_items.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs.xml" </supplies> #include "gameplay\character_criticals_1.xml" <start_dialog>zat_a2_stalker_barmen_start_dialog</start_dialog> <actor_dialog>zat_a2_linker_b14_quest_init</actor_dialog> <actor_dialog>zat_a2_linker_b14_quest_done</actor_dialog> <actor_dialog>zat_a2_linker_b14_quest_strange_item</actor_dialog> <actor_dialog>zat_a2_linker_b14_quest_sell_artefact</actor_dialog> <actor_dialog>zat_a2_linker_b14_quest_wrong</actor_dialog> <actor_dialog>zat_b57_barmen_about_bloodsucker_lair_dialog</actor_dialog> <actor_dialog>zat_b57_barman_reward_dialog</actor_dialog> <actor_dialog>zat_b22_barmen_about_vampire_actor1</actor_dialog> <actor_dialog>zat_b22_barmen_about_vampire_actor2</actor_dialog> <actor_dialog>zat_b22_barmen_about_vampire_actor3</actor_dialog> <actor_dialog>zat_b22_barmen_about_vampire_actor4</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b7_actor_start</actor_dialog> <actor_dialog>zat_b22_barmen_b5_daring_quest_stalkers</actor_dialog> <actor_dialog>zat_b22_barmen_about_after_quest_b5_dealer_actor4</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_about_new_detector</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_about_compass</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_compass_give_dialog</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_compass_double_dialog</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_compass_revert_dialog</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_take_business_actor_dialog</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_army</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_about_sci_guards</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_about_sci_helpers</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_about_halfart_jup_b1</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_oasis_art_sell</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b52_about_snag</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b52_about_nimble</actor_dialog> <actor_dialog>zat_a2_linker_b29_actor_info</actor_dialog> <actor_dialog>zat_a2_linker_b29_actor_get_adv_task</actor_dialog> <actor_dialog>zat_a2_linker_b29_actor_give_adv_task</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_b30_take_money_actor_dialog</actor_dialog> <actor_dialog>zat_a2_stalker_barmen_actor_info</actor_dialog> <actor_dialog>actor_break_dialog</actor_dialog> </specific_character> <character id="val_freedom_trader"> <class>val_freedom_trader</class> </character> ;-------------------------наш свободовец------------------ [val_freedom_trader]:stalker $spawn = "respawn\val_freedom_trader" character_profile = val_freedom_trader spec_rank = regular community = freedom story_id = val_freedom_trader Создаем сквад ; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции. [val_freedom_trader_squad]:online_offline_group ; наш свободовец faction = freedom npc = val_freedom_trader target_smart = zat_a1 spawn_point = zat_a1_walker_1_walk story_id = val_freedom_trader_squad ;;;;;;;;;;;;;;;;;;;;;; FINAL ZATON ;;;;;;;;;;;;;;;;;;;;;;;;; [start_position_zaton] val_freedom_trader_squad = zat_a1 ;--------- ZATON UNIQUE SQUADS -------- [val_freedom_trader_squad]:default_squad sim_avail = false Пропишем в смарт-террейне путь к файлу логики чувака [smart_terrain];zat_a1 squad_id = 54 max_population = 3 [exclusive] ; пропишем нашего свободовца в эксклюзивы val_freedom_trader = zaton\val_freedom_trader.ltx ; где лежит файл логики И в заключение сам файл логики [logic@val_freedom_trader] active = walker@freedom ; активируем первую схему - патруль между двумя точками suitable = {=check_npc_name(val_freedom_trader)} ; проверяем - наш ли этот чувак prior = 100 on_hit = hit on_death = death [walker@freedom] path_look = guard_1_look ;вейпоинты в way_zaton.ltx - куда смотрит path_walk = guard_1_walk ;вейпоинты в way_zaton.ltx - где ходит def_state_standing = guard_na on_actor_dist_le_nvis = 10 | walker@freedom_1 ;дистанция до игрока <= 10 без проверки на видимость | переход на др схему ;on_info = {=actor_has_item(detector_advanced)} %=teleport_npc(esc_a1_freedom_guard_1_walk)% meet = no_meet [walker@freedom_1]:walker@freedom ; производная от первой схемы с изменениями path_walk = guard_2_walk path_look = guard_2_look on_actor_dist_ge_nvis = 10 | walker@freedom ;если дистанция до игрока > 8 без проверки на видимость | возврат в первую схему meet = meet [meet] close_snd_hello = zat_a2_stalker_barmen_greeting ; озвучка - приветствие, без звука - nil close_snd_bye = zat_a2_stalker_barmen_farewell ; озвучка - прощание, без звука - nil close_anim = guard_na close_victim = actor far_anim = nil far_victim = nil close_distance = 2 far_distance = 0 close_snd_distance = 3 abuse = false ;use = {=actor_has_item(detector_advanced)} true, false ;условие диалога -есть детектор"медведь" -говорит use = true allow_break = false meet_on_talking = false [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 [danger] ignore_distance = 0 ignore_distance_grenade = 0 ignore_distance_corpse = 0 ignore_distance_hit = 0 ignore_distance_sound = 0 [hit] [death] Сами понимаете, что если сразу двоих сделаете - передерутся и долговец скорее всего победит - надо кому-нибудь группировку сменить. Создание эксклюзивного сквада из трех человек. Сперва создадим три специфик-характера для нашего сквада; <specific_character id="zat_a1_stalker_cop" team_default="1"> <name>st_zat_a1_stalker_cop_name</name> <icon>ui_inGame2_Gluhar</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>zat_a1_stalker_cop</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_02\stalker\</snd_config> <rank>55</rank> <reputation>0</reputation> <money min="8000" max="8000" infinitive="0" /> <visual>actors\stalker_neutral\stalker_neutral_2_face_2</visual> <supplies> [spawn] \n wpn_ak74u \n ammo_5.45x39_fmj = 1 \n wpn_pm \n ammo_9x18_pmm = 1 \n #include "gameplay\character_items_nd.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs_2.xml" </supplies> #include "gameplay\character_criticals_4.xml" <start_dialog>zat_b38_stalker_cop_start_dialog</start_dialog> <actor_dialog>zat_a2_stalker_barmen_b7_actor_start</actor_dialog> <actor_dialog>zat_b38_stalker_cop_task_dialog</actor_dialog> <actor_dialog>zat_b38_cop_about_himself_dialog</actor_dialog> <actor_dialog>zat_b38_stalker_cop_b52_about_nimble</actor_dialog> <actor_dialog>zat_b38_stalker_cop_b52_about_snag</actor_dialog> <actor_dialog>zat_b38_stalker_cop_about_sci_guards</actor_dialog> <actor_dialog>zat_b38_stalker_cop_about_sci_helpers</actor_dialog> <actor_dialog>actor_break_dialog</actor_dialog> </specific_character> <!----------------------------------------------------------------------------------------------------> <specific_character id="zat_a1_helper_1" team_default="1"> <name>zat_a1_helper_1_name</name> <icon>ui_inGame2_neutral_2</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>zat_a1_helper_1</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_03\stalker\</snd_config> <rank>35</rank> <reputation>0</reputation> <visual>actors\stalker_neutral\stalker_neutral_2</visual> <supplies> [spawn] \n wpn_binoc \n detector_advanced = 1 \n device_torch \n wpn_mp5 \n wpn_beretta = 1 \n ammo_9x19_fmj = 1 \n af_fireball = 1 \n </supplies> <start_dialog>zat_b53_artefact_hunter_1_gathering_artefacts</start_dialog> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs_no_guide.xml" </specific_character> <!---------------------------------------------------------------------------------------------------> <specific_character id="zat_a1_helper_2" team_default="1"> <name>zat_a1_helper_2_name</name> <icon>ui_inGame2_neutral_1</icon> <map_icon x="1" y="0"> </map_icon> <bio>Опытный сталкер. Детальная информация отсутствует.</bio> <class>zat_a1_helper_2</class> <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_02\stalker\</snd_config> <rank>20</rank> <reputation>0</reputation> <visual>actors\stalker_neutral\stalker_neutral_1</visual> <supplies> [spawn] \n wpn_toz34 \n ammo_12x70_buck = 1 \n wpn_pm \n ammo_9x19_fmj = 1 \n medkit = 1 \n #include "gameplay\character_items_nd.xml" #include "gameplay\character_food.xml" </supplies> <start_dialog>zat_b53_artefact_hunter_2_gathering_artefacts</start_dialog> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character> <!-----------------------------------------------------------------------------------------------------> <character id="zat_a1_stalker_cop"> <class>zat_a1_stalker_cop</class> </character> <character id="zat_a1_helper_1"> <class>zat_a1_helper_1</class> </character> <character id="zat_a1_helper_2"> <class>zat_a1_helper_2</class> </character> ;------------------трое из ларца--------------------- [zat_a1_stalker_cop]:stalker $spawn = "respawn\zat_a1_stalker_cop" character_profile = zat_a1_stalker_cop spec_rank = regular community = stalker story_id = zat_a1_stalker_cop [zat_a1_helper_1]:stalker $spawn = "respawn\zat_a1_helper_1" character_profile = zat_a1_helper_1 spec_rank = regular community = stalker story_id = zat_a1_helper_1 [zat_a1_helper_2]:stalker $spawn = "respawn\zat_a1_helper_2" character_profile = zat_a1_helper_2 spec_rank = regular community = stalker story_id = zat_a1_helper_2 Создаем сквад ; Здесь содержатся дескрипшены сквадов, которые потом можно создавать используя спец функции. [zat_a1_brigada_squad]:online_offline_group faction = stalker target_smart = zat_a1 spawn_point = zat_a1_walker_3_walk npc = zat_a1_stalker_cop, zat_a1_helper_1, zat_a1_helper_2 ;--------- ZATON UNIQUE SQUADS -------- [zat_a1_brigada_squad]:default_squad sim_avail = false А теперь внимание! Мы не будем прописывать наш сквад в стартовую позицию Затона т.к. спавнить будем функцией "create_squad" которую поместим в логику спейс-рестриктора. Это будет альтернативой всеми нами любимого скрипта alife():create(".....") Для этого создадим спейс-рестриктор в олл.спавне [20000] ; cse_abstract properties section_name = space_restrictor name = zat_a1_spawner position = 244.724090576172,18.1142883300781,530.155517578125 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 292 distance = 0 level_vertex_id = 1385170 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\zaton\zat_a1_spawner.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 1 ; cse_alife_space_restrictor properties restrictor_type = 3 Секцию можно воткнуть и в начало файла. Место расположения рестриктора чуть вперед от начальной точки спавна актора в начале игры между наклоненным сухим деревом и камнем, чтобы сработала логика, надо пройти между ними. Создаем логику рестриктора: [logic] active = sr_idle@spawn_stalker [sr_idle@spawn_stalker] on_info = {=actor_in_zone(zat_a1_spawner)} sr_idle@item_spawn %=create_squad(zat_a1_brigada_squad:zat_a1)% [sr_idle@item_spawn] on_game_timer = 150 | sr_idle@nil %=spawn_object(disel_generator:zat_a1_walker_4_walk)% [sr_idle@nil] В логику рестриктора добавил еще функцию "spawn_object" для спавна предметов (кому-то на голову свалится дизель-генератор через 15 секунд после спавна сквада) Так-же обратите внимание на то что в логике рестриктора можно указать или смарт-террейн для спавна(zat_a1_brigada_squad:zat_a1) или точку пути (disel_generator:zat_a1_walker_4_walk). Пока все. Собираем - запускаем - наблюдаем. Логику чувакам пока не подключал - делается так-же как и для одиночного эксклюзива. Но пока стоит обратить внимание на то, что и без логики, если у командира сквада нормальные диалоги с инфопоршнями и прочим для выдачи квестов, то и дефолтная пойдет для простых сцен. Смарт-каверы в ЗП. Применяются в основном в двух случаях: 1.- вместо точек путей в логике эксклюзивов. 2.- для кампов - посиделки у костра. Начнем с посиделок.Добавим в олл.спавн в зону нужного нам смарт-террейна несколько смарт-каверов и камп-зону [20001] ; cse_abstract properties section_name = camp_zone name = zat_a1_camp position = 241.788421630859,14.009066619873,467.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffff3e custom_data = <<END [camp] cfg = scripts\camp.ltx END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5.84479999542236 ; cse_alife_space_restrictor properties restrictor_type = 3 [20002] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_1 position = 241.788421630859,14.009066619873,466.594360351563 direction = 0,3.13,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 [20003] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_2 position = 240.788421630859,14.009066619873,468.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 [20004] ; cse_abstract properties section_name = smart_cover name = zat_a1_animpoint_3 position = 242.788421630859,14.009066619873,468.594360351563 direction = 0,0,0 ; cse_alife_object properties game_vertex_id = 6 distance = 0 level_vertex_id = 1382565 object_flags = 0xffffffbf ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2 ; cse_smart_cover properties cse_smart_cover__unk1_sz = animpoint_sit_low cse_smart_cover__unk2_f32 = 0 enter_min_enemy_distance = 15 exit_min_enemy_distance = 10 ; se_smart_cover properties last_description = animpoint_sit_low loopholes = animpoint_sit_low,1 Все - лагерь для посиделок готов, собираем все с предыдущими наработками. Важный момент - шейп камп-зоны должен покрывать смарт-каверы, иначе получатся слишком скучные посиделки - не будут травить анекдоты и прочее. За направление взгляда отвечает дирекшн смарт-кавера. p.s. Вот еще кое-что нашел: Создание места для сна в ЗП на добавленных локациях. Разместим секцию спейс-рестриктора в олл.спавне(привязка имени к определенному смарт-террейну(esc_b1) не обязательна но желательна для ясности) [15001] ; cse_abstract properties section_name = space_restrictor name = bar_dolg_bunker_sr_sleep position = 219.5344470977783,-5.39998846054077,123.680816650391 direction = 0,0,0 version = 0x7c script_version = 8 ; cse_alife_object properties game_vertex_id = 2746 distance = 0 level_vertex_id = 54650 object_flags = 0xffffff3e custom_data = <<END [story_object] story_id = bar_dolg_bunker_sr_sleep_id [logic] cfg = scripts\sr_sleep.ltx END ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 5.02119588851929,0,0 shape0:axis_y = 0,5.0482006072998,0 shape0:axis_z = 0,0,2.23479747772217 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 3 Регистрируем наше койкоместо в скриптах. ;стр.-288 local sleep_zones_tbl = { {target = "marsh_baza_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "marsh_baza_sr_sleep_kazarm_id", hint = "st_ui_pda_sleep_place"}, {target = "zat_a2_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "jup_a6_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "pri_a16_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "esc_b1_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, {target = "bar_dolg_bunker_sr_sleep_id", hint = "st_ui_pda_sleep_place"}, } function fill_primary_objects() ;стр.-2846 function sleep(actor, npc) local sleep_zones = { "zat_a2_sr_sleep", "jup_a6_sr_sleep", "pri_a16_sr_sleep", "esc_b1_sr_sleep", "marsh_baza_sr_sleep", "marsh_baza_sr_sleep_kazarm", "bar_dolg_bunker_sr_sleep", "actor_surge_hide_2" } for k,v in pairs(sleep_zones) do Создание укрытия от выброса - surge_hide : Пропишем нужному нам смарт-терейну укрытие [esc_sim_13]:default surge = 1 ; прописали возможность укрытия territory = 1 sim_avail = true Регистрируем наше укрытие ;escape esc_surge_hide_sim_13 Зарегистрируем нашу локацию в скриптах --'****************************************************** --'* Реестр смарт-террейнов. Игровое поле симуляции. --'****************************************************** --' В этом ltx хранятся дескрипторы сквадов. squad_ltx = system_ini() setting_ini = ini_file("misc\\simulation.ltx") local group_id_by_levels = {zaton = 1, pripyat = 2, jupiter = 3, labx8 = 4, jupiter_underground = 5, escape = 6} строка 1196 function surge_stats() local sim_obj_registry = simulation_objects.get_sim_obj_registry().objects local sim_squads = { ["zaton"] = {}, ["jupiter"] = {}, ["pripyat"] = {}, ["escape"] = {} } local sim_smarts = { ["zaton"] = {}, ["jupiter"] = {}, ["pripyat"] = {}, ["escape"] = {} } строка 1241 print_smarts_and_squads_by_level("zaton") print_smarts_and_squads_by_level("jupiter") print_smarts_and_squads_by_level("pripyat") print_smarts_and_squads_by_level("escape") строка 38 self.levels_respawn = {zaton = false, jupiter = false, pripyat = false, escape = false} строка 194 xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_after_surge") elseif(level.name()=="jupiter") then xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_after_surge") elseif not has_alife_info("pri_b305_fifth_cam_end") then xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_after_surge") elseif(level.name()=="escape") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_after_surge") строка 249 if(level.name()=="zaton") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2") elseif(level.name()=="jupiter") then xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_2") elseif not has_alife_info("pri_b305_fifth_cam_end") then xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_2") elseif(level.name()=="escape") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_2") строка 273 if(level.name()=="zaton") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_1") elseif(level.name()=="jupiter") then xr_sound.set_sound_play(db.actor:id(), "jup_a6_stalker_medik_phase_1") elseif not has_alife_info("pri_b305_fifth_cam_end") then xr_sound.set_sound_play(db.actor:id(), "pri_a17_kovalsky_surge_phase_1") elseif(level.name()=="escape") then xr_sound.set_sound_play(db.actor:id(), "zat_a2_stalker_barmen_surge_phase_1") строка 329 self.levels_respawn = {zaton = true, jupiter = true, pripyat = true, escape = true} строка 352 self.levels_respawn = {zaton = true, jupiter = true, pripyat = true, escape = true} строка 638 packet:w_bool(self.levels_respawn.zaton) packet:w_bool(self.levels_respawn.jupiter) packet:w_bool(self.levels_respawn.pripyat) packet:w_bool(self.levels_respawn.escape) строка 665 self.levels_respawn.zaton = packet:r_bool() self.levels_respawn.jupiter = packet:r_bool() self.levels_respawn.pripyat = packet:r_bool() self.levels_respawn.escape = packet:r_bool() переходим к олл.спавн - создаем секцию укрытия [xxxx] ; cse_abstract properties section_name = space_restrictor name = esc_surge_hide_sim_13 position = -11.2279901504517,2.46390247344971,57.3380393981934 direction = 0,0,0 version = 0x7c script_version = 8 ; cse_alife_object properties game_vertex_id = 934 distance = 0 level_vertex_id = 3366 object_flags = 0xffffff3e ; cse_shape properties shapes = shape0 shape0:type = box shape0:axis_x = 3.27519989013672,0,0 shape0:axis_y = 0,5.44060039520264,0 shape0:axis_z = 0,0,7.41159915924072 shape0:offset = 0,0,0 ; cse_alife_space_restrictor properties restrictor_type = 0 Создаем точки пути по колличеству мест в укрытии [esc_sim_13_surge_1_look] points = p0 p0:name = name00 p0:position = -11.0934257507324,2.45600557327271,56.0012626647949 p0:game_vertex_id = 1051 p0:level_vertex_id = 286804 [esc_sim_13_surge_1_walk] points = p0 p0:name = name00 p0:position = -12.587254524231,2.45982217788696,54.6062545776367 p0:game_vertex_id = 1051 p0:level_vertex_id = 284937 [esc_sim_13_surge_2_look] points = p0 p0:name = name00 p0:position = -11.7026491165161,2.45731353759766,55.4043731689453 p0:game_vertex_id = 1051 p0:level_vertex_id = 285862 [esc_sim_13_surge_2_walk] points = p0 p0:name = name00 p0:position = -11.7085494995117,2.45401954650879,54.6906051635742 p0:game_vertex_id = 1051 p0:level_vertex_id = 285861 [esc_sim_13_surge_3_look] points = p0 p0:name = name00 p0:position = -11.700403213501,2.46191310882568,55.9261016845703 p0:game_vertex_id = 1051 p0:level_vertex_id = 285863 [esc_sim_13_surge_3_walk] points = p0 p0:name = name00 p0:position = -10.5211238861084,2.45401906967163,54.5706977844238 p0:game_vertex_id = 1051 p0:level_vertex_id = 287736 [esc_sim_13_surge_4_look] points = p0 p0:name = name00 p0:position = -12.1378507614136,2.46710777282715,55.9775772094727 p0:game_vertex_id = 1051 p0:level_vertex_id = 285863 [esc_sim_13_surge_4_walk] points = p0 p0:name = name00 p0:position = -12.5659475326538,2.4704270362854,55.9364585876465 p0:game_vertex_id = 1051 p0:level_vertex_id = 284939 [esc_sim_13_surge_5_look] points = p0 p0:name = name00 p0:position = -11.3268537521362,2.45915699005127,56.0716171264648 p0:game_vertex_id = 1051 p0:level_vertex_id = 286804 [esc_sim_13_surge_5_walk] points = p0 p0:name = name00 p0:position = -11.4233283996582,2.45504951477051,55.4901466369629 p0:game_vertex_id = 1051 p0:level_vertex_id = 286803 [esc_sim_13_surge_6_look] points = p0 p0:name = name00 p0:position = -11.951548576355,2.46743059158325,56.5034790039063 p0:game_vertex_id = 1051 p0:level_vertex_id = 285864 [esc_sim_13_surge_6_walk] points = p0 p0:name = name00 p0:position = -10.5399560928345,2.45401906967163,55.9832763671875 p0:game_vertex_id = 1051 p0:level_vertex_id = 287738 [esc_sim_13_surge_7_look] points = p0 p0:name = name00 p0:position = -11.060601234436,2.46146583557129,56.6575355529785 p0:game_vertex_id = 1051 p0:level_vertex_id = 286805 [esc_sim_13_surge_7_walk] points = p0 p0:name = name00 p0:position = -12.5727767944336,2.47284889221191,57.334114074707 p0:game_vertex_id = 1051 p0:level_vertex_id = 284941 [esc_sim_13_surge_8_look] points = p0 p0:name = name00 p0:position = -11.7709636688232,2.46654939651489,57.2202682495117 p0:game_vertex_id = 1051 p0:level_vertex_id = 285865 [esc_sim_13_surge_8_walk] points = p0 p0:name = name00 p0:position = -11.6660528182983,2.4660382270813,56.7951736450195 p0:game_vertex_id = 1051 p0:level_vertex_id = 285864 [esc_sim_13_surge_9_look] points = p0 p0:name = name00 p0:position = -11.4014568328857,2.4647479057312,57.3022918701172 p0:game_vertex_id = 1051 p0:level_vertex_id = 286806 [esc_sim_13_surge_9_walk] points = p0 p0:name = name00 p0:position = -10.5875377655029,2.46077871322632,57.3240737915039 p0:game_vertex_id = 1051 p0:level_vertex_id = 287740 [esc_sim_13_surge_10_look] points = p0 p0:name = name00 p0:position = -12.009449005127,2.47024631500244,58.7685432434082 p0:game_vertex_id = 1051 p0:level_vertex_id = 285867 [esc_sim_13_surge_10_walk] points = p0 p0:name = name00 p0:position = -12.5359506607056,2.47053003311157,58.6904754638672 p0:game_vertex_id = 1051 p0:level_vertex_id = 284943 [esc_sim_13_surge_11_look] points = p0 p0:name = name00 p0:position = -11.6696643829346,2.47010707855225,58.7928047180176 p0:game_vertex_id = 1051 p0:level_vertex_id = 285867 [esc_sim_13_surge_11_walk] points = p0 p0:name = name00 p0:position = -11.7617807388306,2.47143888473511,58.0255508422852 p0:game_vertex_id = 1051 p0:level_vertex_id = 285866 [esc_sim_13_surge_12_look] points = p0 p0:name = name00 p0:position = -11.1556959152222,2.46973323822021,58.9260101318359 p0:game_vertex_id = 1051 p0:level_vertex_id = 286808 [esc_sim_13_surge_12_walk] points = p0 p0:name = name00 p0:position = -10.5822420120239,2.46985769271851,58.7564964294434 p0:game_vertex_id = 1051 p0:level_vertex_id = 287742 Изменено 13 Сентября 2010 пользователем nuklia Ссылка на комментарий
Гость БолотныйДоктор Опубликовано 14 Сентября 2010 Поделиться Опубликовано 14 Сентября 2010 (изменено) Да вроде все так делаю ну из одной точки у меня все равно лезут копии сквадов и получется месиво большое Изменено 14 Сентября 2010 пользователем БолотныйДоктор Ссылка на комментарий
nuklia 0 Опубликовано 14 Сентября 2010 Поделиться Опубликовано 14 Сентября 2010 (изменено) Попробуй удалить все секции респавнов во всех смартах в тех файлах, что выкладывал - с твоими смартами сплошная бойня на кордоне - одних убивают, вместо них новые респавнятся, у них и времени то нет до работ в гулагах дойти. Да еще и тормозит из-за столпотворения. Так не стоит заселять локации, не получится мало-мальский сюжетец создать. Заселяй эксклюзивными сквадами, а респавн делай с условием, чтобы не плодились бесконтрольно. Кстати у меня тоже на кордоне половина спавнится в тоннеле возле блокпоста, хотя им прописаны конкретные точки спавна - почему так происходит, я так и не понял, потому некоторых ответственных товарищей спавнил через олл.спавн. Изменено 14 Сентября 2010 пользователем nuklia Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти