10:26, 28.12.2024
Новые сообщения · Участники · Правила форума · Поиск · RSS
  • Страница 1 из 1
  • 1
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


 
  • Страница 1 из 1
  • 1
Поиск: