NaslednikTutti 1 Опубликовано 5 Января 2012 (изменено) Создал отряд военных, заспавнил их, прописал им логику: [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true По идеи он должен стоять на месте, но в игре он всё равно гуляет свободно по зоне. Как это исправить, помоги пожалуйста. Покажи секцию спавна полностью (под спойлером). ColR_iT Изменено 5 Января 2012 пользователем ColR_iT Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 5 Января 2012 (изменено) [military_camp_npc_1]:stalker $spawn = "respawn\military_camp_npc_1" character_profile = military_camp_npc_1 spec_rank = master community = army custom_data = scripts\escape\esc_military_camp_npc_logic_1.ltx С этим разобрался, спасибо losiara за помощь. Такая беда еще, спавн осуществляю через скрипт function start_add_spawn()--\\ --\\ -- spawn_military_camp_npc_1() spawn_military_camp_npc_2() spawn_military_camp_npc_3() spawn_military_camp_npc_4() end function spawn_military_camp_npc_1() local x= -158.419006 local y= -30.450201 local z= -348.824280 local level_vertex= 92764 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_2() local x= -151.983821 local y= -30.513784 local z= -348.483551 local level_vertex= 100292 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_3() local x= -168.470001 local y= -25.435743 local z= -354.477600 local level_vertex= 80827 local game_vertex_id= 1021 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function spawn_military_camp_npc_4() local x= -156.043976 local y= -30.033550 local z= -360.914581 local level_vertex= 95263 local game_vertex_id= 1026 alife():create("military_camp_npc_1",vector():set(x,y,z),level_vertex,game_vertex_id) end function save_variable(variable_name, value) xr_logic.pstor_store(db.actor, variable_name, value) end function load_variable(variable_name, value_if_not_found) return xr_logic.pstor_retrieve(db.actor, variable_name, value_if_not_found) end Проблема вот в чем, три нпс на охране лагеря, четвертый снайпер на башне. Снайпер (spawn_military_camp_npc_3) да и сами нпс спавнятся, так сказать они меняются координатами что ли, вообщем снайпер появляется то на башне (там где он должен быть), то на месте нпс_1, то на месте нпс_2 или нпс_4. Вот так кто где, постоянно меняются местами при запуске игры. Так вот, это проблема в скрипте? Работаю на ЗП 1.6.02. Добавлено через 17 мин.: if spawn_escape.load_variable("spawn_military_camp_npc",false)==false then spawn_escape.start_add_spawn() spawn_escape.save_variable("spawn_military_camp_npc",true) end Также спавняться, то два снайпера и два рядовых, то так то сяк вообще непонятно Изменено 5 Января 2012 пользователем NaslednikTutti Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 5 Января 2012 Artos, Viнt@rь да, я что-то на это подозревал, но таки не смог разобраться. Заспавнил всех через all.spawn, сейчас все в норме Еще вот вопросы: Заспавнил я этот отряд сталкеров, нужно написать им логику чтоб они сидели у костра (болтали, играли, ели, пили и тд и тп чем они там занимаются на досуге :-) ) Кто-нибудь может подробно объяснить как это реализовать? Помочь с написанием логики для нпс, с созданием смарт_террейна и по моему, как-то еще .way файл из all.spawn'а в этом как-то участвует. Буду примного благодарен! :ny_z_1: То что нахожу по этому вопросу, то всё делается на Тени Чернобыля, а в Зове Припяти это походу реализуется немного по иному. Разобраться у меня не получилось. Сначала создаем в алл.спавн smart terrain Например [833] ; cse_abstract properties section_name = smart_terrain name = lager_new_npc --Название смарта position = -49.742325,-10.038876,-64.088760 direction = 0.975047,0.000000,-0.221997 ; cse_alife_object properties game_vertex_id = 77 distance = 4.19999980926514 level_vertex_id = 229856 object_flags = 0xffffffbe custom_data = <<END [smart_terrain] type = lager_new_npc capacity = 5 ----- по моему здесь кол-во НПС которое бут сидеть у костра squad = 1 groups = 3 END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 2.0 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties Далее создаем НПС, тоже в алл.спавн [834] ; cse_abstract properties section_name = stalker name = lager_pod_most00 position = -50.338428,-10.038231,-65.516136 direction = -0.327957,0.000000,0.944693 ; cse_alife_trader_abstract properties money = 5000 character_profile = esc_stalker_novice ; cse_alife_object properties game_vertex_id = 77 distance = 4.19999980926514 level_vertex_id = 229162 object_flags = 0xffffffbf custom_data = <<END [smart_terrains] lager_new_npc = 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 = 3 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd:health = 1 upd:timestamp = 0 upd:creature_flags = 0 upd:position = -50.338428,-10.038231,-65.516136 upd:o_model = 0 upd:o_torso = 0.533530831336975,-0.000744261255022138,0 upd:g_team = 0 upd:g_squad = 1 upd:g_group = 3 ; 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,0,0,2,1 predicate4 = 1,1,0,1 ; cse_ph_skeleton properties upd:start_dialog = ; se_stalker properties дальше идем в gulag_escape.script можнои свой создать но пока сойдет и стандарт нужно прописать работу НПС в трёх местах 1:)function load_job(sj, gname, type, squad, groups) наш if type == "lager_new_npc" then t = { section = "logic@lager_new_npc_men_kamp1", idle = 0, prior = 5, state = {0, 1}, online = true, in_rest = "", out_rest = "", } table.insert(sj, t) end Ещё один "end" в конце скрипта 2:)function load_states(gname, type) if type == "lager_new_npc" then return function (gulag) return 0 end end Третий "end" в конце скрипта.И в третьем месте указываем группировку непися: function checkStalker(npc_community, gulag_type, npc_rank, se_obj) if gulag_type == "lager_new_npc" then return npc_community == "stalker" ---Здесь ставим группировку НПС которую будет принимать гулаг end Потом прописываем логику в файле:config\misc\gulag_escape здесь НПС будут сидеть у костра [logic@lager_new_npc_men_kamp1] active = kamp@lager_new_npc_men_kamp1 [kamp@lager_new_npc_men_kamp1] center_point = kamp Ипоследнее,снова алл.спавн way escape [lager_new_npc_kamp] points = p0 p0:name = wp00|s=state p0:position = -49.742325,-10.038876,-64.088760 p0:game_vertex_id = 77 p0:level_vertex_id = 229856 lager_new_npc - название смарта.Оно у нас везде.В скриптах: if type == "lager_new_npc" then --здесь t = { section = "logic@lager_new_npc_men_kamp1", --здесь в логике и в путях: [lager_new_npc_kamp] --название смарта + логика "kamp" Ну все вроде. И есть еще вопрос, заспавнил я вот всё тот же отряд. Вот, в этом так сказать коде есть пункт direction = 0,0,0 -// направление взгляда Направление это я узнал с помощью скрипта определения координат ГГ. Прописал его, но нпс один * смотрит строго на север. Как это исправить? Выражаемся? Cyclone Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 7 Января 2012 Добрый вечер! У меня проблема с моими неписями, Спавн НПС проимходит через smart_terrain, они не работают по логике что я им пишу, а тупо сидят на карточках периодически вставая (при этом странно подергиваясь) и потом снова садятся. Когда спавнил через all.spawn все работало. [smart_terrains] none = true [logic] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true Может в конфигах у меня ошибка, посмотрите пожалуйста. Вот конфиг одного из нпс: [escape_187] ; cse_abstract properties section_name = smart_terrain name = esc_blokpost_soldier1_smart position = -131.503113,-30.139643,-382.223450 direction = -0.991485774517059,0,-0.130215004086494 ; cse_alife_object properties game_vertex_id = 951 distance = 9.80000019073486 level_vertex_id = 123660 object_flags = 0xffffff3e custom_data = <<END [smart_terrain] cfg = scripts\escape\smart\esc_blokpost_soldier1.ltx -----Здесь же файл с логикой непися нужно прописать? END ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5 ; cse_alife_space_restrictor properties restrictor_type = 3 ; se_smart_terrain properties [esc_blokpost_soldier1]:stalker $spawn = "respawn\esc_blokpost_soldier1" character_profile = esc_blokpost_soldier1 spec_rank = regular community = army story_id = esc_blokpost_soldier1 custom_data = scripts\escape\smart\esc_blokpost_soldier1.ltx -----Позже, мне подсказали и вписал сюда. Все ровно не работает [esc_blokpost_soldier1_squad]:online_offline_group faction = stalker npc = esc_blokpost_soldier1 target_smart = esc_blokpost_soldier1_smart story_id = esc_blokpost_soldier1_squad И еще вот вопрос, для ЗП будет работать такое? С этим я пока еще не очень дружу, но попробывал написать, получилось вот это (Проверить просто не получается, т.к. неписи не слушается, сидят только на корточках .): Пример: [esc_blokpost_sniper1] points = p0,p1 p0:name = wp00 p0:flags = 0x1 p0:position = -169.194595,-25.436274,-353.493927 p0:game_vertex_id = 1021 p0:level_vertex_id = 79995 p0:links = p1(1) p1:name = wp01 p1:flags = 0x2 p1:position = -166.526138,-25.435808,-355.219055 p1:game_vertex_id = 1021 p1:level_vertex_id = 83334 p1:links = p0(1) Логика НПС: [logic] active = walker [walker] path_walk = esc_blokpost_sniper1 Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 8 Января 2012 Доброго времени суток! Работаю на Зов Припяти 1.6.02. Хочу сделать снайпера часового (я в этом полным нуб), вот, начеркал для него базовую схему walker. * phase time: 16935 ms * phase cmem: 350251 K * phase time: 27 ms * phase cmem: 350251 K * [win32]: free[1918640 K], reserved[188516 K], committed[2087084 K] * [ D3D ]: textures[1149492 K] * [x-ray]: crt heap[350251 K], process heap[13906 K], game lua[36780 K], render[114 K] * [x-ray]: economy: strings[25402 K], smem[10192 K] compiling shader model_env_lq compiling shader model_env_lq_2 compiling shader model_distort4glass_2 compiling shader model_def_lplanes_0 compiling shader model_def_lplanes_1 compiling shader deffer_model_bump_d-hq_1 ! Unknown command: dump_infos ! Cannot find saved game ~abort-raw:there is no patrol path %s * Log file has been saved successfully! ! Cannot find saved game ~abort:there is no patrol path esc_blokpost_sniper1_smart_escape_blokpost_chasovoy_walk * Log file has been saved successfully! stack trace: 0023:0844E8B3 xrGame.dll, CDialogHolder::CDialogHolder() 0023:0844FB45 xrGame.dll, CDialogHolder::CDialogHolder() 0023:055F2EA3 lua.JIT.1.1.4.dll, luaopen_io() [error][ 183] : Невозможно создать файл, так как он уже существует. Вот конфиги схемы. [escape_blokpost_chasovoy_look] points = p0,p1 p0:name = name00|a=guard_chasovoy p0:flags = 0x2 p0:position = -158.486877,-30.824171,-286.253876 p0:game_vertex_id = 1091 p0:level_vertex_id = 92831 p1:name = name01|a=guard_chasovoy p1:flags = 0x1 p1:position = -149.406265,-29.899168,-363.256896 p1:game_vertex_id = 1026 p1:level_vertex_id = 103521 [escape_blokpost_chasovoy_walk] points = p0,p1 p0:name = name00 p0:flags = 0x1 p0:position = -168.318710,-25.436260,-353.395844 p0:game_vertex_id = 1021 p0:level_vertex_id = 80829 p0:links = p1(1) p1:name = name01 p1:flags = 0x2 p1:position = -166.309357,-25.436119,-354.571533 p1:game_vertex_id = 1021 p1:level_vertex_id = 83334 p1:links = p0(1) [smart_terrains] none = true [logic@esc_blokpost_sniper1] active = walker1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [walker1] path_walk = escape_blokpost_chasovoy_walk path_look = escape_blokpost_chasovoy_look team = escape_blocpost Посмотрите пожалуйста, что тут не так? Что нужно добавить, изменить. Два дня мучаюсь с этим [esc_blokpost_sniper1]:stalker $spawn = "respawn\esc_blokpost_sniper1" character_profile = esc_blokpost_sniper1 spec_rank = regular community = army story_id = esc_blokpost_sniper1 <specific_character id="esc_blokpost_sniper1" team_default = "1"> <name>Солдат</name> <icon>ui_inGame2_Soldier_2</icon> <map_icon x="1" y="0"></map_icon> <bio>Рядовой. Детальная информация отсутствует.</bio> <class>Sniper</class> <community>army</community> <terrain_sect>stalker_terrain</terrain_sect> <snd_config>characters_voice\human_01\military\</snd_config> <rank>40</rank> <reputation>0</reputation> <visual>actors\stalker_soldier\stalker_soldier_2</visual> <supplies> [spawn] \n wpn_svd \n ammo_7.62x54_7h1 = 2 \n wpn_pm \n ammo_9x18_fmj = 1 \n grenade_rgd5 = 2 \n #include "gameplay\character_items_2.xml" #include "gameplay\character_food.xml" #include "gameplay\character_drugs_2.xml" </supplies> #include "gameplay\character_criticals_4.xml" #include "gameplay\character_dialogs.xml" </specific_character> <character id="esc_blokpost_sniper1"> <class>Sniper</class> </character> [start_position_escape] esc_blokpost_sniper1_squad = esc_blokpost_sniper1_smart [esc_blokpost_sniper1_squad]:default_squad sim_avail = false [esc_blokpost_sniper1_squad]:online_offline_group faction = stalker npc = esc_blokpost_sniper1 target_smart = esc_blokpost_sniper1_smart story_id = esc_blokpost_sniper1_squad [smart_terrain];esc_blokpost_sniper1 squad_id = 1 max_population = 1 [exclusive] esc_blokpost_sniper1 = escape\esc_blokpost_sniper1_logic.ltx Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 8 Января 2012 _Призрак_, что значит "сувал под гулаг непися"? Если ты имеешь ввиду, писал ли я что-то в gulag_ххх.script, то нет. Пути прописал в way_xxx.ltx, логику в файл с логикой непися - esc_blokpost_sniper1_logic.ltx и всё. [escape_blokpost_chasovoy_look] points = p0,p1 p0:name = name00|a=guard_chasovoy p0:flags = 0x2 p0:position = -158.486877,-30.824171,-286.253876 p0:game_vertex_id = 1091 p0:level_vertex_id = 92831 p1:name = name01|a=guard_chasovoy p1:flags = 0x1 p1:position = -149.406265,-29.899168,-363.256896 p1:game_vertex_id = 1026 p1:level_vertex_id = 103521 [escape_blokpost_chasovoy_walk] points = p0,p1 p0:name = name00 p0:flags = 0x1 p0:position = -168.318710,-25.436260,-353.395844 p0:game_vertex_id = 1021 p0:level_vertex_id = 80829 p0:links = p1(1) p1:name = name01 p1:flags = 0x2 p1:position = -166.309357,-25.436119,-354.571533 p1:game_vertex_id = 1021 p1:level_vertex_id = 83334 p1:links = p0(1) [smart_terrains] none = true [logic@esc_blokpost_sniper1] active = walker1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [walker1] path_walk = escape_blokpost_chasovoy_walk path_look = escape_blokpost_chasovoy_look team = escape_blocpost Переименовал пути: имя_смарта_имя_пути esc_blokpost_sniper1_smart - имя_смарта escape_blokpost_chasovoy_walk - имя_пути ! Unknown command: dump_infos ! Cannot find saved game ~abort-raw:there is no patrol path %s * Log file has been saved successfully! ! Cannot find saved game ~abort:there is no patrol path esc_blokpost_sniper1_smart_esc_blokpost_sniper1_smart_escape_blokpost_chasovoy_w alk * Log file has been saved successfully! stack trace: 0023:0826E8B3 xrGame.dll, CDialogHolder::CDialogHolder() 0023:0826FB45 xrGame.dll, CDialogHolder::CDialogHolder() 0023:05772EA3 lua.JIT.1.1.4.dll, luaopen_io() [error][ 183] : Невозможно создать файл, так как он уже существует. Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 9 Января 2012 (изменено) Здравствуйте! Снова я с логикой непися. С предыдущим вопросом разобрался наконец. Заспавнил пару нпс, задал им пути. Все хорошо. Заспавнил сейчас нпс, хочу сделать его что-то типа Волка из ТЧ в начале игры. При появлении ГГ, нпс махает рукой и говорит "подходи пообщаемся". Заставляем NPC здороваться и прощаться голосом Отредактировать секцию meet в логике: [meet_guide] close_snd_hello = rolan_hello_snd close_snd_bye = rolan_hello_snd_bye abuse = false use = true allow_break = false meet_on_talking = false В файле configs\misc\script_sound_xxx.ltx создать секции Rolan_hello_snd и rolan_hello_snd_bye по аналогии с др.(разобраться легко) [smart_terrains] none = true [logic@widmore_mercenaries1] active = remark1 danger = danger_ignore [danger_ignore] ignore_distance = 5 [remark1] no_move = true anim = hello_wpn <--- Анимация - НПС с оружием в одной руке, машет другой target = story | actor <--- НПС смотрит только на ГГ on_signal = anim_end | remark@wait <--- По окончании проигрывания анимации, нпс переходит на схему remark@wait meet = meet_guide [remark@wait] no_move = true anim = guard <--- Анимация - НПС стоит с оружием в руках target = story | actor [meet_guide] close_snd_hello = widmore_mercenaries_hello <--- Как я понял вызов звука abuse = false use = true allow_break = false meet_on_talking = false В игре, он только машет рукой, на схему remark@wait не переходит и звук не проигрывается. [remark] anim = анимация snd = звук snd_anim_sync = true on_signal = action_end | следующая схема Происходит тоже самое, он машет только рукой, на следующею схему не переходит и звук не проигрывается. Сам звук "widmore_mercenaries_hello" взял из ТЧ. В script_sound.ltx добавил #include "script_sound_escape.ltx" Создал файл "script_sound_escape.ltx в нём прописал [list_script_sound_escape] widmore_mercenaries_hello [widmore_mercenaries_hello] type = npc path = scenario\escape\widmore_mercenaries_hello shuffle = seq idle = 1,1,100 Помогите пожалуйста с этим разобраться. Где я опять накосячил? Работаю на ЗП 1.6.02 Изменено 9 Января 2012 пользователем NaslednikTutti Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 17 Июля 2012 Добрый вечер! Работаю на ЗП. Такой вопрос. Мне нужно сделать так, чтобы при получении инфопоршня, выводилось сообщение на экран. Как вывести сообщение на экран я нашел, но вывести при получении инфопоршня я не смог. Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 19 Июля 2012 Здравствуйте! А можно ли зделать так, чтобы ГГ (на ЗП) при старте игры, был раненым? Ну как нпс'ы раненные валяются, просят аптечку, чтобы так же ГГ лежал.)) Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 19 Июля 2012 (изменено) Вампир35, через health в all.spawn я пробовал)) поставил health = 0.1, при старте игры у гг просто меньше здоровья. А мне нужно так, чтобы ГГ при старте игры именно лежал на полу как раненный нпс. Править следует два параметра: health и upd:health ... важен имменно второй. --/Artos Добавлено через 29 мин.: Даже просто сделать так, чтобы при старте игры, такая скриптовая сцена (или как она там называется=)), ГГ лежит на полу без сознания и потом типо очнулся и встает... Как это реализовать на ЗП. Подскажите пожалуйста. Есть же такое в ТЧ, когда ГГ теряет сознание и падает..потом ролик.. а после он очнулся и встает. Только это нужно на ЗП. Изменено 20 Июля 2012 пользователем Artos Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 3 Августа 2012 Добрый день! Как активировать скрипт через логику нпс в ЗП? Поподробней расскажите пожалуйста. Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 4 Августа 2012 Добрый день! Как заспавнить монстра через скрипт в ЗП? Это не хочет работать: function spawn_snork() alife():create("snork_indoor_normal",vector():set(-94.063316,-16.243137,-42.022018),2014,650) end Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 4 Августа 2012 KD87, вообще мне нужно вызвать эту самую функцию через логику нпс. ins33 мне подсказал так: [logic] active = sr_idle@one [sr_idle@one] on_actor_inside = {+поршень} nil %=имя_скрипта.функция()% Но у меня что-то не получилось ничего. Убежал на ДР. Как буду дома, конечно, перепроверю все еще раз. Написал так, для подстраховки. Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение
NaslednikTutti 1 Опубликовано 5 Августа 2012 Вот мой кусок из логики нпс, как видно при получении поршня {+hunter_talk_6}, проигрывается звук =play_sound(alex_54), далее он ждет 5 сек. и переходит на схему remark@suhoi_alarm_1. [remark@hunter_4] anim = wait on_info = {+hunter_talk_6} %-hunter_talk_6 =play_sound(alex_54)%, %+new_restriktor% on_timer = 5000 | remark@suhoi_alarm_1 meet = no_meet Тут у меня проблемка, за эти 5 секунд, он проигрывает этот звук 2 раза, а то и 3 (т.к. продолжительтность его всего 1 сек.). Как сделать чтобы он проговорил его только один раз, а потом ждал 5 сек., а не повторял его в течении 5 секунд. Делаю на Зов Припяти. Не соответствует правилам. Поделиться этим сообщением Ссылка на сообщение