S.T.A.L.K.E.R|Модостроение

Объявление

Здесь может быть ваш баннер. Закажи рекламу. Заработай на сайте
Добавь в закладки
Заработай на сайте
Здесь может быть ваш баннер. Закажи рекламу.
БАННЕР САЙТА
Новички и бывалые найдут здесь себе пристанище


Все писатели могут выложить свой рассказ в этой теме: Проза Хорошее чувство юмора? Прошу, докажите это: Юмор FM

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » S.T.A.L.K.E.R|Модостроение » Уроки по модостроению [ЗП] » По мелочам [Cпавн [Spawn]]


По мелочам [Cпавн [Spawn]]

Сообщений 21 страница 30 из 35

21

Убиваем NPC попавших в зону рестриктора

[logic]
active = sr_idle@1

[sr_idle@1]
on_npc_in_zone  = название_этого_рестриктора | sr_idle@2 %=kill_npc%

[sr_idle@2]
on_npc_in_zone  = название_этого_рестриктора | sr_idle@1 %=kill_npc%

0

22

Заставляем NPC бежать в укрытие от выброса

Стоит чуть-чуть подправить логику, например:

[logic@bazmar_kamp1]
active = animpoint@bazmar_kamp1

[animpoint@bazmar_kamp1]
cover_name = kamp1
on_info = {=surge_started} walker@bazmar_kamp1_surge ;если выброс начался, то идем в укрытие, на точку [walker@bazmar_kamp1_surge].
use_camp = true
meet = meet@bazmar

[walker@bazmar_kamp1_surge]
path_walk = bazmar_surge1_walk
path_look = bazmar_surge1_look
meet = meet@bazmar
def_state_moving = run
use_camp = true
def_state_standing = sit_knee
on_info = {=surge_complete} animpoint@bazmar_kamp1 ;если выброс закончился, то идем обратно в анимпоинт.

[meet@bazmar]
close_anim = nil
close_victim = nil
far_anim = nil
far_victim = nil
close_distance = 0
far_distance = 0
use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
snd_on_use = {!dist_to_actor_le(3)} nil
meet_on_talking = false

0

23

Получаем названия графпоинтов с координатами

Для работы нужен: ACDC COP with split
Конвертируем наш all.spawn батником:

perl acdccop.pl -d all.spawn -split_spawns -graph
pause

Далее, конвертируем получившийся level.spawn батником:

perl acdccop.pl -d level.spawn -w -l -ls
pause

И у нас выведуться все графпоинты. Пример:

[1]
section_name = graph_point
name = start_actor_01
position = -384.276184082031,1.29132080078125,91.8708267211914
direction = 0,0,0

[2]
section_name = graph_point
name = l09_deadcity_graph_point_1
position = -333.990936279297,-1.19963073730469,159.972640991211
direction = 0,0,0

[3]
section_name = graph_point
name = l09_deadcity_graph_point_2
position = -326.427185058594,-4.72068786621094,-4.02680969238281
direction = 0,0,0

[4]
section_name = graph_point
name = l09_deadcity_graph_point_3
position = -321.962768554688,7.70576477050781,67.442985534668
direction = 0,0,0

[5]
section_name = graph_point
name = l09_deadcity_graph_point_4
position = -300.007446289063,-7.8902587890625,222.426391601563
direction = 0,0,0

0

24

Переход схемы логики по прибытию на последнюю точку пути

Прежде всего нужно поставить сигнал на последнюю точку пути:

p12:name = wp012|sig=end_way
p12:position = -156.36016845703,7.499502658844,-206.67156982422
p12:game_vertex_id = 1263
p12:level_vertex_id = 39802

Затем в логике проверять наличие сигнала при получении которого будет произведен переход:

[walker@stalker]
...
on_signal = end_way | remark@stalker
[remark@stalker]

0

25

Алгоритм поиска логики персонажа

Для того чтобы найти индивидуальную логику НПС нужно:
1. По имени НПС определить его идентификатор. Например для Бороды (подробнее урок 002 в КМБ) zat_a2_stalker_barmen
2. Найти его файл логики, он должен содержать строку типа suitable = {=check_npc_name(zat_a2_stalker_barmen), то есть проверку на то, что НПС и есть тот самый Борода.
3. Находим файл zat_a2_stalker_barmen.ltx в папке configs\scripts\zaton
Файлов логики может быть несколько, по числу смартов на которых данный НПС может находиться.

0

26

Отключить блокировку дверей на базах

Например двери на Cкадовск configs\scripts\zaton\zat_a2_ph_ship_door.ltx
в секциях заменить locked = true на locked = false

0

27

Как заставить NPC заговорить первым?

[meet]
use={Условие}self, true

0

28

Источник света

[2584]
; cse_abstract properties
section_name = lights_hanging_lamp
name = lights_white_12m_glass
position = -349.036407470703,6.66451787948608,393.330322265625
direction = 0,0,-1.57079601287842
; cse_alife_object properties
game_vertex_id = 317
distance = 0
level_vertex_id = 1231404
object_flags = 0xffffff3a
custom_data = <<END
[collide]
ignore_static
END
; cse_visual properties
visual_name = dynamics\light\light_white_glass
; cse_ph_skeleton properties
; cse_alife_object_hanging_lamp properties
main_color = 0xffffe3b5
main_brightness = 0.800000011920929
main_range = 12
light_flags = 0xa
lamp_fixed_bones = link
health = 100
main_virtual_size = 0.100000001490116
ambient_radius = 2.5
ambient_power = 0.600000023841858
main_bone = bone_lamp
main_cone_angle = 2.09439492225647
glow_radius = 0.699999988079071
ambient_bone = bone_omni
cse_alife_object_hanging_lamp__unk1_f32 = 1
cse_alife_object_hanging_lamp__unk2_f32 = 1
cse_alife_object_hanging_lamp__unk3_f32 = 1

0

29

NPC в лагере смотрят не в его центр

Нужно указать параметр direction в секции:

direction = a,b,c

Нужно устанавливать значение B - угол в радианах между направлением взгляда и направлением оси координат. Использовать db.actor:direction() - для снятия направления взгляда не корректно, нужно использовать направление камеры: device().cam_dir
Все значения могут находиться в интервале от -3.14 до +3.14

0

30

Секции инструментов в all.spawn

toolkit_1, toolkit_2, toolkit_3

0


Вы здесь » S.T.A.L.K.E.R|Модостроение » Уроки по модостроению [ЗП] » По мелочам [Cпавн [Spawn]]


Создать форум © iboard.ws