У грі, напевно, ви зустрічали таке - при отриманні якогось завдання або діалогу з'являються нові НПС або інші ФПС. Приклад у цій статті ми розглядатимемо на Ростку. Отже, нам знадобляться файли info_l07rostok.xml , all.spawn та програма ACDC .
початок
Почнемо! Розпакуємо all.spawn і відкриємо файл alife_l06_rostok.ltx . У ньому знайдемо такі рядки:
[ 3851 ] ; cse_abstract properties section_name = stalker name = bar_freedom_attacker_1 position = -214.942504882813 , -2 .09808349609375e -005 , 164.513900756836 direct0 _ _ _ _ _ ; cse_alife_trader_abstract properties money = 5000 character_profile = bar_Killer_regular ; cse_alife_object properties game_vertex_id = 1335 distance = 6.29999971389771 level_vertex_id = 23441 object_flags = 0xffffffff custom_data = <<END [ spawner ] cond = { + bar_heli_s [ smart_terrains ] bar_freedom_attack = true END ; cse_visual properties visual_name = actors\killer\stalker_ki_mask ; cse_alife_creature_abstract properties g_team = 0 g_squad = 5 g_group = 7 health = 1 dynamic_out_restrictions = dynamic_in_restrictions = upd : health = 1 upd : timestamp = 0 upd : creature_flags = 0 upd : position = -214.942504882813 , -2 .09808349609375e -005 , 164.5139007 0 , 0 , 0 upd : g_team = 0 upd _ _ : g_squad = 5 upd: g_group = 7 ; 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 = 0 , 1 , 2 , 0 , 2 predicate4 = 0 , 1 , 1 , 0 ; cse_ph_skeleton properties upd: start_dialog = ; se_stalker properties </pre> У цій писанині нам потрібне тільки це: <pre> [ spawner ] cond = { + bar_heli_scene_stay_online }
Це перехід НПС онлайн при видачі інфопоршня. Щоб переконатися в цьому, знайдемо його в info_l07rostok.xml . Переконалися? Чудово! Рухаємось далі. Замість знака + можна поставити знак - . Значить, при цьому інфопоршні НПС піде в офлайн.
Можна змінювати ці інфопоршні на будь-які інші, зокрема свої. Тепер поміняємо його наприклад на bar_kruglov_follow_tunnel . В підсумку:
[Spawner] cond = {+bar_kruglov_follow_tunnel}
Цей НПС (або кілька неписів) народжуватимуться, коли ви пройдете через тунель, де найманці-снайпери. Усі інфопоршні брати з файлу, що відповідає локації. Ви можете зробити свій квест та застосувати інфопорші до цієї справи.
PS
Тепер зробимо, щоби все до кінця працювало. Знайдемо смарт_террейн, в якому написано +bar_heli_scene_stay_online . І допишемо туди свій.
[ 3857 ] ; cse_abstract properties section_name = smart_terrain name = bar_ecolog_crush position = -294.061706542969 , 7 .43865966796875e -005 , 140.005218505850 50 , -7 .54995954643789e -010 , 7 .41205367376097e -005 _ _ _ ; cse_alife_object properties game_vertex_id = 1350 distance = 2.79999995231628 level_vertex_id = 100 object_flags = 0xffffffbe custom_data = << END [ smart_terrain ] type = bar_ecolog_crus = { + bar_heli_scene_stay_online } , { + bar_kruglov_follow_tunnel } _ _ _ _ _ _ _ _ END ; cse_shape properties shapes = shape0 shape0: type = sphere shape0: offset = 0 , 0 , 0 shape0: radius = 2.66736793518066 ; cse_alife_space_restrictor properties restrictor_type = 0 ; se_smart_terrain properties
Ось він. От і все!