Cпавн
|
|
admin | Дата: Среда, 18.04.2012, 21:22 | Сообщение # 1 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Как можно изменить поведение квестовых NPC? Через логику. Каждый боец (однотипная группа бойцов) имеет свою "кастом дату". Именно в ней прописывается логика действий. Собственно - последовательность реакций на условия, определяемые инфопоршнями или прекондишенами. А последовательность реакций - это вызовы функций, собранных в скриптах с префиксом xr_ . Вот простейшая логика перса, которую мы разбирали в школе в соседней теме: [logic] active = move@trader [move@trader] invulnerable = true on_combat = combat meet = meet_sgm [combat] combat_type = camper [meet_sgm] abuse = false use = true allow_break = false meet_on_talking = false Активная секция одна, может воевать как кемпер, говорить при юзе, бессмертен. Всё.
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:23 | Сообщение # 2 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Как сделать так, чтобы NPC сам начинал говорить? В секцию [meet] логики NPC добавляем строчку meet_on_talking = true
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:23 | Сообщение # 3 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Враг не нападает на ГГ (а-ля военные под мостом на Кордоне (ТЧ)) [logic] active = remark [remark] combat_ignore = {=actor_enemy, !hit_npc_from_actor} combat_ignore [combat_ignore]
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:23 | Сообщение # 4 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Уменьшаем количество ворон на локации На примере Юпитера: Заменяем все содержимое файла jup_crow_spawner.ltx на это [logic] active = sr_crow_spawner [sr_crow_spawner] max_crows_on_level = 2 spawn_path = jup_crow_spawn_1 Также можно поудалять все Spawn_path из way_локация.ltx
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:23 | Сообщение # 5 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Заставляем 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 по аналогии с др.(разобраться легко)
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:23 | Сообщение # 6 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Спавн и Респавн NPC Дописываем в нужном нам смарт-террейне респавн-параметры: Например файл gamedata\configs\scripts\zaton\smart\zat_a1.ltx [smart_terrain];zat_a1 squad_id = 54 max_population = 3 respawn_params = respawn@zat_sim_13 arrive_dist = 15 [respawn@zat_sim_13] spawn_bandit@novice spawn_stalker@advanced spawn_monster@master [spawn_bandit@novice] spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_advanced spawn_num = {+zat_a1_game_start} 2, 0 [spawn_stalker@advanced] spawn_squads = stalker_sim_squad_veteran spawn_num = {+zat_a1_game_start} 2, 0 [spawn_monster@master] spawn_squads = simulation_boar, simulation_flesh, simulation_snork spawn_num = {+zat_a1_game_start} 2, 0
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:24 | Сообщение # 7 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Вылет с эксклюзивом на смарте Если спавнил эксклюзива через смарт-террейн, то в логике точки пути надо писать сокращенно Т.е. если в way_локация.ltx вейпоинт называется marsh_base_stalker_trader_walker_1_walk (look), а имя смарт-террейна marsh_base, В логике надо писать path_walk = stalker_trader_walker_1_walk (без имени смарта). Если-же спавнил через All.spawn - тогда полное имя пути нужно.
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:25 | Сообщение # 8 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| NPC ночью спит - Днем бодрствует (кусок логики) [logic] active = walker [walker] path_walk = bar_bar_visitor_dolg_walk path_look = bar_bar_visitor_dolg_look def_state_standing = scaner_stand on_game_timer = 150 | walker@1 meet = meet danger = danger_ignore on_info = {!is_day} walker@sleep_night ;условие -!(отрицание) если день - переход ко сну [walker@sleep_night] ;спать path_walk = bar_bar_visitor_dolg_walk path_look = bar_bar_visitor_dolg_look def_state_standing = sleep on_info = {=is_day} walker ; =(соответствует) если день meet = no_meet ;чтобы не будили
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:25 | Сообщение # 9 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Спавн металлического ящика с предметами [ХХХХ] ; уникальный ID секции ; cse_abstract properties section_name = physic_destroyable_object name = mar_physic_destroyable_object_0016 ;имя должно быть уникальным position = 114.354415893555,2.27533888816834,-151.578521728516 direction = -0.00769999995827675,-0.000303999986499548,-0.0395170003175735 ; cse_alife_object properties game_vertex_id = 0 distance = 0 level_vertex_id = 171487 object_flags = 0xffffff3a custom_data = <<END [logic] active = nil [drop_box] items = medkit,1,bandage,2,ammo_12x70_buck,3,ammo_vog-25,5,wpn_fort,1 END ; cse_visual properties visual_name = dynamics\box\box_metall_01 ; cse_ph_skeleton properties ; cse_alife_object_physic properties physic_type = 0x3 mass = 10 upd:num_items = 0
|
|
| |
admin | Дата: Среда, 18.04.2012, 21:25 | Сообщение # 10 |
Пользователи
Сообщений: 407
Награды: 5
Репутация: 102
Статус:
| Проиграть звук при приближении ГГ к NPC [active logic] .... on_actor_dist_le_nvis = 5| remark@esc_lager_volk1 .... [remark@esc_lager_volk1] anim = hello_wpn snd = esc_wolf_thanks target = story | actor .... configs\misc\script_sound_xxx.ltx [esc_wolf_thanks] type = npc path = scenario\escape\wolf_to_dialog shuffle = seq idle = 1,1,100 в snd пишешь путь к секции звука в script_sound
|
|
| |